linux/drivers/net/wireless/mwifiex/ioctl.h
<<
>>
Prefs
   1/*
   2 * Marvell Wireless LAN device driver: ioctl data structures & APIs
   3 *
   4 * Copyright (C) 2011, Marvell International Ltd.
   5 *
   6 * This software file (the "File") is distributed by Marvell International
   7 * Ltd. under the terms of the GNU General Public License Version 2, June 1991
   8 * (the "License").  You may use, redistribute and/or modify this File in
   9 * accordance with the terms and conditions of the License, a copy of which
  10 * is available by writing to the Free Software Foundation, Inc.,
  11 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or on the
  12 * worldwide web at http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
  13 *
  14 * THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE
  15 * IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE
  16 * ARE EXPRESSLY DISCLAIMED.  The License provides additional details about
  17 * this warranty disclaimer.
  18 */
  19
  20#ifndef _MWIFIEX_IOCTL_H_
  21#define _MWIFIEX_IOCTL_H_
  22
  23#include <net/lib80211.h>
  24
  25enum {
  26        MWIFIEX_SCAN_TYPE_UNCHANGED = 0,
  27        MWIFIEX_SCAN_TYPE_ACTIVE,
  28        MWIFIEX_SCAN_TYPE_PASSIVE
  29};
  30
  31struct mwifiex_user_scan {
  32        u32 scan_cfg_len;
  33        u8 scan_cfg_buf[1];
  34};
  35
  36#define MWIFIEX_PROMISC_MODE            1
  37#define MWIFIEX_MULTICAST_MODE          2
  38#define MWIFIEX_ALL_MULTI_MODE          4
  39#define MWIFIEX_MAX_MULTICAST_LIST_SIZE 32
  40
  41struct mwifiex_multicast_list {
  42        u32 mode;
  43        u32 num_multicast_addr;
  44        u8 mac_list[MWIFIEX_MAX_MULTICAST_LIST_SIZE][ETH_ALEN];
  45};
  46
  47struct mwifiex_chan_freq {
  48        u32 channel;
  49        u32 freq;
  50};
  51
  52struct mwifiex_ssid_bssid {
  53        struct cfg80211_ssid ssid;
  54        u8 bssid[ETH_ALEN];
  55};
  56
  57enum {
  58        BAND_B = 1,
  59        BAND_G = 2,
  60        BAND_A = 4,
  61        BAND_GN = 8,
  62        BAND_AN = 16,
  63        BAND_GAC = 32,
  64        BAND_AAC = 64,
  65};
  66
  67#define MWIFIEX_WPA_PASSHPHRASE_LEN 64
  68struct wpa_param {
  69        u8 pairwise_cipher_wpa;
  70        u8 pairwise_cipher_wpa2;
  71        u8 group_cipher;
  72        u32 length;
  73        u8 passphrase[MWIFIEX_WPA_PASSHPHRASE_LEN];
  74};
  75
  76struct wep_key {
  77        u8 key_index;
  78        u8 is_default;
  79        u16 length;
  80        u8 key[WLAN_KEY_LEN_WEP104];
  81};
  82
  83#define KEY_MGMT_ON_HOST        0x03
  84#define MWIFIEX_AUTH_MODE_AUTO  0xFF
  85#define BAND_CONFIG_BG          0x00
  86#define BAND_CONFIG_A           0x01
  87#define MWIFIEX_SUPPORTED_RATES                 14
  88#define MWIFIEX_SUPPORTED_RATES_EXT             32
  89
  90struct mwifiex_uap_bss_param {
  91        u8 channel;
  92        u8 band_cfg;
  93        u16 rts_threshold;
  94        u16 frag_threshold;
  95        u8 retry_limit;
  96        struct mwifiex_802_11_ssid ssid;
  97        u8 bcast_ssid_ctl;
  98        u8 radio_ctl;
  99        u8 dtim_period;
 100        u16 beacon_period;
 101        u16 auth_mode;
 102        u16 protocol;
 103        u16 key_mgmt;
 104        u16 key_mgmt_operation;
 105        struct wpa_param wpa_cfg;
 106        struct wep_key wep_cfg[NUM_WEP_KEYS];
 107        struct ieee80211_ht_cap ht_cap;
 108        struct ieee80211_vht_cap vht_cap;
 109        u8 rates[MWIFIEX_SUPPORTED_RATES];
 110        u32 sta_ao_timer;
 111        u32 ps_sta_ao_timer;
 112        u8 qos_info;
 113        struct mwifiex_types_wmm_info wmm_info;
 114};
 115
 116enum {
 117        ADHOC_IDLE,
 118        ADHOC_STARTED,
 119        ADHOC_JOINED,
 120        ADHOC_COALESCED
 121};
 122
 123struct mwifiex_ds_get_stats {
 124        u32 mcast_tx_frame;
 125        u32 failed;
 126        u32 retry;
 127        u32 multi_retry;
 128        u32 frame_dup;
 129        u32 rts_success;
 130        u32 rts_failure;
 131        u32 ack_failure;
 132        u32 rx_frag;
 133        u32 mcast_rx_frame;
 134        u32 fcs_error;
 135        u32 tx_frame;
 136        u32 wep_icv_error[4];
 137};
 138
 139#define MWIFIEX_MAX_VER_STR_LEN    128
 140
 141struct mwifiex_ver_ext {
 142        u32 version_str_sel;
 143        char version_str[MWIFIEX_MAX_VER_STR_LEN];
 144};
 145
 146struct mwifiex_bss_info {
 147        u32 bss_mode;
 148        struct cfg80211_ssid ssid;
 149        u32 bss_chan;
 150        u8 country_code[3];
 151        u32 media_connected;
 152        u32 max_power_level;
 153        u32 min_power_level;
 154        u32 adhoc_state;
 155        signed int bcn_nf_last;
 156        u32 wep_status;
 157        u32 is_hs_configured;
 158        u32 is_deep_sleep;
 159        u8 bssid[ETH_ALEN];
 160};
 161
 162#define MAX_NUM_TID     8
 163
 164#define MAX_RX_WINSIZE  64
 165
 166struct mwifiex_ds_rx_reorder_tbl {
 167        u16 tid;
 168        u8 ta[ETH_ALEN];
 169        u32 start_win;
 170        u32 win_size;
 171        u32 buffer[MAX_RX_WINSIZE];
 172};
 173
 174struct mwifiex_ds_tx_ba_stream_tbl {
 175        u16 tid;
 176        u8 ra[ETH_ALEN];
 177};
 178
 179#define DBG_CMD_NUM     5
 180
 181struct mwifiex_debug_info {
 182        u32 int_counter;
 183        u32 packets_out[MAX_NUM_TID];
 184        u32 tx_buf_size;
 185        u32 curr_tx_buf_size;
 186        u32 tx_tbl_num;
 187        struct mwifiex_ds_tx_ba_stream_tbl
 188                tx_tbl[MWIFIEX_MAX_TX_BASTREAM_SUPPORTED];
 189        u32 rx_tbl_num;
 190        struct mwifiex_ds_rx_reorder_tbl rx_tbl
 191                [MWIFIEX_MAX_RX_BASTREAM_SUPPORTED];
 192        u16 ps_mode;
 193        u32 ps_state;
 194        u8 is_deep_sleep;
 195        u8 pm_wakeup_card_req;
 196        u32 pm_wakeup_fw_try;
 197        u8 is_hs_configured;
 198        u8 hs_activated;
 199        u32 num_cmd_host_to_card_failure;
 200        u32 num_cmd_sleep_cfm_host_to_card_failure;
 201        u32 num_tx_host_to_card_failure;
 202        u32 num_event_deauth;
 203        u32 num_event_disassoc;
 204        u32 num_event_link_lost;
 205        u32 num_cmd_deauth;
 206        u32 num_cmd_assoc_success;
 207        u32 num_cmd_assoc_failure;
 208        u32 num_tx_timeout;
 209        u32 num_cmd_timeout;
 210        u16 timeout_cmd_id;
 211        u16 timeout_cmd_act;
 212        u16 last_cmd_id[DBG_CMD_NUM];
 213        u16 last_cmd_act[DBG_CMD_NUM];
 214        u16 last_cmd_index;
 215        u16 last_cmd_resp_id[DBG_CMD_NUM];
 216        u16 last_cmd_resp_index;
 217        u16 last_event[DBG_CMD_NUM];
 218        u16 last_event_index;
 219        u8 data_sent;
 220        u8 cmd_sent;
 221        u8 cmd_resp_received;
 222        u8 event_received;
 223};
 224
 225#define MWIFIEX_KEY_INDEX_UNICAST       0x40000000
 226#define PN_LEN                          16
 227
 228struct mwifiex_ds_encrypt_key {
 229        u32 key_disable;
 230        u32 key_index;
 231        u32 key_len;
 232        u8 key_material[WLAN_MAX_KEY_LEN];
 233        u8 mac_addr[ETH_ALEN];
 234        u32 is_wapi_key;
 235        u8 pn[PN_LEN];          /* packet number */
 236        u8 is_igtk_key;
 237};
 238
 239struct mwifiex_power_cfg {
 240        u32 is_power_auto;
 241        u32 power_level;
 242};
 243
 244struct mwifiex_ds_hs_cfg {
 245        u32 is_invoke_hostcmd;
 246        /*  Bit0: non-unicast data
 247         *  Bit1: unicast data
 248         *  Bit2: mac events
 249         *  Bit3: magic packet
 250         */
 251        u32 conditions;
 252        u32 gpio;
 253        u32 gap;
 254};
 255
 256#define DEEP_SLEEP_ON  1
 257#define DEEP_SLEEP_OFF 0
 258#define DEEP_SLEEP_IDLE_TIME    100
 259#define PS_MODE_AUTO            1
 260
 261struct mwifiex_ds_auto_ds {
 262        u16 auto_ds;
 263        u16 idle_time;
 264};
 265
 266struct mwifiex_ds_pm_cfg {
 267        union {
 268                u32 ps_mode;
 269                struct mwifiex_ds_hs_cfg hs_cfg;
 270                struct mwifiex_ds_auto_ds auto_deep_sleep;
 271                u32 sleep_period;
 272        } param;
 273};
 274
 275struct mwifiex_11ac_vht_cfg {
 276        u8 band_config;
 277        u8 misc_config;
 278        u32 cap_info;
 279        u32 mcs_tx_set;
 280        u32 mcs_rx_set;
 281};
 282
 283struct mwifiex_ds_11n_tx_cfg {
 284        u16 tx_htcap;
 285        u16 tx_htinfo;
 286        u16 misc_config; /* Needed for 802.11AC cards only */
 287};
 288
 289struct mwifiex_ds_11n_amsdu_aggr_ctrl {
 290        u16 enable;
 291        u16 curr_buf_size;
 292};
 293
 294struct mwifiex_ds_ant_cfg {
 295        u32 tx_ant;
 296        u32 rx_ant;
 297};
 298
 299#define MWIFIEX_NUM_OF_CMD_BUFFER       20
 300#define MWIFIEX_SIZE_OF_CMD_BUFFER      2048
 301
 302enum {
 303        MWIFIEX_IE_TYPE_GEN_IE = 0,
 304        MWIFIEX_IE_TYPE_ARP_FILTER,
 305};
 306
 307enum {
 308        MWIFIEX_REG_MAC = 1,
 309        MWIFIEX_REG_BBP,
 310        MWIFIEX_REG_RF,
 311        MWIFIEX_REG_PMIC,
 312        MWIFIEX_REG_CAU,
 313};
 314
 315struct mwifiex_ds_reg_rw {
 316        __le32 type;
 317        __le32 offset;
 318        __le32 value;
 319};
 320
 321#define MAX_EEPROM_DATA 256
 322
 323struct mwifiex_ds_read_eeprom {
 324        __le16 offset;
 325        __le16 byte_count;
 326        u8 value[MAX_EEPROM_DATA];
 327};
 328
 329#define IEEE_MAX_IE_SIZE                256
 330
 331#define MWIFIEX_IE_HDR_SIZE     (sizeof(struct mwifiex_ie) - IEEE_MAX_IE_SIZE)
 332
 333struct mwifiex_ds_misc_gen_ie {
 334        u32 type;
 335        u32 len;
 336        u8 ie_data[IEEE_MAX_IE_SIZE];
 337};
 338
 339struct mwifiex_ds_misc_cmd {
 340        u32 len;
 341        u8 cmd[MWIFIEX_SIZE_OF_CMD_BUFFER];
 342};
 343
 344#define BITMASK_BCN_RSSI_LOW    BIT(0)
 345#define BITMASK_BCN_RSSI_HIGH   BIT(4)
 346
 347enum subsc_evt_rssi_state {
 348        EVENT_HANDLED,
 349        RSSI_LOW_RECVD,
 350        RSSI_HIGH_RECVD
 351};
 352
 353struct subsc_evt_cfg {
 354        u8 abs_value;
 355        u8 evt_freq;
 356};
 357
 358struct mwifiex_ds_misc_subsc_evt {
 359        u16 action;
 360        u16 events;
 361        struct subsc_evt_cfg bcn_l_rssi_cfg;
 362        struct subsc_evt_cfg bcn_h_rssi_cfg;
 363};
 364
 365#define MAX_BYTESEQ             6       /* non-adjustable */
 366#define MWIFIEX_MAX_FILTERS     10
 367
 368struct mwifiex_mef_filter {
 369        u16 repeat;
 370        u16 offset;
 371        s8 byte_seq[MAX_BYTESEQ + 1];
 372        u8 filt_type;
 373        u8 filt_action;
 374};
 375
 376struct mwifiex_mef_entry {
 377        u8 mode;
 378        u8 action;
 379        struct mwifiex_mef_filter filter[MWIFIEX_MAX_FILTERS];
 380};
 381
 382struct mwifiex_ds_mef_cfg {
 383        u32 criteria;
 384        u16 num_entries;
 385        struct mwifiex_mef_entry *mef_entry;
 386};
 387
 388#define MWIFIEX_MAX_VSIE_LEN       (256)
 389#define MWIFIEX_MAX_VSIE_NUM       (8)
 390#define MWIFIEX_VSIE_MASK_CLEAR    0x00
 391#define MWIFIEX_VSIE_MASK_SCAN     0x01
 392#define MWIFIEX_VSIE_MASK_ASSOC    0x02
 393#define MWIFIEX_VSIE_MASK_ADHOC    0x04
 394
 395enum {
 396        MWIFIEX_FUNC_INIT = 1,
 397        MWIFIEX_FUNC_SHUTDOWN,
 398};
 399
 400#endif /* !_MWIFIEX_IOCTL_H_ */
 401