diff options
Diffstat (limited to 'drivers/net/wireless/mwifiex/fw.h')
-rw-r--r-- | drivers/net/wireless/mwifiex/fw.h | 202 |
1 files changed, 187 insertions, 15 deletions
diff --git a/drivers/net/wireless/mwifiex/fw.h b/drivers/net/wireless/mwifiex/fw.h index 5fa932d5f905..b485dc1ae5eb 100644 --- a/drivers/net/wireless/mwifiex/fw.h +++ b/drivers/net/wireless/mwifiex/fw.h | |||
@@ -50,21 +50,23 @@ struct tx_packet_hdr { | |||
50 | #define HOSTCMD_SUPPORTED_RATES 14 | 50 | #define HOSTCMD_SUPPORTED_RATES 14 |
51 | #define N_SUPPORTED_RATES 3 | 51 | #define N_SUPPORTED_RATES 3 |
52 | #define ALL_802_11_BANDS (BAND_A | BAND_B | BAND_G | BAND_GN | \ | 52 | #define ALL_802_11_BANDS (BAND_A | BAND_B | BAND_G | BAND_GN | \ |
53 | BAND_AN | BAND_GAC | BAND_AAC) | 53 | BAND_AN | BAND_AAC) |
54 | 54 | ||
55 | #define FW_MULTI_BANDS_SUPPORT (BIT(8) | BIT(9) | BIT(10) | BIT(11) | \ | 55 | #define FW_MULTI_BANDS_SUPPORT (BIT(8) | BIT(9) | BIT(10) | BIT(11) | \ |
56 | BIT(12) | BIT(13)) | 56 | BIT(13)) |
57 | #define IS_SUPPORT_MULTI_BANDS(adapter) \ | 57 | #define IS_SUPPORT_MULTI_BANDS(adapter) \ |
58 | (adapter->fw_cap_info & FW_MULTI_BANDS_SUPPORT) | 58 | (adapter->fw_cap_info & FW_MULTI_BANDS_SUPPORT) |
59 | 59 | ||
60 | /* shift bit 12 and bit 13 in fw_cap_info from the firmware to bit 13 and 14 | 60 | /* bit 13: 11ac BAND_AAC |
61 | * for 11ac so that bit 11 is for GN, bit 12 for AN, bit 13 for GAC, and bit | 61 | * bit 12: reserved for lab testing, will be reused for BAND_AN |
62 | * bit 14 for AAC, in order to be compatible with the band capability | 62 | * bit 11: 11n BAND_GN |
63 | * defined in the driver after right shift of 8 bits. | 63 | * bit 10: 11a BAND_A |
64 | * bit 9: 11g BAND_G | ||
65 | * bit 8: 11b BAND_B | ||
66 | * Map these bits to band capability by right shifting 8 bits. | ||
64 | */ | 67 | */ |
65 | #define GET_FW_DEFAULT_BANDS(adapter) \ | 68 | #define GET_FW_DEFAULT_BANDS(adapter) \ |
66 | (((((adapter->fw_cap_info & 0x3000) << 1) | \ | 69 | (((adapter->fw_cap_info & 0x2f00) >> 8) & \ |
67 | (adapter->fw_cap_info & ~0xF000)) >> 8) & \ | ||
68 | ALL_802_11_BANDS) | 70 | ALL_802_11_BANDS) |
69 | 71 | ||
70 | #define HostCmd_WEP_KEY_INDEX_MASK 0x3fff | 72 | #define HostCmd_WEP_KEY_INDEX_MASK 0x3fff |
@@ -77,12 +79,21 @@ enum KEY_TYPE_ID { | |||
77 | KEY_TYPE_ID_WAPI, | 79 | KEY_TYPE_ID_WAPI, |
78 | KEY_TYPE_ID_AES_CMAC, | 80 | KEY_TYPE_ID_AES_CMAC, |
79 | }; | 81 | }; |
82 | |||
83 | #define WPA_PN_SIZE 8 | ||
84 | #define KEY_PARAMS_FIXED_LEN 10 | ||
85 | #define KEY_INDEX_MASK 0xf | ||
86 | #define FW_KEY_API_VER_MAJOR_V2 2 | ||
87 | |||
80 | #define KEY_MCAST BIT(0) | 88 | #define KEY_MCAST BIT(0) |
81 | #define KEY_UNICAST BIT(1) | 89 | #define KEY_UNICAST BIT(1) |
82 | #define KEY_ENABLED BIT(2) | 90 | #define KEY_ENABLED BIT(2) |
91 | #define KEY_DEFAULT BIT(3) | ||
92 | #define KEY_TX_KEY BIT(4) | ||
93 | #define KEY_RX_KEY BIT(5) | ||
83 | #define KEY_IGTK BIT(10) | 94 | #define KEY_IGTK BIT(10) |
84 | 95 | ||
85 | #define WAPI_KEY_LEN 50 | 96 | #define WAPI_KEY_LEN (WLAN_KEY_LEN_SMS4 + PN_LEN + 2) |
86 | 97 | ||
87 | #define MAX_POLL_TRIES 100 | 98 | #define MAX_POLL_TRIES 100 |
88 | #define MAX_FIRMWARE_POLL_TRIES 100 | 99 | #define MAX_FIRMWARE_POLL_TRIES 100 |
@@ -130,6 +141,7 @@ enum MWIFIEX_802_11_PRIVACY_FILTER { | |||
130 | #define TLV_TYPE_RSSI_HIGH (PROPRIETARY_TLV_BASE_ID + 22) | 141 | #define TLV_TYPE_RSSI_HIGH (PROPRIETARY_TLV_BASE_ID + 22) |
131 | #define TLV_TYPE_AUTH_TYPE (PROPRIETARY_TLV_BASE_ID + 31) | 142 | #define TLV_TYPE_AUTH_TYPE (PROPRIETARY_TLV_BASE_ID + 31) |
132 | #define TLV_TYPE_STA_MAC_ADDR (PROPRIETARY_TLV_BASE_ID + 32) | 143 | #define TLV_TYPE_STA_MAC_ADDR (PROPRIETARY_TLV_BASE_ID + 32) |
144 | #define TLV_TYPE_BSSID (PROPRIETARY_TLV_BASE_ID + 35) | ||
133 | #define TLV_TYPE_CHANNELBANDLIST (PROPRIETARY_TLV_BASE_ID + 42) | 145 | #define TLV_TYPE_CHANNELBANDLIST (PROPRIETARY_TLV_BASE_ID + 42) |
134 | #define TLV_TYPE_UAP_BEACON_PERIOD (PROPRIETARY_TLV_BASE_ID + 44) | 146 | #define TLV_TYPE_UAP_BEACON_PERIOD (PROPRIETARY_TLV_BASE_ID + 44) |
135 | #define TLV_TYPE_UAP_DTIM_PERIOD (PROPRIETARY_TLV_BASE_ID + 45) | 147 | #define TLV_TYPE_UAP_DTIM_PERIOD (PROPRIETARY_TLV_BASE_ID + 45) |
@@ -144,6 +156,8 @@ enum MWIFIEX_802_11_PRIVACY_FILTER { | |||
144 | #define TLV_TYPE_RATE_DROP_CONTROL (PROPRIETARY_TLV_BASE_ID + 82) | 156 | #define TLV_TYPE_RATE_DROP_CONTROL (PROPRIETARY_TLV_BASE_ID + 82) |
145 | #define TLV_TYPE_RATE_SCOPE (PROPRIETARY_TLV_BASE_ID + 83) | 157 | #define TLV_TYPE_RATE_SCOPE (PROPRIETARY_TLV_BASE_ID + 83) |
146 | #define TLV_TYPE_POWER_GROUP (PROPRIETARY_TLV_BASE_ID + 84) | 158 | #define TLV_TYPE_POWER_GROUP (PROPRIETARY_TLV_BASE_ID + 84) |
159 | #define TLV_TYPE_BSS_SCAN_RSP (PROPRIETARY_TLV_BASE_ID + 86) | ||
160 | #define TLV_TYPE_BSS_SCAN_INFO (PROPRIETARY_TLV_BASE_ID + 87) | ||
147 | #define TLV_TYPE_UAP_RETRY_LIMIT (PROPRIETARY_TLV_BASE_ID + 93) | 161 | #define TLV_TYPE_UAP_RETRY_LIMIT (PROPRIETARY_TLV_BASE_ID + 93) |
148 | #define TLV_TYPE_WAPI_IE (PROPRIETARY_TLV_BASE_ID + 94) | 162 | #define TLV_TYPE_WAPI_IE (PROPRIETARY_TLV_BASE_ID + 94) |
149 | #define TLV_TYPE_UAP_MGMT_FRAME (PROPRIETARY_TLV_BASE_ID + 104) | 163 | #define TLV_TYPE_UAP_MGMT_FRAME (PROPRIETARY_TLV_BASE_ID + 104) |
@@ -154,6 +168,8 @@ enum MWIFIEX_802_11_PRIVACY_FILTER { | |||
154 | #define TLV_TYPE_PWK_CIPHER (PROPRIETARY_TLV_BASE_ID + 145) | 168 | #define TLV_TYPE_PWK_CIPHER (PROPRIETARY_TLV_BASE_ID + 145) |
155 | #define TLV_TYPE_GWK_CIPHER (PROPRIETARY_TLV_BASE_ID + 146) | 169 | #define TLV_TYPE_GWK_CIPHER (PROPRIETARY_TLV_BASE_ID + 146) |
156 | #define TLV_TYPE_COALESCE_RULE (PROPRIETARY_TLV_BASE_ID + 154) | 170 | #define TLV_TYPE_COALESCE_RULE (PROPRIETARY_TLV_BASE_ID + 154) |
171 | #define TLV_TYPE_KEY_PARAM_V2 (PROPRIETARY_TLV_BASE_ID + 156) | ||
172 | #define TLV_TYPE_FW_API_REV (PROPRIETARY_TLV_BASE_ID + 199) | ||
157 | 173 | ||
158 | #define MWIFIEX_TX_DATA_BUF_SIZE_2K 2048 | 174 | #define MWIFIEX_TX_DATA_BUF_SIZE_2K 2048 |
159 | 175 | ||
@@ -176,13 +192,21 @@ enum MWIFIEX_802_11_PRIVACY_FILTER { | |||
176 | #define MWIFIEX_TX_DATA_BUF_SIZE_8K 8192 | 192 | #define MWIFIEX_TX_DATA_BUF_SIZE_8K 8192 |
177 | 193 | ||
178 | #define ISSUPP_11NENABLED(FwCapInfo) (FwCapInfo & BIT(11)) | 194 | #define ISSUPP_11NENABLED(FwCapInfo) (FwCapInfo & BIT(11)) |
195 | #define ISSUPP_TDLS_ENABLED(FwCapInfo) (FwCapInfo & BIT(14)) | ||
179 | 196 | ||
180 | #define MWIFIEX_DEF_HT_CAP (IEEE80211_HT_CAP_DSSSCCK40 | \ | 197 | #define MWIFIEX_DEF_HT_CAP (IEEE80211_HT_CAP_DSSSCCK40 | \ |
181 | (1 << IEEE80211_HT_CAP_RX_STBC_SHIFT) | \ | 198 | (1 << IEEE80211_HT_CAP_RX_STBC_SHIFT) | \ |
182 | IEEE80211_HT_CAP_SM_PS) | 199 | IEEE80211_HT_CAP_SM_PS) |
183 | 200 | ||
201 | #define MWIFIEX_DEF_11N_TX_BF_CAP 0x09E1E008 | ||
202 | |||
184 | #define MWIFIEX_DEF_AMPDU IEEE80211_HT_AMPDU_PARM_FACTOR | 203 | #define MWIFIEX_DEF_AMPDU IEEE80211_HT_AMPDU_PARM_FACTOR |
185 | 204 | ||
205 | #define GET_RXSTBC(x) (x & IEEE80211_HT_CAP_RX_STBC) | ||
206 | #define MWIFIEX_RX_STBC1 0x0100 | ||
207 | #define MWIFIEX_RX_STBC12 0x0200 | ||
208 | #define MWIFIEX_RX_STBC123 0x0300 | ||
209 | |||
186 | /* dev_cap bitmap | 210 | /* dev_cap bitmap |
187 | * BIT | 211 | * BIT |
188 | * 0-16 reserved | 212 | * 0-16 reserved |
@@ -204,6 +228,7 @@ enum MWIFIEX_802_11_PRIVACY_FILTER { | |||
204 | #define ISSUPP_GREENFIELD(Dot11nDevCap) (Dot11nDevCap & BIT(29)) | 228 | #define ISSUPP_GREENFIELD(Dot11nDevCap) (Dot11nDevCap & BIT(29)) |
205 | #define ISENABLED_40MHZ_INTOLERANT(Dot11nDevCap) (Dot11nDevCap & BIT(8)) | 229 | #define ISENABLED_40MHZ_INTOLERANT(Dot11nDevCap) (Dot11nDevCap & BIT(8)) |
206 | #define ISSUPP_RXLDPC(Dot11nDevCap) (Dot11nDevCap & BIT(22)) | 230 | #define ISSUPP_RXLDPC(Dot11nDevCap) (Dot11nDevCap & BIT(22)) |
231 | #define ISSUPP_BEAMFORMING(Dot11nDevCap) (Dot11nDevCap & BIT(30)) | ||
207 | 232 | ||
208 | /* httxcfg bitmap | 233 | /* httxcfg bitmap |
209 | * 0 reserved | 234 | * 0 reserved |
@@ -216,8 +241,21 @@ enum MWIFIEX_802_11_PRIVACY_FILTER { | |||
216 | */ | 241 | */ |
217 | #define MWIFIEX_FW_DEF_HTTXCFG (BIT(1) | BIT(4) | BIT(5) | BIT(6)) | 242 | #define MWIFIEX_FW_DEF_HTTXCFG (BIT(1) | BIT(4) | BIT(5) | BIT(6)) |
218 | 243 | ||
244 | /* 11AC Tx and Rx MCS map for 1x1 mode: | ||
245 | * IEEE80211_VHT_MCS_SUPPORT_0_9 for stream 1 | ||
246 | * IEEE80211_VHT_MCS_NOT_SUPPORTED for remaining 7 streams | ||
247 | */ | ||
248 | #define MWIFIEX_11AC_MCS_MAP_1X1 0xfffefffe | ||
249 | |||
250 | /* 11AC Tx and Rx MCS map for 2x2 mode: | ||
251 | * IEEE80211_VHT_MCS_SUPPORT_0_9 for stream 1 and 2 | ||
252 | * IEEE80211_VHT_MCS_NOT_SUPPORTED for remaining 6 streams | ||
253 | */ | ||
254 | #define MWIFIEX_11AC_MCS_MAP_2X2 0xfffafffa | ||
255 | |||
219 | #define GET_RXMCSSUPP(DevMCSSupported) (DevMCSSupported & 0x0f) | 256 | #define GET_RXMCSSUPP(DevMCSSupported) (DevMCSSupported & 0x0f) |
220 | #define SETHT_MCS32(x) (x[4] |= 1) | 257 | #define SETHT_MCS32(x) (x[4] |= 1) |
258 | #define HT_STREAM_1X1 0x11 | ||
221 | #define HT_STREAM_2X2 0x22 | 259 | #define HT_STREAM_2X2 0x22 |
222 | 260 | ||
223 | #define SET_SECONDARYCHAN(RadioType, SECCHAN) (RadioType |= (SECCHAN << 4)) | 261 | #define SET_SECONDARYCHAN(RadioType, SECCHAN) (RadioType |= (SECCHAN << 4)) |
@@ -226,17 +264,24 @@ enum MWIFIEX_802_11_PRIVACY_FILTER { | |||
226 | 264 | ||
227 | /* HW_SPEC fw_cap_info */ | 265 | /* HW_SPEC fw_cap_info */ |
228 | 266 | ||
229 | #define ISSUPP_11ACENABLED(fw_cap_info) (fw_cap_info & (BIT(12)|BIT(13))) | 267 | #define ISSUPP_11ACENABLED(fw_cap_info) (fw_cap_info & BIT(13)) |
230 | 268 | ||
231 | #define GET_VHTCAP_CHWDSET(vht_cap_info) ((vht_cap_info >> 2) & 0x3) | 269 | #define GET_VHTCAP_CHWDSET(vht_cap_info) ((vht_cap_info >> 2) & 0x3) |
232 | #define GET_VHTNSSMCS(mcs_mapset, nss) ((mcs_mapset >> (2 * (nss - 1))) & 0x3) | 270 | #define GET_VHTNSSMCS(mcs_mapset, nss) ((mcs_mapset >> (2 * (nss - 1))) & 0x3) |
233 | #define SET_VHTNSSMCS(mcs_mapset, nss, value) (mcs_mapset |= (value & 0x3) << \ | 271 | #define SET_VHTNSSMCS(mcs_mapset, nss, value) (mcs_mapset |= (value & 0x3) << \ |
234 | (2 * (nss - 1))) | 272 | (2 * (nss - 1))) |
235 | #define NO_NSS_SUPPORT 0x3 | ||
236 | |||
237 | #define GET_DEVTXMCSMAP(dev_mcs_map) (dev_mcs_map >> 16) | 273 | #define GET_DEVTXMCSMAP(dev_mcs_map) (dev_mcs_map >> 16) |
238 | #define GET_DEVRXMCSMAP(dev_mcs_map) (dev_mcs_map & 0xFFFF) | 274 | #define GET_DEVRXMCSMAP(dev_mcs_map) (dev_mcs_map & 0xFFFF) |
239 | 275 | ||
276 | /* Clear SU Beanformer, MU beanformer, MU beanformee and | ||
277 | * sounding dimensions bits | ||
278 | */ | ||
279 | #define MWIFIEX_DEF_11AC_CAP_BF_RESET_MASK \ | ||
280 | (IEEE80211_VHT_CAP_SU_BEAMFORMER_CAPABLE | \ | ||
281 | IEEE80211_VHT_CAP_MU_BEAMFORMER_CAPABLE | \ | ||
282 | IEEE80211_VHT_CAP_MU_BEAMFORMEE_CAPABLE | \ | ||
283 | IEEE80211_VHT_CAP_SOUNDING_DIMENSIONS_MASK) | ||
284 | |||
240 | #define MOD_CLASS_HR_DSSS 0x03 | 285 | #define MOD_CLASS_HR_DSSS 0x03 |
241 | #define MOD_CLASS_OFDM 0x07 | 286 | #define MOD_CLASS_OFDM 0x07 |
242 | #define MOD_CLASS_HT 0x08 | 287 | #define MOD_CLASS_HT 0x08 |
@@ -295,10 +340,12 @@ enum MWIFIEX_802_11_PRIVACY_FILTER { | |||
295 | #define HostCmd_CMD_CAU_REG_ACCESS 0x00ed | 340 | #define HostCmd_CMD_CAU_REG_ACCESS 0x00ed |
296 | #define HostCmd_CMD_SET_BSS_MODE 0x00f7 | 341 | #define HostCmd_CMD_SET_BSS_MODE 0x00f7 |
297 | #define HostCmd_CMD_PCIE_DESC_DETAILS 0x00fa | 342 | #define HostCmd_CMD_PCIE_DESC_DETAILS 0x00fa |
343 | #define HostCmd_CMD_802_11_SCAN_EXT 0x0107 | ||
298 | #define HostCmd_CMD_COALESCE_CFG 0x010a | 344 | #define HostCmd_CMD_COALESCE_CFG 0x010a |
299 | #define HostCmd_CMD_MGMT_FRAME_REG 0x010c | 345 | #define HostCmd_CMD_MGMT_FRAME_REG 0x010c |
300 | #define HostCmd_CMD_REMAIN_ON_CHAN 0x010d | 346 | #define HostCmd_CMD_REMAIN_ON_CHAN 0x010d |
301 | #define HostCmd_CMD_11AC_CFG 0x0112 | 347 | #define HostCmd_CMD_11AC_CFG 0x0112 |
348 | #define HostCmd_CMD_TDLS_OPER 0x0122 | ||
302 | 349 | ||
303 | #define PROTOCOL_NO_SECURITY 0x01 | 350 | #define PROTOCOL_NO_SECURITY 0x01 |
304 | #define PROTOCOL_STATIC_WEP 0x02 | 351 | #define PROTOCOL_STATIC_WEP 0x02 |
@@ -440,6 +487,7 @@ enum P2P_MODES { | |||
440 | #define EVENT_UAP_MIC_COUNTERMEASURES 0x0000004c | 487 | #define EVENT_UAP_MIC_COUNTERMEASURES 0x0000004c |
441 | #define EVENT_HOSTWAKE_STAIE 0x0000004d | 488 | #define EVENT_HOSTWAKE_STAIE 0x0000004d |
442 | #define EVENT_CHANNEL_SWITCH_ANN 0x00000050 | 489 | #define EVENT_CHANNEL_SWITCH_ANN 0x00000050 |
490 | #define EVENT_EXT_SCAN_REPORT 0x00000058 | ||
443 | #define EVENT_REMAIN_ON_CHAN_EXPIRED 0x0000005f | 491 | #define EVENT_REMAIN_ON_CHAN_EXPIRED 0x0000005f |
444 | 492 | ||
445 | #define EVENT_ID_MASK 0xffff | 493 | #define EVENT_ID_MASK 0xffff |
@@ -468,6 +516,12 @@ enum P2P_MODES { | |||
468 | #define MWIFIEX_CRITERIA_UNICAST BIT(1) | 516 | #define MWIFIEX_CRITERIA_UNICAST BIT(1) |
469 | #define MWIFIEX_CRITERIA_MULTICAST BIT(3) | 517 | #define MWIFIEX_CRITERIA_MULTICAST BIT(3) |
470 | 518 | ||
519 | #define ACT_TDLS_DELETE 0x00 | ||
520 | #define ACT_TDLS_CREATE 0x01 | ||
521 | #define ACT_TDLS_CONFIG 0x02 | ||
522 | |||
523 | #define MWIFIEX_FW_V15 15 | ||
524 | |||
471 | struct mwifiex_ie_types_header { | 525 | struct mwifiex_ie_types_header { |
472 | __le16 type; | 526 | __le16 type; |
473 | __le16 len; | 527 | __le16 len; |
@@ -480,6 +534,7 @@ struct mwifiex_ie_types_data { | |||
480 | 534 | ||
481 | #define MWIFIEX_TxPD_POWER_MGMT_NULL_PACKET 0x01 | 535 | #define MWIFIEX_TxPD_POWER_MGMT_NULL_PACKET 0x01 |
482 | #define MWIFIEX_TxPD_POWER_MGMT_LAST_PACKET 0x08 | 536 | #define MWIFIEX_TxPD_POWER_MGMT_LAST_PACKET 0x08 |
537 | #define MWIFIEX_TXPD_FLAGS_TDLS_PACKET 0x10 | ||
483 | 538 | ||
484 | struct txpd { | 539 | struct txpd { |
485 | u8 bss_type; | 540 | u8 bss_type; |
@@ -676,6 +731,56 @@ struct mwifiex_cmac_param { | |||
676 | u8 key[WLAN_KEY_LEN_AES_CMAC]; | 731 | u8 key[WLAN_KEY_LEN_AES_CMAC]; |
677 | } __packed; | 732 | } __packed; |
678 | 733 | ||
734 | struct mwifiex_wep_param { | ||
735 | __le16 key_len; | ||
736 | u8 key[WLAN_KEY_LEN_WEP104]; | ||
737 | } __packed; | ||
738 | |||
739 | struct mwifiex_tkip_param { | ||
740 | u8 pn[WPA_PN_SIZE]; | ||
741 | __le16 key_len; | ||
742 | u8 key[WLAN_KEY_LEN_TKIP]; | ||
743 | } __packed; | ||
744 | |||
745 | struct mwifiex_aes_param { | ||
746 | u8 pn[WPA_PN_SIZE]; | ||
747 | __le16 key_len; | ||
748 | u8 key[WLAN_KEY_LEN_CCMP]; | ||
749 | } __packed; | ||
750 | |||
751 | struct mwifiex_wapi_param { | ||
752 | u8 pn[PN_LEN]; | ||
753 | __le16 key_len; | ||
754 | u8 key[WLAN_KEY_LEN_SMS4]; | ||
755 | } __packed; | ||
756 | |||
757 | struct mwifiex_cmac_aes_param { | ||
758 | u8 ipn[IGTK_PN_LEN]; | ||
759 | __le16 key_len; | ||
760 | u8 key[WLAN_KEY_LEN_AES_CMAC]; | ||
761 | } __packed; | ||
762 | |||
763 | struct mwifiex_ie_type_key_param_set_v2 { | ||
764 | __le16 type; | ||
765 | __le16 len; | ||
766 | u8 mac_addr[ETH_ALEN]; | ||
767 | u8 key_idx; | ||
768 | u8 key_type; | ||
769 | __le16 key_info; | ||
770 | union { | ||
771 | struct mwifiex_wep_param wep; | ||
772 | struct mwifiex_tkip_param tkip; | ||
773 | struct mwifiex_aes_param aes; | ||
774 | struct mwifiex_wapi_param wapi; | ||
775 | struct mwifiex_cmac_aes_param cmac_aes; | ||
776 | } key_params; | ||
777 | } __packed; | ||
778 | |||
779 | struct host_cmd_ds_802_11_key_material_v2 { | ||
780 | __le16 action; | ||
781 | struct mwifiex_ie_type_key_param_set_v2 key_param_set; | ||
782 | } __packed; | ||
783 | |||
679 | struct host_cmd_ds_802_11_key_material { | 784 | struct host_cmd_ds_802_11_key_material { |
680 | __le16 action; | 785 | __le16 action; |
681 | struct mwifiex_ie_type_key_param_set key_param_set; | 786 | struct mwifiex_ie_type_key_param_set key_param_set; |
@@ -727,6 +832,17 @@ struct host_cmd_ds_802_11_ps_mode_enh { | |||
727 | } params; | 832 | } params; |
728 | } __packed; | 833 | } __packed; |
729 | 834 | ||
835 | enum FW_API_VER_ID { | ||
836 | KEY_API_VER_ID = 1, | ||
837 | }; | ||
838 | |||
839 | struct hw_spec_fw_api_rev { | ||
840 | struct mwifiex_ie_types_header header; | ||
841 | __le16 api_id; | ||
842 | u8 major_ver; | ||
843 | u8 minor_ver; | ||
844 | } __packed; | ||
845 | |||
730 | struct host_cmd_ds_get_hw_spec { | 846 | struct host_cmd_ds_get_hw_spec { |
731 | __le16 hw_if_version; | 847 | __le16 hw_if_version; |
732 | __le16 version; | 848 | __le16 version; |
@@ -748,6 +864,7 @@ struct host_cmd_ds_get_hw_spec { | |||
748 | __le32 reserved_6; | 864 | __le32 reserved_6; |
749 | __le32 dot_11ac_dev_cap; | 865 | __le32 dot_11ac_dev_cap; |
750 | __le32 dot_11ac_mcs_support; | 866 | __le32 dot_11ac_mcs_support; |
867 | u8 tlvs[0]; | ||
751 | } __packed; | 868 | } __packed; |
752 | 869 | ||
753 | struct host_cmd_ds_802_11_rssi_info { | 870 | struct host_cmd_ds_802_11_rssi_info { |
@@ -993,6 +1110,7 @@ struct mwifiex_rate_scope { | |||
993 | __le16 hr_dsss_rate_bitmap; | 1110 | __le16 hr_dsss_rate_bitmap; |
994 | __le16 ofdm_rate_bitmap; | 1111 | __le16 ofdm_rate_bitmap; |
995 | __le16 ht_mcs_rate_bitmap[8]; | 1112 | __le16 ht_mcs_rate_bitmap[8]; |
1113 | __le16 vht_mcs_rate_bitmap[8]; | ||
996 | } __packed; | 1114 | } __packed; |
997 | 1115 | ||
998 | struct mwifiex_rate_drop_pattern { | 1116 | struct mwifiex_rate_drop_pattern { |
@@ -1047,14 +1165,28 @@ struct host_cmd_ds_rf_ant_siso { | |||
1047 | __le16 ant_mode; | 1165 | __le16 ant_mode; |
1048 | }; | 1166 | }; |
1049 | 1167 | ||
1050 | struct mwifiex_bcn_param { | 1168 | struct host_cmd_ds_tdls_oper { |
1051 | u8 bssid[ETH_ALEN]; | 1169 | __le16 tdls_action; |
1052 | u8 rssi; | 1170 | __le16 reason; |
1171 | u8 peer_mac[ETH_ALEN]; | ||
1172 | } __packed; | ||
1173 | |||
1174 | struct mwifiex_fixed_bcn_param { | ||
1053 | __le64 timestamp; | 1175 | __le64 timestamp; |
1054 | __le16 beacon_period; | 1176 | __le16 beacon_period; |
1055 | __le16 cap_info_bitmap; | 1177 | __le16 cap_info_bitmap; |
1056 | } __packed; | 1178 | } __packed; |
1057 | 1179 | ||
1180 | struct mwifiex_event_scan_result { | ||
1181 | __le16 event_id; | ||
1182 | u8 bss_index; | ||
1183 | u8 bss_type; | ||
1184 | u8 more_event; | ||
1185 | u8 reserved[3]; | ||
1186 | __le16 buf_size; | ||
1187 | u8 num_of_set; | ||
1188 | } __packed; | ||
1189 | |||
1058 | #define MWIFIEX_USER_SCAN_CHAN_MAX 50 | 1190 | #define MWIFIEX_USER_SCAN_CHAN_MAX 50 |
1059 | 1191 | ||
1060 | #define MWIFIEX_MAX_SSID_LIST_LENGTH 10 | 1192 | #define MWIFIEX_MAX_SSID_LIST_LENGTH 10 |
@@ -1124,6 +1256,28 @@ struct host_cmd_ds_802_11_scan_rsp { | |||
1124 | u8 bss_desc_and_tlv_buffer[1]; | 1256 | u8 bss_desc_and_tlv_buffer[1]; |
1125 | } __packed; | 1257 | } __packed; |
1126 | 1258 | ||
1259 | struct host_cmd_ds_802_11_scan_ext { | ||
1260 | u32 reserved; | ||
1261 | u8 tlv_buffer[1]; | ||
1262 | } __packed; | ||
1263 | |||
1264 | struct mwifiex_ie_types_bss_scan_rsp { | ||
1265 | struct mwifiex_ie_types_header header; | ||
1266 | u8 bssid[ETH_ALEN]; | ||
1267 | u8 frame_body[1]; | ||
1268 | } __packed; | ||
1269 | |||
1270 | struct mwifiex_ie_types_bss_scan_info { | ||
1271 | struct mwifiex_ie_types_header header; | ||
1272 | __le16 rssi; | ||
1273 | __le16 anpi; | ||
1274 | u8 cca_busy_fraction; | ||
1275 | u8 radio_type; | ||
1276 | u8 channel; | ||
1277 | u8 reserved; | ||
1278 | __le64 tsf; | ||
1279 | } __packed; | ||
1280 | |||
1127 | struct host_cmd_ds_802_11_bg_scan_query { | 1281 | struct host_cmd_ds_802_11_bg_scan_query { |
1128 | u8 flush; | 1282 | u8 flush; |
1129 | } __packed; | 1283 | } __packed; |
@@ -1296,6 +1450,11 @@ struct mwifiex_ie_types_vhtcap { | |||
1296 | struct ieee80211_vht_cap vht_cap; | 1450 | struct ieee80211_vht_cap vht_cap; |
1297 | } __packed; | 1451 | } __packed; |
1298 | 1452 | ||
1453 | struct mwifiex_ie_types_aid { | ||
1454 | struct mwifiex_ie_types_header header; | ||
1455 | __le16 aid; | ||
1456 | } __packed; | ||
1457 | |||
1299 | struct mwifiex_ie_types_oper_mode_ntf { | 1458 | struct mwifiex_ie_types_oper_mode_ntf { |
1300 | struct mwifiex_ie_types_header header; | 1459 | struct mwifiex_ie_types_header header; |
1301 | u8 oper_mode; | 1460 | u8 oper_mode; |
@@ -1331,6 +1490,11 @@ struct mwifiex_ie_types_extcap { | |||
1331 | u8 ext_capab[0]; | 1490 | u8 ext_capab[0]; |
1332 | } __packed; | 1491 | } __packed; |
1333 | 1492 | ||
1493 | struct mwifiex_ie_types_qos_info { | ||
1494 | struct mwifiex_ie_types_header header; | ||
1495 | u8 qos_info; | ||
1496 | } __packed; | ||
1497 | |||
1334 | struct host_cmd_ds_mac_reg_access { | 1498 | struct host_cmd_ds_mac_reg_access { |
1335 | __le16 action; | 1499 | __le16 action; |
1336 | __le16 offset; | 1500 | __le16 offset; |
@@ -1441,6 +1605,11 @@ struct host_cmd_tlv_rates { | |||
1441 | u8 rates[0]; | 1605 | u8 rates[0]; |
1442 | } __packed; | 1606 | } __packed; |
1443 | 1607 | ||
1608 | struct mwifiex_ie_types_bssid_list { | ||
1609 | struct mwifiex_ie_types_header header; | ||
1610 | u8 bssid[ETH_ALEN]; | ||
1611 | } __packed; | ||
1612 | |||
1444 | struct host_cmd_tlv_bcast_ssid { | 1613 | struct host_cmd_tlv_bcast_ssid { |
1445 | struct mwifiex_ie_types_header header; | 1614 | struct mwifiex_ie_types_header header; |
1446 | u8 bcast_ctl; | 1615 | u8 bcast_ctl; |
@@ -1634,6 +1803,7 @@ struct host_cmd_ds_command { | |||
1634 | struct host_cmd_ds_802_11_ps_mode_enh psmode_enh; | 1803 | struct host_cmd_ds_802_11_ps_mode_enh psmode_enh; |
1635 | struct host_cmd_ds_802_11_hs_cfg_enh opt_hs_cfg; | 1804 | struct host_cmd_ds_802_11_hs_cfg_enh opt_hs_cfg; |
1636 | struct host_cmd_ds_802_11_scan scan; | 1805 | struct host_cmd_ds_802_11_scan scan; |
1806 | struct host_cmd_ds_802_11_scan_ext ext_scan; | ||
1637 | struct host_cmd_ds_802_11_scan_rsp scan_resp; | 1807 | struct host_cmd_ds_802_11_scan_rsp scan_resp; |
1638 | struct host_cmd_ds_802_11_bg_scan_query bg_scan_query; | 1808 | struct host_cmd_ds_802_11_bg_scan_query bg_scan_query; |
1639 | struct host_cmd_ds_802_11_bg_scan_query_rsp bg_scan_query_resp; | 1809 | struct host_cmd_ds_802_11_bg_scan_query_rsp bg_scan_query_resp; |
@@ -1653,6 +1823,7 @@ struct host_cmd_ds_command { | |||
1653 | struct host_cmd_ds_11n_cfg htcfg; | 1823 | struct host_cmd_ds_11n_cfg htcfg; |
1654 | struct host_cmd_ds_wmm_get_status get_wmm_status; | 1824 | struct host_cmd_ds_wmm_get_status get_wmm_status; |
1655 | struct host_cmd_ds_802_11_key_material key_material; | 1825 | struct host_cmd_ds_802_11_key_material key_material; |
1826 | struct host_cmd_ds_802_11_key_material_v2 key_material_v2; | ||
1656 | struct host_cmd_ds_version_ext verext; | 1827 | struct host_cmd_ds_version_ext verext; |
1657 | struct host_cmd_ds_mgmt_frame_reg reg_mask; | 1828 | struct host_cmd_ds_mgmt_frame_reg reg_mask; |
1658 | struct host_cmd_ds_remain_on_chan roc_cfg; | 1829 | struct host_cmd_ds_remain_on_chan roc_cfg; |
@@ -1671,6 +1842,7 @@ struct host_cmd_ds_command { | |||
1671 | struct host_cmd_ds_sta_deauth sta_deauth; | 1842 | struct host_cmd_ds_sta_deauth sta_deauth; |
1672 | struct host_cmd_11ac_vht_cfg vht_cfg; | 1843 | struct host_cmd_11ac_vht_cfg vht_cfg; |
1673 | struct host_cmd_ds_coalesce_cfg coalesce_cfg; | 1844 | struct host_cmd_ds_coalesce_cfg coalesce_cfg; |
1845 | struct host_cmd_ds_tdls_oper tdls_oper; | ||
1674 | } params; | 1846 | } params; |
1675 | } __packed; | 1847 | } __packed; |
1676 | 1848 | ||