fw.h revision fd2e401a35500c9af63dc7ffbc545d2e3c478702
1/* 2 * Marvell Wireless LAN device driver: Firmware specific macros & structures 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_FW_H_ 21#define _MWIFIEX_FW_H_ 22 23#include <linux/if_ether.h> 24 25 26#define INTF_HEADER_LEN 4 27 28struct rfc_1042_hdr { 29 u8 llc_dsap; 30 u8 llc_ssap; 31 u8 llc_ctrl; 32 u8 snap_oui[3]; 33 u16 snap_type; 34}; 35 36struct rx_packet_hdr { 37 struct ethhdr eth803_hdr; 38 struct rfc_1042_hdr rfc1042_hdr; 39}; 40 41struct tx_packet_hdr { 42 struct ethhdr eth803_hdr; 43 struct rfc_1042_hdr rfc1042_hdr; 44}; 45 46#define B_SUPPORTED_RATES 5 47#define G_SUPPORTED_RATES 9 48#define BG_SUPPORTED_RATES 13 49#define A_SUPPORTED_RATES 9 50#define HOSTCMD_SUPPORTED_RATES 14 51#define N_SUPPORTED_RATES 3 52#define ALL_802_11_BANDS (BAND_A | BAND_B | BAND_G | BAND_GN) 53 54#define FW_MULTI_BANDS_SUPPORT (BIT(8) | BIT(9) | BIT(10) | BIT(11)) 55#define IS_SUPPORT_MULTI_BANDS(adapter) \ 56 (adapter->fw_cap_info & FW_MULTI_BANDS_SUPPORT) 57#define GET_FW_DEFAULT_BANDS(adapter) \ 58 ((adapter->fw_cap_info >> 8) & ALL_802_11_BANDS) 59 60extern u8 supported_rates_b[B_SUPPORTED_RATES]; 61extern u8 supported_rates_g[G_SUPPORTED_RATES]; 62extern u8 supported_rates_bg[BG_SUPPORTED_RATES]; 63extern u8 supported_rates_a[A_SUPPORTED_RATES]; 64extern u8 supported_rates_n[N_SUPPORTED_RATES]; 65 66#define HostCmd_WEP_KEY_INDEX_MASK 0x3fff 67 68#define KEY_INFO_ENABLED 0x01 69enum KEY_TYPE_ID { 70 KEY_TYPE_ID_WEP = 0, 71 KEY_TYPE_ID_TKIP, 72 KEY_TYPE_ID_AES, 73 KEY_TYPE_ID_WAPI, 74}; 75 76enum KEY_INFO_WEP { 77 KEY_INFO_WEP_MCAST = 0x01, 78 KEY_INFO_WEP_UNICAST = 0x02, 79 KEY_INFO_WEP_ENABLED = 0x04 80}; 81 82enum KEY_INFO_TKIP { 83 KEY_INFO_TKIP_MCAST = 0x01, 84 KEY_INFO_TKIP_UNICAST = 0x02, 85 KEY_INFO_TKIP_ENABLED = 0x04 86}; 87 88enum KEY_INFO_AES { 89 KEY_INFO_AES_MCAST = 0x01, 90 KEY_INFO_AES_UNICAST = 0x02, 91 KEY_INFO_AES_ENABLED = 0x04 92}; 93 94#define WAPI_KEY_LEN 50 95 96enum KEY_INFO_WAPI { 97 KEY_INFO_WAPI_MCAST = 0x01, 98 KEY_INFO_WAPI_UNICAST = 0x02, 99 KEY_INFO_WAPI_ENABLED = 0x04 100}; 101 102#define MAX_POLL_TRIES 100 103 104#define MAX_MULTI_INTERFACE_POLL_TRIES 1000 105 106#define MAX_FIRMWARE_POLL_TRIES 100 107 108#define FIRMWARE_READY 0xfedc 109 110#define FIRMWARE_TRANSFER_NBLOCK 2 111 112enum MWIFIEX_802_11_PRIVACY_FILTER { 113 MWIFIEX_802_11_PRIV_FILTER_ACCEPT_ALL, 114 MWIFIEX_802_11_PRIV_FILTER_8021X_WEP 115}; 116 117enum MWIFIEX_802_11_WEP_STATUS { 118 MWIFIEX_802_11_WEP_ENABLED, 119 MWIFIEX_802_11_WEP_DISABLED, 120}; 121 122#define CAL_SNR(RSSI, NF) ((s16)((s16)(RSSI)-(s16)(NF))) 123 124#define PROPRIETARY_TLV_BASE_ID 0x0100 125#define TLV_TYPE_KEY_MATERIAL (PROPRIETARY_TLV_BASE_ID + 0) 126#define TLV_TYPE_CHANLIST (PROPRIETARY_TLV_BASE_ID + 1) 127#define TLV_TYPE_NUMPROBES (PROPRIETARY_TLV_BASE_ID + 2) 128#define TLV_TYPE_RSSI_LOW (PROPRIETARY_TLV_BASE_ID + 4) 129#define TLV_TYPE_SNR_LOW (PROPRIETARY_TLV_BASE_ID + 5) 130#define TLV_TYPE_FAILCOUNT (PROPRIETARY_TLV_BASE_ID + 6) 131#define TLV_TYPE_BCNMISS (PROPRIETARY_TLV_BASE_ID + 7) 132#define TLV_TYPE_LEDBEHAVIOR (PROPRIETARY_TLV_BASE_ID + 9) 133#define TLV_TYPE_PASSTHROUGH (PROPRIETARY_TLV_BASE_ID + 10) 134#define TLV_TYPE_POWER_TBL_2_4GHZ (PROPRIETARY_TLV_BASE_ID + 12) 135#define TLV_TYPE_POWER_TBL_5GHZ (PROPRIETARY_TLV_BASE_ID + 13) 136#define TLV_TYPE_WMMQSTATUS (PROPRIETARY_TLV_BASE_ID + 16) 137#define TLV_TYPE_WILDCARDSSID (PROPRIETARY_TLV_BASE_ID + 18) 138#define TLV_TYPE_TSFTIMESTAMP (PROPRIETARY_TLV_BASE_ID + 19) 139#define TLV_TYPE_RSSI_HIGH (PROPRIETARY_TLV_BASE_ID + 22) 140#define TLV_TYPE_SNR_HIGH (PROPRIETARY_TLV_BASE_ID + 23) 141 142#define TLV_TYPE_STARTBGSCANLATER (PROPRIETARY_TLV_BASE_ID + 30) 143#define TLV_TYPE_AUTH_TYPE (PROPRIETARY_TLV_BASE_ID + 31) 144#define TLV_TYPE_LINK_QUALITY (PROPRIETARY_TLV_BASE_ID + 36) 145#define TLV_TYPE_RSSI_LOW_DATA (PROPRIETARY_TLV_BASE_ID + 38) 146#define TLV_TYPE_SNR_LOW_DATA (PROPRIETARY_TLV_BASE_ID + 39) 147#define TLV_TYPE_RSSI_HIGH_DATA (PROPRIETARY_TLV_BASE_ID + 40) 148#define TLV_TYPE_SNR_HIGH_DATA (PROPRIETARY_TLV_BASE_ID + 41) 149 150#define TLV_TYPE_CHANNELBANDLIST (PROPRIETARY_TLV_BASE_ID + 42) 151#define TLV_TYPE_WAPI_IE (PROPRIETARY_TLV_BASE_ID + 94) 152#define TLV_TYPE_BSSID (PROPRIETARY_TLV_BASE_ID + 35) 153 154#define MWIFIEX_TX_DATA_BUF_SIZE_2K 2048 155 156#define TLV_TYPE_HT_CAP (PROPRIETARY_TLV_BASE_ID + 74) 157#define TLV_TYPE_HT_INFO (PROPRIETARY_TLV_BASE_ID + 75) 158#define TLV_SECONDARY_CHANNEL_OFFSET (PROPRIETARY_TLV_BASE_ID + 76) 159#define TLV_TYPE_2040BSS_COEXISTENCE (PROPRIETARY_TLV_BASE_ID + 77) 160#define TLV_TYPE_OVERLAP_BSS_SCAN_PARAM (PROPRIETARY_TLV_BASE_ID + 78) 161#define TLV_TYPE_EXTCAP (PROPRIETARY_TLV_BASE_ID + 79) 162#define TLV_TYPE_HT_OPERATIONAL_MCS_SET (PROPRIETARY_TLV_BASE_ID + 80) 163 164#define ADDBA_TID_MASK (BIT(2) | BIT(3) | BIT(4) | BIT(5)) 165#define DELBA_TID_MASK (BIT(12) | BIT(13) | BIT(14) | BIT(15)) 166#define SSN_MASK 0xfff0 167 168#define BA_RESULT_SUCCESS 0x0 169#define BA_RESULT_FAILURE 0x1 170#define BA_RESULT_TIMEOUT 0x2 171#define BA_RESULT_DATA_INVALID 0x3 172 173#define IS_BASTREAM_SETUP(ptr) (ptr->ba_status) 174 175#define BA_STREAM_NOT_ALLOWED 0xff 176 177#define IS_11N_ENABLED(priv) ((priv->adapter->config_bands & BAND_GN || \ 178 priv->adapter->config_bands & BAND_AN) \ 179 && priv->curr_bss_params.bss_descriptor.bcn_ht_cap) 180#define INITIATOR_BIT(DelBAParamSet) (((DelBAParamSet) &\ 181 BIT(DELBA_INITIATOR_POS)) >> DELBA_INITIATOR_POS) 182 183#define MWIFIEX_TX_DATA_BUF_SIZE_4K 4096 184#define MWIFIEX_TX_DATA_BUF_SIZE_8K 8192 185#define NON_GREENFIELD_STAS 0x04 186 187#define ISSUPP_11NENABLED(FwCapInfo) (FwCapInfo & BIT(11)) 188 189/* dev_cap bitmap 190 * BIT 191 * 0-16 reserved 192 * 17 IEEE80211_HT_CAP_SUP_WIDTH_20_40 193 * 18-22 reserved 194 * 23 IEEE80211_HT_CAP_SGI_20 195 * 24 IEEE80211_HT_CAP_SGI_40 196 * 25 IEEE80211_HT_CAP_TX_STBC 197 * 26 IEEE80211_HT_CAP_RX_STBC 198 * 27-28 reserved 199 * 29 IEEE80211_HT_CAP_GRN_FLD 200 * 30-31 reserved 201 */ 202#define ISSUPP_CHANWIDTH40(Dot11nDevCap) (Dot11nDevCap & BIT(17)) 203#define ISSUPP_SHORTGI20(Dot11nDevCap) (Dot11nDevCap & BIT(23)) 204#define ISSUPP_SHORTGI40(Dot11nDevCap) (Dot11nDevCap & BIT(24)) 205#define ISSUPP_TXSTBC(Dot11nDevCap) (Dot11nDevCap & BIT(25)) 206#define ISSUPP_RXSTBC(Dot11nDevCap) (Dot11nDevCap & BIT(26)) 207#define ISSUPP_GREENFIELD(Dot11nDevCap) (Dot11nDevCap & BIT(29)) 208 209#define GET_RXMCSSUPP(DevMCSSupported) (DevMCSSupported & 0x0f) 210#define RESETHT_EXTCAP_RDG(HTExtCap) (HTExtCap &= ~BIT(11)) 211#define SETHT_MCS32(x) (x[4] |= 1) 212 213#define SET_SECONDARYCHAN(RadioType, SECCHAN) (RadioType |= (SECCHAN << 4)) 214 215#define LLC_SNAP_LEN 8 216 217#define TLV_TYPE_RATE_DROP_PATTERN (PROPRIETARY_TLV_BASE_ID + 81) 218#define TLV_TYPE_RATE_DROP_CONTROL (PROPRIETARY_TLV_BASE_ID + 82) 219#define TLV_TYPE_RATE_SCOPE (PROPRIETARY_TLV_BASE_ID + 83) 220 221#define TLV_TYPE_POWER_GROUP (PROPRIETARY_TLV_BASE_ID + 84) 222 223#define MOD_CLASS_HR_DSSS 0x03 224#define MOD_CLASS_OFDM 0x07 225#define MOD_CLASS_HT 0x08 226#define HT_BW_20 0 227#define HT_BW_40 1 228 229#define HostCmd_CMD_GET_HW_SPEC 0x0003 230#define HostCmd_CMD_802_11_SCAN 0x0006 231#define HostCmd_CMD_802_11_GET_LOG 0x000b 232#define HostCmd_CMD_MAC_MULTICAST_ADR 0x0010 233#define HostCmd_CMD_802_11_EEPROM_ACCESS 0x0059 234#define HostCmd_CMD_802_11_ASSOCIATE 0x0012 235#define HostCmd_CMD_802_11_SNMP_MIB 0x0016 236#define HostCmd_CMD_MAC_REG_ACCESS 0x0019 237#define HostCmd_CMD_BBP_REG_ACCESS 0x001a 238#define HostCmd_CMD_RF_REG_ACCESS 0x001b 239#define HostCmd_CMD_PMIC_REG_ACCESS 0x00ad 240#define HostCmd_CMD_802_11_RF_CHANNEL 0x001d 241#define HostCmd_CMD_802_11_DEAUTHENTICATE 0x0024 242#define HostCmd_CMD_MAC_CONTROL 0x0028 243#define HostCmd_CMD_802_11_AD_HOC_START 0x002b 244#define HostCmd_CMD_802_11_AD_HOC_JOIN 0x002c 245#define HostCmd_CMD_802_11_AD_HOC_STOP 0x0040 246#define HostCmd_CMD_802_11_MAC_ADDRESS 0x004D 247#define HostCmd_CMD_802_11D_DOMAIN_INFO 0x005b 248#define HostCmd_CMD_802_11_KEY_MATERIAL 0x005e 249#define HostCmd_CMD_802_11_BG_SCAN_QUERY 0x006c 250#define HostCmd_CMD_WMM_GET_STATUS 0x0071 251#define HostCmd_CMD_802_11_TX_RATE_QUERY 0x007f 252#define HostCmd_CMD_802_11_IBSS_COALESCING_STATUS 0x0083 253#define HostCmd_CMD_VERSION_EXT 0x0097 254#define HostCmd_CMD_RSSI_INFO 0x00a4 255#define HostCmd_CMD_FUNC_INIT 0x00a9 256#define HostCmd_CMD_FUNC_SHUTDOWN 0x00aa 257#define HostCmd_CMD_11N_CFG 0x00cd 258#define HostCmd_CMD_11N_ADDBA_REQ 0x00ce 259#define HostCmd_CMD_11N_ADDBA_RSP 0x00cf 260#define HostCmd_CMD_11N_DELBA 0x00d0 261#define HostCmd_CMD_RECONFIGURE_TX_BUFF 0x00d9 262#define HostCmd_CMD_AMSDU_AGGR_CTRL 0x00df 263#define HostCmd_CMD_TXPWR_CFG 0x00d1 264#define HostCmd_CMD_TX_RATE_CFG 0x00d6 265#define HostCmd_CMD_802_11_PS_MODE_ENH 0x00e4 266#define HostCmd_CMD_802_11_HS_CFG_ENH 0x00e5 267#define HostCmd_CMD_CAU_REG_ACCESS 0x00ed 268#define HostCmd_CMD_SET_BSS_MODE 0x00f7 269 270 271enum ENH_PS_MODES { 272 EN_PS = 1, 273 DIS_PS = 2, 274 EN_AUTO_DS = 3, 275 DIS_AUTO_DS = 4, 276 SLEEP_CONFIRM = 5, 277 GET_PS = 0, 278 EN_AUTO_PS = 0xff, 279 DIS_AUTO_PS = 0xfe, 280}; 281 282#define HostCmd_RET_BIT 0x8000 283#define HostCmd_ACT_GEN_GET 0x0000 284#define HostCmd_ACT_GEN_SET 0x0001 285#define HostCmd_ACT_GEN_REMOVE 0x0004 286#define HostCmd_ACT_SET_BOTH 0x0003 287#define HostCmd_ACT_GET_BOTH 0x000c 288#define HostCmd_RESULT_OK 0x0000 289#define HostCmd_RESULT_ERROR 0x0001 290#define HostCmd_RESULT_NOT_SUPPORT 0x0002 291#define HostCmd_RESULT_PENDING 0x0003 292#define HostCmd_RESULT_BUSY 0x0004 293#define HostCmd_RESULT_PARTIAL_DATA 0x0005 294 295#define HostCmd_ACT_MAC_RX_ON 0x0001 296#define HostCmd_ACT_MAC_TX_ON 0x0002 297#define HostCmd_ACT_MAC_WEP_ENABLE 0x0008 298#define HostCmd_ACT_MAC_ETHERNETII_ENABLE 0x0010 299#define HostCmd_ACT_MAC_PROMISCUOUS_ENABLE 0x0080 300#define HostCmd_ACT_MAC_ALL_MULTICAST_ENABLE 0x0100 301#define HostCmd_ACT_MAC_RTS_CTS_ENABLE 0x0200 302#define HostCmd_ACT_MAC_STRICT_PROTECTION_ENABLE 0x0400 303#define HostCmd_ACT_MAC_ADHOC_G_PROTECTION_ON 0x2000 304 305#define HostCmd_BSS_MODE_BSS 0x0001 306#define HostCmd_BSS_MODE_IBSS 0x0002 307#define HostCmd_BSS_MODE_ANY 0x0003 308 309#define HostCmd_SCAN_RADIO_TYPE_BG 0 310#define HostCmd_SCAN_RADIO_TYPE_A 1 311 312#define HOST_SLEEP_CFG_CANCEL 0xffffffff 313#define HOST_SLEEP_CFG_COND_DEF 0x0000000f 314#define HOST_SLEEP_CFG_GPIO_DEF 0xff 315#define HOST_SLEEP_CFG_GAP_DEF 0 316 317#define CMD_F_HOSTCMD (1 << 0) 318#define CMD_F_CANCELED (1 << 1) 319 320#define HostCmd_CMD_ID_MASK 0x0fff 321 322#define HostCmd_SEQ_NUM_MASK 0x00ff 323 324#define HostCmd_BSS_NUM_MASK 0x0f00 325 326#define HostCmd_BSS_TYPE_MASK 0xf000 327 328#define HostCmd_SET_SEQ_NO_BSS_INFO(seq, num, type) { \ 329 (((seq) & 0x00ff) | \ 330 (((num) & 0x000f) << 8)) | \ 331 (((type) & 0x000f) << 12); } 332 333#define HostCmd_GET_SEQ_NO(seq) \ 334 ((seq) & HostCmd_SEQ_NUM_MASK) 335 336#define HostCmd_GET_BSS_NO(seq) \ 337 (((seq) & HostCmd_BSS_NUM_MASK) >> 8) 338 339#define HostCmd_GET_BSS_TYPE(seq) \ 340 (((seq) & HostCmd_BSS_TYPE_MASK) >> 12) 341 342#define EVENT_DUMMY_HOST_WAKEUP_SIGNAL 0x00000001 343#define EVENT_LINK_LOST 0x00000003 344#define EVENT_LINK_SENSED 0x00000004 345#define EVENT_MIB_CHANGED 0x00000006 346#define EVENT_INIT_DONE 0x00000007 347#define EVENT_DEAUTHENTICATED 0x00000008 348#define EVENT_DISASSOCIATED 0x00000009 349#define EVENT_PS_AWAKE 0x0000000a 350#define EVENT_PS_SLEEP 0x0000000b 351#define EVENT_MIC_ERR_MULTICAST 0x0000000d 352#define EVENT_MIC_ERR_UNICAST 0x0000000e 353#define EVENT_DEEP_SLEEP_AWAKE 0x00000010 354#define EVENT_ADHOC_BCN_LOST 0x00000011 355 356#define EVENT_WMM_STATUS_CHANGE 0x00000017 357#define EVENT_BG_SCAN_REPORT 0x00000018 358#define EVENT_RSSI_LOW 0x00000019 359#define EVENT_SNR_LOW 0x0000001a 360#define EVENT_MAX_FAIL 0x0000001b 361#define EVENT_RSSI_HIGH 0x0000001c 362#define EVENT_SNR_HIGH 0x0000001d 363#define EVENT_IBSS_COALESCED 0x0000001e 364#define EVENT_DATA_RSSI_LOW 0x00000024 365#define EVENT_DATA_SNR_LOW 0x00000025 366#define EVENT_DATA_RSSI_HIGH 0x00000026 367#define EVENT_DATA_SNR_HIGH 0x00000027 368#define EVENT_LINK_QUALITY 0x00000028 369#define EVENT_PORT_RELEASE 0x0000002b 370#define EVENT_PRE_BEACON_LOST 0x00000031 371#define EVENT_ADDBA 0x00000033 372#define EVENT_DELBA 0x00000034 373#define EVENT_BA_STREAM_TIEMOUT 0x00000037 374#define EVENT_AMSDU_AGGR_CTRL 0x00000042 375#define EVENT_WEP_ICV_ERR 0x00000046 376#define EVENT_HS_ACT_REQ 0x00000047 377#define EVENT_BW_CHANGE 0x00000048 378 379#define EVENT_HOSTWAKE_STAIE 0x0000004d 380 381#define EVENT_ID_MASK 0xffff 382#define BSS_NUM_MASK 0xf 383 384#define EVENT_GET_BSS_NUM(event_cause) \ 385 (((event_cause) >> 16) & BSS_NUM_MASK) 386 387#define EVENT_GET_BSS_TYPE(event_cause) \ 388 (((event_cause) >> 24) & 0x00ff) 389 390struct mwifiex_event_wep_icv_err { 391 u16 reason_code; 392 u8 src_mac_addr[ETH_ALEN]; 393 u8 wep_key_index; 394 u8 wep_key_length; 395 u8 key[WLAN_KEY_LEN_WEP104]; 396}; 397 398struct mwifiex_802_11_fixed_ies { 399 u8 time_stamp[8]; 400 __le16 beacon_interval; 401 __le16 capabilities; 402}; 403 404struct mwifiex_ie_types_header { 405 __le16 type; 406 __le16 len; 407} __packed; 408 409struct mwifiex_ie_types_data { 410 struct mwifiex_ie_types_header header; 411 u8 data[1]; 412} __packed; 413 414#define MWIFIEX_TxPD_POWER_MGMT_NULL_PACKET 0x01 415#define MWIFIEX_TxPD_POWER_MGMT_LAST_PACKET 0x08 416 417struct txpd { 418 u8 bss_type; 419 u8 bss_num; 420 __le16 tx_pkt_length; 421 __le16 tx_pkt_offset; 422 __le16 tx_pkt_type; 423 __le32 tx_control; 424 u8 priority; 425 u8 flags; 426 u8 pkt_delay_2ms; 427 u8 reserved1; 428} __packed; 429 430struct rxpd { 431 u8 bss_type; 432 u8 bss_num; 433 u16 rx_pkt_length; 434 u16 rx_pkt_offset; 435 u16 rx_pkt_type; 436 u16 seq_num; 437 u8 priority; 438 u8 rx_rate; 439 s8 snr; 440 s8 nf; 441 /* Ht Info [Bit 0] RxRate format: LG=0, HT=1 442 * [Bit 1] HT Bandwidth: BW20 = 0, BW40 = 1 443 * [Bit 2] HT Guard Interval: LGI = 0, SGI = 1 */ 444 u8 ht_info; 445 u8 reserved; 446} __packed; 447 448enum mwifiex_chan_scan_mode_bitmasks { 449 MWIFIEX_PASSIVE_SCAN = BIT(0), 450 MWIFIEX_DISABLE_CHAN_FILT = BIT(1), 451}; 452 453#define SECOND_CHANNEL_BELOW 0x30 454#define SECOND_CHANNEL_ABOVE 0x10 455struct mwifiex_chan_scan_param_set { 456 u8 radio_type; 457 u8 chan_number; 458 u8 chan_scan_mode_bitmap; 459 __le16 min_scan_time; 460 __le16 max_scan_time; 461} __packed; 462 463struct mwifiex_ie_types_chan_list_param_set { 464 struct mwifiex_ie_types_header header; 465 struct mwifiex_chan_scan_param_set chan_scan_param[1]; 466} __packed; 467 468struct chan_band_param_set { 469 u8 radio_type; 470 u8 chan_number; 471}; 472 473struct mwifiex_ie_types_chan_band_list_param_set { 474 struct mwifiex_ie_types_header header; 475 struct chan_band_param_set chan_band_param[1]; 476} __packed; 477 478struct mwifiex_ie_types_rates_param_set { 479 struct mwifiex_ie_types_header header; 480 u8 rates[1]; 481} __packed; 482 483struct mwifiex_ie_types_ssid_param_set { 484 struct mwifiex_ie_types_header header; 485 u8 ssid[1]; 486} __packed; 487 488struct mwifiex_ie_types_num_probes { 489 struct mwifiex_ie_types_header header; 490 __le16 num_probes; 491} __packed; 492 493struct mwifiex_ie_types_wildcard_ssid_params { 494 struct mwifiex_ie_types_header header; 495 u8 max_ssid_length; 496 u8 ssid[1]; 497} __packed; 498 499#define TSF_DATA_SIZE 8 500struct mwifiex_ie_types_tsf_timestamp { 501 struct mwifiex_ie_types_header header; 502 u8 tsf_data[1]; 503} __packed; 504 505struct mwifiex_cf_param_set { 506 u8 cfp_cnt; 507 u8 cfp_period; 508 u16 cfp_max_duration; 509 u16 cfp_duration_remaining; 510} __packed; 511 512struct mwifiex_ibss_param_set { 513 u16 atim_window; 514} __packed; 515 516struct mwifiex_ie_types_ss_param_set { 517 struct mwifiex_ie_types_header header; 518 union { 519 struct mwifiex_cf_param_set cf_param_set[1]; 520 struct mwifiex_ibss_param_set ibss_param_set[1]; 521 } cf_ibss; 522} __packed; 523 524struct mwifiex_fh_param_set { 525 u16 dwell_time; 526 u8 hop_set; 527 u8 hop_pattern; 528 u8 hop_index; 529} __packed; 530 531struct mwifiex_ds_param_set { 532 u8 current_chan; 533} __packed; 534 535struct mwifiex_ie_types_phy_param_set { 536 struct mwifiex_ie_types_header header; 537 union { 538 struct mwifiex_fh_param_set fh_param_set[1]; 539 struct mwifiex_ds_param_set ds_param_set[1]; 540 } fh_ds; 541} __packed; 542 543struct mwifiex_ie_types_auth_type { 544 struct mwifiex_ie_types_header header; 545 __le16 auth_type; 546} __packed; 547 548struct mwifiex_ie_types_vendor_param_set { 549 struct mwifiex_ie_types_header header; 550 u8 ie[MWIFIEX_MAX_VSIE_LEN]; 551}; 552 553struct mwifiex_ie_types_rsn_param_set { 554 struct mwifiex_ie_types_header header; 555 u8 rsn_ie[1]; 556} __packed; 557 558#define KEYPARAMSET_FIXED_LEN 6 559 560struct mwifiex_ie_type_key_param_set { 561 __le16 type; 562 __le16 length; 563 __le16 key_type_id; 564 __le16 key_info; 565 __le16 key_len; 566 u8 key[50]; 567} __packed; 568 569struct host_cmd_ds_802_11_key_material { 570 __le16 action; 571 struct mwifiex_ie_type_key_param_set key_param_set; 572} __packed; 573 574struct host_cmd_ds_gen { 575 u16 command; 576 u16 size; 577 u16 seq_num; 578 u16 result; 579}; 580 581#define S_DS_GEN sizeof(struct host_cmd_ds_gen) 582 583enum sleep_resp_ctrl { 584 RESP_NOT_NEEDED = 0, 585 RESP_NEEDED, 586}; 587 588struct mwifiex_ps_param { 589 __le16 null_pkt_interval; 590 __le16 multiple_dtims; 591 __le16 bcn_miss_timeout; 592 __le16 local_listen_interval; 593 __le16 adhoc_wake_period; 594 __le16 mode; 595 __le16 delay_to_ps; 596}; 597 598struct mwifiex_auto_ds_param { 599 __le16 deep_sleep_timeout; 600}; 601 602struct sleep_confirm_param { 603 __le16 resp_ctrl; 604}; 605 606#define BITMAP_AUTO_DS 0x01 607#define BITMAP_STA_PS 0x10 608#define BITMAP_UAP_INACT_PS 0x100 609#define BITMAP_UAP_DTIM_PS 0x200 610struct auto_ps_param { 611 __le16 ps_bitmap; 612 /* auto deep sleep parameter, 613 * sta power save parameter 614 * uap inactivity parameter 615 * uap DTIM parameter */ 616}; 617 618#define AUTO_PS_FIX_SIZE 4 619 620#define TLV_TYPE_AUTO_DS_PARAM (PROPRIETARY_TLV_BASE_ID + 113) 621#define TLV_TYPE_PS_PARAM (PROPRIETARY_TLV_BASE_ID + 114) 622 623struct mwifiex_ie_types_auto_ds_param { 624 struct mwifiex_ie_types_header header; 625 struct mwifiex_auto_ds_param param; 626} __packed; 627 628struct mwifiex_ie_types_ps_param { 629 struct mwifiex_ie_types_header header; 630 struct mwifiex_ps_param param; 631} __packed; 632 633struct host_cmd_ds_802_11_ps_mode_enh { 634 __le16 action; 635 636 union { 637 struct mwifiex_ps_param opt_ps; 638 struct mwifiex_auto_ds_param auto_ds; 639 struct sleep_confirm_param sleep_cfm; 640 __le16 ps_bitmap; 641 struct auto_ps_param auto_ps; 642 } params; 643} __packed; 644 645struct host_cmd_ds_get_hw_spec { 646 __le16 hw_if_version; 647 __le16 version; 648 __le16 reserved; 649 __le16 num_of_mcast_adr; 650 u8 permanent_addr[ETH_ALEN]; 651 __le16 region_code; 652 __le16 number_of_antenna; 653 __le32 fw_release_number; 654 __le32 reserved_1; 655 __le32 reserved_2; 656 __le32 reserved_3; 657 __le32 fw_cap_info; 658 __le32 dot_11n_dev_cap; 659 u8 dev_mcs_support; 660 __le16 mp_end_port; /* SDIO only, reserved for other interfacces */ 661 __le16 reserved_4; 662} __packed; 663 664struct host_cmd_ds_802_11_rssi_info { 665 __le16 action; 666 __le16 ndata; 667 __le16 nbcn; 668 __le16 reserved[9]; 669 long long reserved_1; 670}; 671 672struct host_cmd_ds_802_11_rssi_info_rsp { 673 __le16 action; 674 __le16 ndata; 675 __le16 nbcn; 676 __le16 data_rssi_last; 677 __le16 data_nf_last; 678 __le16 data_rssi_avg; 679 __le16 data_nf_avg; 680 __le16 bcn_rssi_last; 681 __le16 bcn_nf_last; 682 __le16 bcn_rssi_avg; 683 __le16 bcn_nf_avg; 684 long long tsf_bcn; 685}; 686 687struct host_cmd_ds_802_11_mac_address { 688 __le16 action; 689 u8 mac_addr[ETH_ALEN]; 690}; 691 692struct host_cmd_ds_mac_control { 693 __le16 action; 694 __le16 reserved; 695}; 696 697struct host_cmd_ds_mac_multicast_adr { 698 __le16 action; 699 __le16 num_of_adrs; 700 u8 mac_list[MWIFIEX_MAX_MULTICAST_LIST_SIZE][ETH_ALEN]; 701} __packed; 702 703struct host_cmd_ds_802_11_deauthenticate { 704 u8 mac_addr[ETH_ALEN]; 705 __le16 reason_code; 706} __packed; 707 708struct host_cmd_ds_802_11_associate { 709 u8 peer_sta_addr[ETH_ALEN]; 710 __le16 cap_info_bitmap; 711 __le16 listen_interval; 712 __le16 beacon_period; 713 u8 dtim_period; 714} __packed; 715 716struct ieee_types_assoc_rsp { 717 __le16 cap_info_bitmap; 718 __le16 status_code; 719 __le16 a_id; 720 u8 ie_buffer[1]; 721} __packed; 722 723struct host_cmd_ds_802_11_associate_rsp { 724 struct ieee_types_assoc_rsp assoc_rsp; 725} __packed; 726 727struct ieee_types_cf_param_set { 728 u8 element_id; 729 u8 len; 730 u8 cfp_cnt; 731 u8 cfp_period; 732 u16 cfp_max_duration; 733 u16 cfp_duration_remaining; 734} __packed; 735 736struct ieee_types_ibss_param_set { 737 u8 element_id; 738 u8 len; 739 __le16 atim_window; 740} __packed; 741 742union ieee_types_ss_param_set { 743 struct ieee_types_cf_param_set cf_param_set; 744 struct ieee_types_ibss_param_set ibss_param_set; 745} __packed; 746 747struct ieee_types_fh_param_set { 748 u8 element_id; 749 u8 len; 750 __le16 dwell_time; 751 u8 hop_set; 752 u8 hop_pattern; 753 u8 hop_index; 754} __packed; 755 756struct ieee_types_ds_param_set { 757 u8 element_id; 758 u8 len; 759 u8 current_chan; 760} __packed; 761 762union ieee_types_phy_param_set { 763 struct ieee_types_fh_param_set fh_param_set; 764 struct ieee_types_ds_param_set ds_param_set; 765} __packed; 766 767struct host_cmd_ds_802_11_ad_hoc_start { 768 u8 ssid[IEEE80211_MAX_SSID_LEN]; 769 u8 bss_mode; 770 __le16 beacon_period; 771 u8 dtim_period; 772 union ieee_types_ss_param_set ss_param_set; 773 union ieee_types_phy_param_set phy_param_set; 774 u16 reserved1; 775 __le16 cap_info_bitmap; 776 u8 DataRate[HOSTCMD_SUPPORTED_RATES]; 777} __packed; 778 779struct host_cmd_ds_802_11_ad_hoc_result { 780 u8 pad[3]; 781 u8 bssid[ETH_ALEN]; 782} __packed; 783 784struct adhoc_bss_desc { 785 u8 bssid[ETH_ALEN]; 786 u8 ssid[IEEE80211_MAX_SSID_LEN]; 787 u8 bss_mode; 788 __le16 beacon_period; 789 u8 dtim_period; 790 u8 time_stamp[8]; 791 u8 local_time[8]; 792 union ieee_types_phy_param_set phy_param_set; 793 union ieee_types_ss_param_set ss_param_set; 794 __le16 cap_info_bitmap; 795 u8 data_rates[HOSTCMD_SUPPORTED_RATES]; 796 797 /* 798 * DO NOT ADD ANY FIELDS TO THIS STRUCTURE. 799 * It is used in the Adhoc join command and will cause a 800 * binary layout mismatch with the firmware 801 */ 802} __packed; 803 804struct host_cmd_ds_802_11_ad_hoc_join { 805 struct adhoc_bss_desc bss_descriptor; 806 u16 reserved1; 807 u16 reserved2; 808} __packed; 809 810struct host_cmd_ds_802_11_get_log { 811 __le32 mcast_tx_frame; 812 __le32 failed; 813 __le32 retry; 814 __le32 multi_retry; 815 __le32 frame_dup; 816 __le32 rts_success; 817 __le32 rts_failure; 818 __le32 ack_failure; 819 __le32 rx_frag; 820 __le32 mcast_rx_frame; 821 __le32 fcs_error; 822 __le32 tx_frame; 823 __le32 reserved; 824 __le32 wep_icv_err_cnt[4]; 825}; 826 827struct host_cmd_ds_tx_rate_query { 828 u8 tx_rate; 829 /* Ht Info [Bit 0] RxRate format: LG=0, HT=1 830 * [Bit 1] HT Bandwidth: BW20 = 0, BW40 = 1 831 * [Bit 2] HT Guard Interval: LGI = 0, SGI = 1 */ 832 u8 ht_info; 833} __packed; 834 835enum Host_Sleep_Action { 836 HS_CONFIGURE = 0x0001, 837 HS_ACTIVATE = 0x0002, 838}; 839 840struct mwifiex_hs_config_param { 841 __le32 conditions; 842 u8 gpio; 843 u8 gap; 844} __packed; 845 846struct hs_activate_param { 847 u16 resp_ctrl; 848} __packed; 849 850struct host_cmd_ds_802_11_hs_cfg_enh { 851 __le16 action; 852 853 union { 854 struct mwifiex_hs_config_param hs_config; 855 struct hs_activate_param hs_activate; 856 } params; 857} __packed; 858 859enum SNMP_MIB_INDEX { 860 OP_RATE_SET_I = 1, 861 DTIM_PERIOD_I = 3, 862 RTS_THRESH_I = 5, 863 SHORT_RETRY_LIM_I = 6, 864 LONG_RETRY_LIM_I = 7, 865 FRAG_THRESH_I = 8, 866 DOT11D_I = 9, 867}; 868 869#define MAX_SNMP_BUF_SIZE 128 870 871struct host_cmd_ds_802_11_snmp_mib { 872 __le16 query_type; 873 __le16 oid; 874 __le16 buf_size; 875 u8 value[1]; 876} __packed; 877 878struct mwifiex_rate_scope { 879 __le16 type; 880 __le16 length; 881 __le16 hr_dsss_rate_bitmap; 882 __le16 ofdm_rate_bitmap; 883 __le16 ht_mcs_rate_bitmap[8]; 884} __packed; 885 886struct mwifiex_rate_drop_pattern { 887 __le16 type; 888 __le16 length; 889 __le32 rate_drop_mode; 890} __packed; 891 892struct host_cmd_ds_tx_rate_cfg { 893 __le16 action; 894 __le16 cfg_index; 895} __packed; 896 897struct mwifiex_power_group { 898 u8 modulation_class; 899 u8 first_rate_code; 900 u8 last_rate_code; 901 s8 power_step; 902 s8 power_min; 903 s8 power_max; 904 u8 ht_bandwidth; 905 u8 reserved; 906} __packed; 907 908struct mwifiex_types_power_group { 909 u16 type; 910 u16 length; 911} __packed; 912 913struct host_cmd_ds_txpwr_cfg { 914 __le16 action; 915 __le16 cfg_index; 916 __le32 mode; 917} __packed; 918 919#define MWIFIEX_USER_SCAN_CHAN_MAX 50 920 921#define MWIFIEX_MAX_SSID_LIST_LENGTH 10 922 923struct mwifiex_scan_cmd_config { 924 /* 925 * BSS Type to be sent in the firmware command 926 * 927 * Field can be used to restrict the types of networks returned in the 928 * scan. Valid settings are: 929 * 930 * - MWIFIEX_SCAN_MODE_BSS (infrastructure) 931 * - MWIFIEX_SCAN_MODE_IBSS (adhoc) 932 * - MWIFIEX_SCAN_MODE_ANY (unrestricted, adhoc and infrastructure) 933 */ 934 u8 bss_mode; 935 936 /* Specific BSSID used to filter scan results in the firmware */ 937 u8 specific_bssid[ETH_ALEN]; 938 939 /* Length of TLVs sent in command starting at tlvBuffer */ 940 u32 tlv_buf_len; 941 942 /* 943 * SSID TLV(s) and ChanList TLVs to be sent in the firmware command 944 * 945 * TLV_TYPE_CHANLIST, mwifiex_ie_types_chan_list_param_set 946 * WLAN_EID_SSID, mwifiex_ie_types_ssid_param_set 947 */ 948 u8 tlv_buf[1]; /* SSID TLV(s) and ChanList TLVs are stored 949 here */ 950} __packed; 951 952struct mwifiex_user_scan_chan { 953 u8 chan_number; 954 u8 radio_type; 955 u8 scan_type; 956 u8 reserved; 957 u32 scan_time; 958} __packed; 959 960struct mwifiex_user_scan_ssid { 961 u8 ssid[IEEE80211_MAX_SSID_LEN + 1]; 962 u8 max_len; 963} __packed; 964 965struct mwifiex_user_scan_cfg { 966 /* 967 * Flag set to keep the previous scan table intact 968 * 969 * If set, the scan results will accumulate, replacing any previous 970 * matched entries for a BSS with the new scan data 971 */ 972 u8 keep_previous_scan; 973 /* 974 * BSS mode to be sent in the firmware command 975 * 976 * Field can be used to restrict the types of networks returned in the 977 * scan. Valid settings are: 978 * 979 * - MWIFIEX_SCAN_MODE_BSS (infrastructure) 980 * - MWIFIEX_SCAN_MODE_IBSS (adhoc) 981 * - MWIFIEX_SCAN_MODE_ANY (unrestricted, adhoc and infrastructure) 982 */ 983 u8 bss_mode; 984 /* Configure the number of probe requests for active chan scans */ 985 u8 num_probes; 986 u8 reserved; 987 /* BSSID filter sent in the firmware command to limit the results */ 988 u8 specific_bssid[ETH_ALEN]; 989 /* SSID filter list used in the to limit the scan results */ 990 struct mwifiex_user_scan_ssid ssid_list[MWIFIEX_MAX_SSID_LIST_LENGTH]; 991 /* Variable number (fixed maximum) of channels to scan up */ 992 struct mwifiex_user_scan_chan chan_list[MWIFIEX_USER_SCAN_CHAN_MAX]; 993} __packed; 994 995struct ie_body { 996 u8 grp_key_oui[4]; 997 u8 ptk_cnt[2]; 998 u8 ptk_body[4]; 999} __packed; 1000 1001struct host_cmd_ds_802_11_scan { 1002 u8 bss_mode; 1003 u8 bssid[ETH_ALEN]; 1004 u8 tlv_buffer[1]; 1005} __packed; 1006 1007struct host_cmd_ds_802_11_scan_rsp { 1008 __le16 bss_descript_size; 1009 u8 number_of_sets; 1010 u8 bss_desc_and_tlv_buffer[1]; 1011} __packed; 1012 1013struct host_cmd_ds_802_11_bg_scan_query { 1014 u8 flush; 1015} __packed; 1016 1017struct host_cmd_ds_802_11_bg_scan_query_rsp { 1018 u32 report_condition; 1019 struct host_cmd_ds_802_11_scan_rsp scan_resp; 1020} __packed; 1021 1022struct mwifiex_ietypes_domain_param_set { 1023 struct mwifiex_ie_types_header header; 1024 u8 country_code[IEEE80211_COUNTRY_STRING_LEN]; 1025 struct ieee80211_country_ie_triplet triplet[1]; 1026} __packed; 1027 1028struct host_cmd_ds_802_11d_domain_info { 1029 __le16 action; 1030 struct mwifiex_ietypes_domain_param_set domain; 1031} __packed; 1032 1033struct host_cmd_ds_802_11d_domain_info_rsp { 1034 __le16 action; 1035 struct mwifiex_ietypes_domain_param_set domain; 1036} __packed; 1037 1038struct host_cmd_ds_11n_addba_req { 1039 u8 add_req_result; 1040 u8 peer_mac_addr[ETH_ALEN]; 1041 u8 dialog_token; 1042 __le16 block_ack_param_set; 1043 __le16 block_ack_tmo; 1044 __le16 ssn; 1045} __packed; 1046 1047struct host_cmd_ds_11n_addba_rsp { 1048 u8 add_rsp_result; 1049 u8 peer_mac_addr[ETH_ALEN]; 1050 u8 dialog_token; 1051 __le16 status_code; 1052 __le16 block_ack_param_set; 1053 __le16 block_ack_tmo; 1054 __le16 ssn; 1055} __packed; 1056 1057struct host_cmd_ds_11n_delba { 1058 u8 del_result; 1059 u8 peer_mac_addr[ETH_ALEN]; 1060 __le16 del_ba_param_set; 1061 __le16 reason_code; 1062 u8 reserved; 1063} __packed; 1064 1065struct host_cmd_ds_11n_batimeout { 1066 u8 tid; 1067 u8 peer_mac_addr[ETH_ALEN]; 1068 u8 origninator; 1069} __packed; 1070 1071struct host_cmd_ds_11n_cfg { 1072 __le16 action; 1073 __le16 ht_tx_cap; 1074 __le16 ht_tx_info; 1075} __packed; 1076 1077struct host_cmd_ds_txbuf_cfg { 1078 __le16 action; 1079 __le16 buff_size; 1080 __le16 mp_end_port; /* SDIO only, reserved for other interfacces */ 1081 __le16 reserved3; 1082} __packed; 1083 1084struct host_cmd_ds_amsdu_aggr_ctrl { 1085 __le16 action; 1086 __le16 enable; 1087 __le16 curr_buf_size; 1088} __packed; 1089 1090struct mwifiex_ie_types_wmm_param_set { 1091 struct mwifiex_ie_types_header header; 1092 u8 wmm_ie[1]; 1093}; 1094 1095struct mwifiex_ie_types_wmm_queue_status { 1096 struct mwifiex_ie_types_header header; 1097 u8 queue_index; 1098 u8 disabled; 1099 u16 medium_time; 1100 u8 flow_required; 1101 u8 flow_created; 1102 u32 reserved; 1103}; 1104 1105struct ieee_types_vendor_header { 1106 u8 element_id; 1107 u8 len; 1108 u8 oui[3]; 1109 u8 oui_type; 1110 u8 oui_subtype; 1111 u8 version; 1112} __packed; 1113 1114struct ieee_types_wmm_ac_parameters { 1115 u8 aci_aifsn_bitmap; 1116 u8 ecw_bitmap; 1117 __le16 tx_op_limit; 1118} __packed; 1119 1120struct ieee_types_wmm_parameter { 1121 /* 1122 * WMM Parameter IE - Vendor Specific Header: 1123 * element_id [221/0xdd] 1124 * Len [24] 1125 * Oui [00:50:f2] 1126 * OuiType [2] 1127 * OuiSubType [1] 1128 * Version [1] 1129 */ 1130 struct ieee_types_vendor_header vend_hdr; 1131 u8 qos_info_bitmap; 1132 u8 reserved; 1133 struct ieee_types_wmm_ac_parameters ac_params[IEEE80211_MAX_QUEUES]; 1134} __packed; 1135 1136struct ieee_types_wmm_info { 1137 1138 /* 1139 * WMM Info IE - Vendor Specific Header: 1140 * element_id [221/0xdd] 1141 * Len [7] 1142 * Oui [00:50:f2] 1143 * OuiType [2] 1144 * OuiSubType [0] 1145 * Version [1] 1146 */ 1147 struct ieee_types_vendor_header vend_hdr; 1148 1149 u8 qos_info_bitmap; 1150} __packed; 1151 1152struct host_cmd_ds_wmm_get_status { 1153 u8 queue_status_tlv[sizeof(struct mwifiex_ie_types_wmm_queue_status) * 1154 IEEE80211_MAX_QUEUES]; 1155 u8 wmm_param_tlv[sizeof(struct ieee_types_wmm_parameter) + 2]; 1156} __packed; 1157 1158struct mwifiex_wmm_ac_status { 1159 u8 disabled; 1160 u8 flow_required; 1161 u8 flow_created; 1162}; 1163 1164struct mwifiex_ie_types_htcap { 1165 struct mwifiex_ie_types_header header; 1166 struct ieee80211_ht_cap ht_cap; 1167} __packed; 1168 1169struct mwifiex_ie_types_htinfo { 1170 struct mwifiex_ie_types_header header; 1171 struct ieee80211_ht_info ht_info; 1172} __packed; 1173 1174struct mwifiex_ie_types_2040bssco { 1175 struct mwifiex_ie_types_header header; 1176 u8 bss_co_2040; 1177} __packed; 1178 1179struct mwifiex_ie_types_extcap { 1180 struct mwifiex_ie_types_header header; 1181 u8 ext_cap; 1182} __packed; 1183 1184struct host_cmd_ds_mac_reg_access { 1185 __le16 action; 1186 __le16 offset; 1187 __le32 value; 1188} __packed; 1189 1190struct host_cmd_ds_bbp_reg_access { 1191 __le16 action; 1192 __le16 offset; 1193 u8 value; 1194 u8 reserved[3]; 1195} __packed; 1196 1197struct host_cmd_ds_rf_reg_access { 1198 __le16 action; 1199 __le16 offset; 1200 u8 value; 1201 u8 reserved[3]; 1202} __packed; 1203 1204struct host_cmd_ds_pmic_reg_access { 1205 __le16 action; 1206 __le16 offset; 1207 u8 value; 1208 u8 reserved[3]; 1209} __packed; 1210 1211struct host_cmd_ds_802_11_eeprom_access { 1212 __le16 action; 1213 1214 __le16 offset; 1215 __le16 byte_count; 1216 u8 value; 1217} __packed; 1218 1219struct host_cmd_ds_802_11_rf_channel { 1220 __le16 action; 1221 __le16 current_channel; 1222 __le16 rf_type; 1223 __le16 reserved; 1224 u8 reserved_1[32]; 1225} __packed; 1226 1227struct host_cmd_ds_version_ext { 1228 u8 version_str_sel; 1229 char version_str[128]; 1230} __packed; 1231 1232struct host_cmd_ds_802_11_ibss_status { 1233 __le16 action; 1234 __le16 enable; 1235 u8 bssid[ETH_ALEN]; 1236 __le16 beacon_interval; 1237 __le16 atim_window; 1238 __le16 use_g_rate_protect; 1239} __packed; 1240 1241#define CONNECTION_TYPE_INFRA 0 1242#define CONNECTION_TYPE_ADHOC 1 1243 1244struct host_cmd_ds_set_bss_mode { 1245 u8 con_type; 1246} __packed; 1247 1248struct host_cmd_ds_command { 1249 __le16 command; 1250 __le16 size; 1251 __le16 seq_num; 1252 __le16 result; 1253 union { 1254 struct host_cmd_ds_get_hw_spec hw_spec; 1255 struct host_cmd_ds_mac_control mac_ctrl; 1256 struct host_cmd_ds_802_11_mac_address mac_addr; 1257 struct host_cmd_ds_mac_multicast_adr mc_addr; 1258 struct host_cmd_ds_802_11_get_log get_log; 1259 struct host_cmd_ds_802_11_rssi_info rssi_info; 1260 struct host_cmd_ds_802_11_rssi_info_rsp rssi_info_rsp; 1261 struct host_cmd_ds_802_11_snmp_mib smib; 1262 struct host_cmd_ds_802_11_rf_channel rf_channel; 1263 struct host_cmd_ds_tx_rate_query tx_rate; 1264 struct host_cmd_ds_tx_rate_cfg tx_rate_cfg; 1265 struct host_cmd_ds_txpwr_cfg txp_cfg; 1266 struct host_cmd_ds_802_11_ps_mode_enh psmode_enh; 1267 struct host_cmd_ds_802_11_hs_cfg_enh opt_hs_cfg; 1268 struct host_cmd_ds_802_11_scan scan; 1269 struct host_cmd_ds_802_11_scan_rsp scan_resp; 1270 struct host_cmd_ds_802_11_bg_scan_query bg_scan_query; 1271 struct host_cmd_ds_802_11_bg_scan_query_rsp bg_scan_query_resp; 1272 struct host_cmd_ds_802_11_associate associate; 1273 struct host_cmd_ds_802_11_associate_rsp associate_rsp; 1274 struct host_cmd_ds_802_11_deauthenticate deauth; 1275 struct host_cmd_ds_802_11_ad_hoc_start adhoc_start; 1276 struct host_cmd_ds_802_11_ad_hoc_result adhoc_result; 1277 struct host_cmd_ds_802_11_ad_hoc_join adhoc_join; 1278 struct host_cmd_ds_802_11d_domain_info domain_info; 1279 struct host_cmd_ds_802_11d_domain_info_rsp domain_info_resp; 1280 struct host_cmd_ds_11n_addba_req add_ba_req; 1281 struct host_cmd_ds_11n_addba_rsp add_ba_rsp; 1282 struct host_cmd_ds_11n_delba del_ba; 1283 struct host_cmd_ds_txbuf_cfg tx_buf; 1284 struct host_cmd_ds_amsdu_aggr_ctrl amsdu_aggr_ctrl; 1285 struct host_cmd_ds_11n_cfg htcfg; 1286 struct host_cmd_ds_wmm_get_status get_wmm_status; 1287 struct host_cmd_ds_802_11_key_material key_material; 1288 struct host_cmd_ds_version_ext verext; 1289 struct host_cmd_ds_802_11_ibss_status ibss_coalescing; 1290 struct host_cmd_ds_mac_reg_access mac_reg; 1291 struct host_cmd_ds_bbp_reg_access bbp_reg; 1292 struct host_cmd_ds_rf_reg_access rf_reg; 1293 struct host_cmd_ds_pmic_reg_access pmic_reg; 1294 struct host_cmd_ds_set_bss_mode bss_mode; 1295 struct host_cmd_ds_802_11_eeprom_access eeprom; 1296 } params; 1297} __packed; 1298 1299struct mwifiex_opt_sleep_confirm { 1300 __le16 command; 1301 __le16 size; 1302 __le16 seq_num; 1303 __le16 result; 1304 __le16 action; 1305 struct sleep_confirm_param sleep_cfm; 1306} __packed; 1307 1308struct mwifiex_opt_sleep_confirm_buffer { 1309 u8 hdr[4]; 1310 struct mwifiex_opt_sleep_confirm ps_cfm_sleep; 1311} __packed; 1312#endif /* !_MWIFIEX_FW_H_ */ 1313