Linux Audio

Check our new training course

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