16dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt/* 2ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt * Copyright (C) 1999-2012, Broadcom Corporation 36dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * 46dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * Permission to use, copy, modify, and/or distribute this software for any 56dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * purpose with or without fee is hereby granted, provided that the above 66dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * copyright notice and this permission notice appear in all copies. 76dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * 86dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 96dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 106dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY 116dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 126dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION 136dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 146dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 156dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * 166dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * Fundamental types and constants relating to 802.11 176dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * 18ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt * $Id: 802.11.h 346820 2012-07-24 13:53:12Z $ 196dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt */ 206dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 216dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 226dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#ifndef _802_11_H_ 236dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define _802_11_H_ 246dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 256dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#ifndef _TYPEDEFS_H_ 266dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#include <typedefs.h> 276dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#endif 286dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 296dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#ifndef _NET_ETHERNET_H_ 306dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#include <proto/ethernet.h> 316dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#endif 326dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 336dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#include <proto/wpa.h> 346dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 356dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 366dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#include <packed_section_start.h> 376dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 386dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 396dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_TU_TO_US 1024 406dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 416dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 426dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_A3_HDR_LEN 24 436dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_A4_HDR_LEN 30 446dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MAC_HDR_LEN DOT11_A3_HDR_LEN 456dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_FCS_LEN 4 466dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_ICV_LEN 4 476dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_ICV_AES_LEN 8 486dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_QOS_LEN 2 496dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_HTC_LEN 4 506dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 516dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_KEY_INDEX_SHIFT 6 526dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_IV_LEN 4 536dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_IV_TKIP_LEN 8 546dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_IV_AES_OCB_LEN 4 556dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_IV_AES_CCM_LEN 8 566dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_IV_MAX_LEN 8 576dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 586dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 596dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MAX_MPDU_BODY_LEN 2304 606dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 616dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MAX_MPDU_LEN (DOT11_A4_HDR_LEN + \ 626dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt DOT11_QOS_LEN + \ 636dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt DOT11_IV_AES_CCM_LEN + \ 646dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt DOT11_MAX_MPDU_BODY_LEN + \ 656dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt DOT11_ICV_LEN + \ 666dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt DOT11_FCS_LEN) 676dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 686dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MAX_SSID_LEN 32 696dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 706dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 716dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_DEFAULT_RTS_LEN 2347 726dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MAX_RTS_LEN 2347 736dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 746dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 756dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MIN_FRAG_LEN 256 766dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MAX_FRAG_LEN 2346 776dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_DEFAULT_FRAG_LEN 2346 786dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 796dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 806dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MIN_BEACON_PERIOD 1 816dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MAX_BEACON_PERIOD 0xFFFF 826dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 836dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 846dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MIN_DTIM_PERIOD 1 856dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MAX_DTIM_PERIOD 0xFF 866dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 876dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 886dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_LLC_SNAP_HDR_LEN 8 896dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_OUI_LEN 3 906dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry ShmidtBWL_PRE_PACKED_STRUCT struct dot11_llc_snap_header { 916dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 dsap; 926dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 ssap; 936dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 ctl; 946dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 oui[DOT11_OUI_LEN]; 956dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint16 type; 966dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt} BWL_POST_PACKED_STRUCT; 976dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 986dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 996dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define RFC1042_HDR_LEN (ETHER_HDR_LEN + DOT11_LLC_SNAP_HDR_LEN) 1006dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 1016dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 1026dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 1036dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry ShmidtBWL_PRE_PACKED_STRUCT struct dot11_header { 1046dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint16 fc; 1056dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint16 durid; 1066dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt struct ether_addr a1; 1076dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt struct ether_addr a2; 1086dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt struct ether_addr a3; 1096dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint16 seq; 1106dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt struct ether_addr a4; 1116dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt} BWL_POST_PACKED_STRUCT; 1126dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 1136dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 1146dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 1156dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry ShmidtBWL_PRE_PACKED_STRUCT struct dot11_rts_frame { 1166dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint16 fc; 1176dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint16 durid; 1186dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt struct ether_addr ra; 1196dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt struct ether_addr ta; 1206dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt} BWL_POST_PACKED_STRUCT; 1216dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_RTS_LEN 16 1226dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 1236dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry ShmidtBWL_PRE_PACKED_STRUCT struct dot11_cts_frame { 1246dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint16 fc; 1256dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint16 durid; 1266dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt struct ether_addr ra; 1276dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt} BWL_POST_PACKED_STRUCT; 1286dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_CTS_LEN 10 1296dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 1306dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry ShmidtBWL_PRE_PACKED_STRUCT struct dot11_ack_frame { 1316dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint16 fc; 1326dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint16 durid; 1336dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt struct ether_addr ra; 1346dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt} BWL_POST_PACKED_STRUCT; 1356dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_ACK_LEN 10 1366dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 1376dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry ShmidtBWL_PRE_PACKED_STRUCT struct dot11_ps_poll_frame { 1386dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint16 fc; 1396dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint16 durid; 1406dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt struct ether_addr bssid; 1416dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt struct ether_addr ta; 1426dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt} BWL_POST_PACKED_STRUCT; 1436dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_PS_POLL_LEN 16 1446dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 1456dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry ShmidtBWL_PRE_PACKED_STRUCT struct dot11_cf_end_frame { 1466dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint16 fc; 1476dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint16 durid; 1486dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt struct ether_addr ra; 1496dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt struct ether_addr bssid; 1506dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt} BWL_POST_PACKED_STRUCT; 1516dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_CS_END_LEN 16 1526dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 1536dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 1546dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry ShmidtBWL_PRE_PACKED_STRUCT struct dot11_action_wifi_vendor_specific { 1556dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 category; 1566dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 OUI[3]; 1576dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 type; 1586dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 subtype; 1596dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 data[1040]; 1606dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt} BWL_POST_PACKED_STRUCT; 1616dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidttypedef struct dot11_action_wifi_vendor_specific dot11_action_wifi_vendor_specific_t; 1626dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 1636dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 1646dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry ShmidtBWL_PRE_PACKED_STRUCT struct dot11_action_vs_frmhdr { 1656dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 category; 1666dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 OUI[3]; 1676dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 type; 1686dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 subtype; 1696dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 data[1]; 1706dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt} BWL_POST_PACKED_STRUCT; 1716dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidttypedef struct dot11_action_vs_frmhdr dot11_action_vs_frmhdr_t; 1726dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_ACTION_VS_HDR_LEN 6 1736dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 1746dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define BCM_ACTION_OUI_BYTE0 0x00 1756dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define BCM_ACTION_OUI_BYTE1 0x90 1766dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define BCM_ACTION_OUI_BYTE2 0x4c 1776dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 1786dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 1796dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_BA_CTL_POLICY_NORMAL 0x0000 1806dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_BA_CTL_POLICY_NOACK 0x0001 1816dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_BA_CTL_POLICY_MASK 0x0001 1826dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 1836dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_BA_CTL_MTID 0x0002 1846dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_BA_CTL_COMPRESSED 0x0004 1856dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 1866dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_BA_CTL_NUMMSDU_MASK 0x0FC0 1876dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_BA_CTL_NUMMSDU_SHIFT 6 1886dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 1896dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_BA_CTL_TID_MASK 0xF000 1906dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_BA_CTL_TID_SHIFT 12 1916dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 1926dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 1936dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry ShmidtBWL_PRE_PACKED_STRUCT struct dot11_ctl_header { 1946dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint16 fc; 1956dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint16 durid; 1966dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt struct ether_addr ra; 1976dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt struct ether_addr ta; 1986dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt} BWL_POST_PACKED_STRUCT; 1996dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_CTL_HDR_LEN 16 2006dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 2016dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 2026dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry ShmidtBWL_PRE_PACKED_STRUCT struct dot11_bar { 2036dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint16 bar_control; 2046dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint16 seqnum; 2056dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt} BWL_POST_PACKED_STRUCT; 2066dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_BAR_LEN 4 2076dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 2086dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_BA_BITMAP_LEN 128 2096dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_BA_CMP_BITMAP_LEN 8 2106dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 2116dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry ShmidtBWL_PRE_PACKED_STRUCT struct dot11_ba { 2126dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint16 ba_control; 2136dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint16 seqnum; 2146dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 bitmap[DOT11_BA_BITMAP_LEN]; 2156dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt} BWL_POST_PACKED_STRUCT; 2166dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_BA_LEN 4 2176dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 2186dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 2196dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry ShmidtBWL_PRE_PACKED_STRUCT struct dot11_management_header { 2206dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint16 fc; 2216dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint16 durid; 2226dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt struct ether_addr da; 2236dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt struct ether_addr sa; 2246dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt struct ether_addr bssid; 2256dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint16 seq; 2266dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt} BWL_POST_PACKED_STRUCT; 2276dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MGMT_HDR_LEN 24 2286dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 2296dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 2306dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 2316dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry ShmidtBWL_PRE_PACKED_STRUCT struct dot11_bcn_prb { 2326dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint32 timestamp[2]; 2336dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint16 beacon_interval; 2346dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint16 capability; 2356dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt} BWL_POST_PACKED_STRUCT; 2366dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_BCN_PRB_LEN 12 2376dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_BCN_PRB_FIXED_LEN 12 2386dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 2396dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry ShmidtBWL_PRE_PACKED_STRUCT struct dot11_auth { 2406dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint16 alg; 2416dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint16 seq; 2426dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint16 status; 2436dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt} BWL_POST_PACKED_STRUCT; 2446dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_AUTH_FIXED_LEN 6 2456dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 2466dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry ShmidtBWL_PRE_PACKED_STRUCT struct dot11_assoc_req { 2476dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint16 capability; 2486dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint16 listen; 2496dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt} BWL_POST_PACKED_STRUCT; 2506dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_ASSOC_REQ_FIXED_LEN 4 2516dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 2526dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry ShmidtBWL_PRE_PACKED_STRUCT struct dot11_reassoc_req { 2536dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint16 capability; 2546dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint16 listen; 2556dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt struct ether_addr ap; 2566dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt} BWL_POST_PACKED_STRUCT; 2576dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_REASSOC_REQ_FIXED_LEN 10 2586dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 2596dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry ShmidtBWL_PRE_PACKED_STRUCT struct dot11_assoc_resp { 2606dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint16 capability; 2616dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint16 status; 2626dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint16 aid; 2636dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt} BWL_POST_PACKED_STRUCT; 2646dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_ASSOC_RESP_FIXED_LEN 6 2656dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 2666dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry ShmidtBWL_PRE_PACKED_STRUCT struct dot11_action_measure { 2676dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 category; 2686dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 action; 2696dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 token; 2706dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 data[1]; 2716dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt} BWL_POST_PACKED_STRUCT; 2726dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_ACTION_MEASURE_LEN 3 2736dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 2746dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry ShmidtBWL_PRE_PACKED_STRUCT struct dot11_action_ht_ch_width { 2756dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 category; 2766dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 action; 2776dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 ch_width; 2786dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt} BWL_POST_PACKED_STRUCT; 2796dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 2806dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry ShmidtBWL_PRE_PACKED_STRUCT struct dot11_action_ht_mimops { 2816dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 category; 2826dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 action; 2836dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 control; 2846dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt} BWL_POST_PACKED_STRUCT; 2856dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 286ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry ShmidtBWL_PRE_PACKED_STRUCT struct dot11_action_sa_query { 287ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt uint8 category; 288ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt uint8 action; 289ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt uint16 id; 290ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt} BWL_POST_PACKED_STRUCT; 291ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt 2926dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define SM_PWRSAVE_ENABLE 1 2936dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define SM_PWRSAVE_MODE 2 2946dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 2956dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 2966dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry ShmidtBWL_PRE_PACKED_STRUCT struct dot11_power_cnst { 2976dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 id; 2986dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 len; 2996dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 power; 3006dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt} BWL_POST_PACKED_STRUCT; 3016dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidttypedef struct dot11_power_cnst dot11_power_cnst_t; 3026dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 3036dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry ShmidtBWL_PRE_PACKED_STRUCT struct dot11_power_cap { 3046dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 min; 3056dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 max; 3066dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt} BWL_POST_PACKED_STRUCT; 3076dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidttypedef struct dot11_power_cap dot11_power_cap_t; 3086dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 3096dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry ShmidtBWL_PRE_PACKED_STRUCT struct dot11_tpc_rep { 3106dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 id; 3116dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 len; 3126dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 tx_pwr; 3136dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 margin; 3146dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt} BWL_POST_PACKED_STRUCT; 3156dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidttypedef struct dot11_tpc_rep dot11_tpc_rep_t; 3166dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MNG_IE_TPC_REPORT_LEN 2 3176dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 3186dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry ShmidtBWL_PRE_PACKED_STRUCT struct dot11_supp_channels { 3196dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 id; 3206dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 len; 3216dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 first_channel; 3226dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 num_channels; 3236dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt} BWL_POST_PACKED_STRUCT; 3246dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidttypedef struct dot11_supp_channels dot11_supp_channels_t; 3256dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 3266dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 3276dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry ShmidtBWL_PRE_PACKED_STRUCT struct dot11_extch { 3286dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 id; 3296dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 len; 3306dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 extch; 3316dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt} BWL_POST_PACKED_STRUCT; 3326dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidttypedef struct dot11_extch dot11_extch_ie_t; 3336dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 3346dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry ShmidtBWL_PRE_PACKED_STRUCT struct dot11_brcm_extch { 3356dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 id; 3366dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 len; 3376dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 oui[3]; 3386dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 type; 3396dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 extch; 3406dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt} BWL_POST_PACKED_STRUCT; 3416dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidttypedef struct dot11_brcm_extch dot11_brcm_extch_ie_t; 3426dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 3436dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define BRCM_EXTCH_IE_LEN 5 3446dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define BRCM_EXTCH_IE_TYPE 53 3456dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_EXTCH_IE_LEN 1 3466dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_EXT_CH_MASK 0x03 3476dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_EXT_CH_UPPER 0x01 3486dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_EXT_CH_LOWER 0x03 3496dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_EXT_CH_NONE 0x00 3506dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 3516dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry ShmidtBWL_PRE_PACKED_STRUCT struct dot11_action_frmhdr { 3526dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 category; 3536dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 action; 3546dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 data[1]; 3556dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt} BWL_POST_PACKED_STRUCT; 3566dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_ACTION_FRMHDR_LEN 2 3576dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 3586dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 3596dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry ShmidtBWL_PRE_PACKED_STRUCT struct dot11_channel_switch { 3606dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 id; 3616dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 len; 3626dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 mode; 3636dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 channel; 3646dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 count; 3656dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt} BWL_POST_PACKED_STRUCT; 3666dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidttypedef struct dot11_channel_switch dot11_chan_switch_ie_t; 3676dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 3686dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_SWITCH_IE_LEN 3 3696dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 3706dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_CSA_MODE_ADVISORY 0 3716dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_CSA_MODE_NO_TX 1 3726dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 3736dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry ShmidtBWL_PRE_PACKED_STRUCT struct dot11_action_switch_channel { 3746dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 category; 3756dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 action; 3766dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt dot11_chan_switch_ie_t chan_switch_ie; 3776dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt dot11_brcm_extch_ie_t extch_ie; 3786dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt} BWL_POST_PACKED_STRUCT; 3796dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 3806dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry ShmidtBWL_PRE_PACKED_STRUCT struct dot11_csa_body { 3816dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 mode; 3826dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 reg; 3836dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 channel; 3846dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 count; 3856dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt} BWL_POST_PACKED_STRUCT; 3866dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 3876dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 3886dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry ShmidtBWL_PRE_PACKED_STRUCT struct dot11_ext_csa { 3896dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 id; 3906dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 len; 3916dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt struct dot11_csa_body b; 3926dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt} BWL_POST_PACKED_STRUCT; 3936dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidttypedef struct dot11_ext_csa dot11_ext_csa_ie_t; 3946dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_EXT_CSA_IE_LEN 4 3956dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 3966dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry ShmidtBWL_PRE_PACKED_STRUCT struct dot11_action_ext_csa { 3976dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 category; 3986dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 action; 3996dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt dot11_ext_csa_ie_t chan_switch_ie; 4006dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt} BWL_POST_PACKED_STRUCT; 4016dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 4026dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry ShmidtBWL_PRE_PACKED_STRUCT struct dot11y_action_ext_csa { 4036dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 category; 4046dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 action; 4056dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt struct dot11_csa_body b; 4066dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt} BWL_POST_PACKED_STRUCT; 4076dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 4086dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry ShmidtBWL_PRE_PACKED_STRUCT struct dot11_obss_coex { 4096dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 id; 4106dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 len; 4116dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 info; 4126dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt} BWL_POST_PACKED_STRUCT; 4136dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidttypedef struct dot11_obss_coex dot11_obss_coex_t; 4146dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_OBSS_COEXINFO_LEN 1 4156dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 4166dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_OBSS_COEX_INFO_REQ 0x01 4176dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_OBSS_COEX_40MHZ_INTOLERANT 0x02 4186dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_OBSS_COEX_20MHZ_WIDTH_REQ 0x04 4196dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 4206dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry ShmidtBWL_PRE_PACKED_STRUCT struct dot11_obss_chanlist { 4216dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 id; 4226dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 len; 4236dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 regclass; 4246dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 chanlist[1]; 4256dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt} BWL_POST_PACKED_STRUCT; 4266dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidttypedef struct dot11_obss_chanlist dot11_obss_chanlist_t; 4276dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_OBSS_CHANLIST_FIXED_LEN 1 4286dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 4296dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry ShmidtBWL_PRE_PACKED_STRUCT struct dot11_extcap_ie { 4306dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 id; 4316dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 len; 432ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt uint8 cap[1]; 4336dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt} BWL_POST_PACKED_STRUCT; 4346dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidttypedef struct dot11_extcap_ie dot11_extcap_ie_t; 435ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt 436ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define DOT11_EXTCAP_LEN_MAX 7 437ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define DOT11_EXTCAP_LEN_COEX 1 438ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define DOT11_EXTCAP_LEN_BT 3 439ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define DOT11_EXTCAP_LEN_IW 4 440ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define DOT11_EXTCAP_LEN_SI 6 441ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt 442ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define DOT11_EXTCAP_LEN_TDLS 5 443ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry ShmidtBWL_PRE_PACKED_STRUCT struct dot11_extcap { 444ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt uint8 extcap[DOT11_EXTCAP_LEN_TDLS]; 445ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt} BWL_POST_PACKED_STRUCT; 446ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidttypedef struct dot11_extcap dot11_extcap_t; 447ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt 448ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt 449ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define TDLS_CAP_TDLS 37 450ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define TDLS_CAP_PU_BUFFER_STA 28 451ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define TDLS_CAP_PEER_PSM 20 452ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define TDLS_CAP_CH_SW 30 453ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define TDLS_CAP_PROH 38 454ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define TDLS_CAP_CH_SW_PROH 39 455ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt 456ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define TDLS_CAP_MAX_BIT 39 4576dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 4586dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 4596dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 4606dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MEASURE_TYPE_BASIC 0 4616dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MEASURE_TYPE_CCA 1 4626dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MEASURE_TYPE_RPI 2 4636dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MEASURE_TYPE_CHLOAD 3 4646dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MEASURE_TYPE_NOISE 4 4656dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MEASURE_TYPE_BEACON 5 4666dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MEASURE_TYPE_FRAME 6 4676dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MEASURE_TYPE_STATS 7 4686dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MEASURE_TYPE_LCI 8 4696dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MEASURE_TYPE_TXSTREAM 9 4706dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MEASURE_TYPE_PAUSE 255 4716dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 4726dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 4736dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MEASURE_MODE_PARALLEL (1<<0) 4746dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MEASURE_MODE_ENABLE (1<<1) 4756dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MEASURE_MODE_REQUEST (1<<2) 4766dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MEASURE_MODE_REPORT (1<<3) 4776dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MEASURE_MODE_DUR (1<<4) 4786dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 4796dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MEASURE_MODE_LATE (1<<0) 4806dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MEASURE_MODE_INCAPABLE (1<<1) 4816dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MEASURE_MODE_REFUSED (1<<2) 4826dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 4836dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MEASURE_BASIC_MAP_BSS ((uint8)(1<<0)) 4846dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MEASURE_BASIC_MAP_OFDM ((uint8)(1<<1)) 4856dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MEASURE_BASIC_MAP_UKNOWN ((uint8)(1<<2)) 4866dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MEASURE_BASIC_MAP_RADAR ((uint8)(1<<3)) 4876dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MEASURE_BASIC_MAP_UNMEAS ((uint8)(1<<4)) 4886dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 4896dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry ShmidtBWL_PRE_PACKED_STRUCT struct dot11_meas_req { 4906dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 id; 4916dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 len; 4926dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 token; 4936dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 mode; 4946dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 type; 4956dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 channel; 4966dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 start_time[8]; 4976dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint16 duration; 4986dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt} BWL_POST_PACKED_STRUCT; 4996dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidttypedef struct dot11_meas_req dot11_meas_req_t; 5006dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MNG_IE_MREQ_LEN 14 5016dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 5026dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MNG_IE_MREQ_FIXED_LEN 3 5036dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 5046dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry ShmidtBWL_PRE_PACKED_STRUCT struct dot11_meas_rep { 5056dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 id; 5066dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 len; 5076dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 token; 5086dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 mode; 5096dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 type; 5106dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt BWL_PRE_PACKED_STRUCT union 5116dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt { 5126dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt BWL_PRE_PACKED_STRUCT struct { 5136dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 channel; 5146dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 start_time[8]; 5156dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint16 duration; 5166dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 map; 5176dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt } BWL_POST_PACKED_STRUCT basic; 5186dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 data[1]; 5196dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt } BWL_POST_PACKED_STRUCT rep; 5206dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt} BWL_POST_PACKED_STRUCT; 5216dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidttypedef struct dot11_meas_rep dot11_meas_rep_t; 5226dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 5236dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 5246dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MNG_IE_MREP_FIXED_LEN 3 5256dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 5266dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry ShmidtBWL_PRE_PACKED_STRUCT struct dot11_meas_rep_basic { 5276dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 channel; 5286dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 start_time[8]; 5296dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint16 duration; 5306dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 map; 5316dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt} BWL_POST_PACKED_STRUCT; 5326dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidttypedef struct dot11_meas_rep_basic dot11_meas_rep_basic_t; 5336dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MEASURE_BASIC_REP_LEN 12 5346dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 5356dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry ShmidtBWL_PRE_PACKED_STRUCT struct dot11_quiet { 5366dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 id; 5376dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 len; 5386dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 count; 5396dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 period; 5406dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint16 duration; 5416dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint16 offset; 5426dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt} BWL_POST_PACKED_STRUCT; 5436dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidttypedef struct dot11_quiet dot11_quiet_t; 5446dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 5456dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry ShmidtBWL_PRE_PACKED_STRUCT struct chan_map_tuple { 5466dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 channel; 5476dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 map; 5486dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt} BWL_POST_PACKED_STRUCT; 5496dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidttypedef struct chan_map_tuple chan_map_tuple_t; 5506dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 5516dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry ShmidtBWL_PRE_PACKED_STRUCT struct dot11_ibss_dfs { 5526dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 id; 5536dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 len; 5546dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 eaddr[ETHER_ADDR_LEN]; 5556dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 interval; 5566dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt chan_map_tuple_t map[1]; 5576dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt} BWL_POST_PACKED_STRUCT; 5586dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidttypedef struct dot11_ibss_dfs dot11_ibss_dfs_t; 5596dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 5606dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 5616dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define WME_OUI "\x00\x50\xf2" 5626dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define WME_OUI_LEN 3 5636dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define WME_OUI_TYPE 2 5646dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define WME_TYPE 2 5656dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define WME_SUBTYPE_IE 0 5666dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define WME_SUBTYPE_PARAM_IE 1 5676dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define WME_SUBTYPE_TSPEC 2 568ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define WME_VER 1 5696dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 5706dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 5716dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define AC_BE 0 5726dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define AC_BK 1 5736dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define AC_VI 2 5746dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define AC_VO 3 5756dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define AC_COUNT 4 5766dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 5776dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidttypedef uint8 ac_bitmap_t; 5786dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 5796dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define AC_BITMAP_NONE 0x0 5806dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define AC_BITMAP_ALL 0xf 5816dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define AC_BITMAP_TST(ab, ac) (((ab) & (1 << (ac))) != 0) 5826dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define AC_BITMAP_SET(ab, ac) (((ab) |= (1 << (ac)))) 5836dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define AC_BITMAP_RESET(ab, ac) (((ab) &= ~(1 << (ac)))) 5846dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 5856dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 5866dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry ShmidtBWL_PRE_PACKED_STRUCT struct wme_ie { 5876dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 oui[3]; 5886dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 type; 5896dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 subtype; 5906dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 version; 5916dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 qosinfo; 5926dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt} BWL_POST_PACKED_STRUCT; 5936dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidttypedef struct wme_ie wme_ie_t; 5946dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define WME_IE_LEN 7 5956dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 5966dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry ShmidtBWL_PRE_PACKED_STRUCT struct edcf_acparam { 5976dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 ACI; 5986dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 ECW; 5996dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint16 TXOP; 6006dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt} BWL_POST_PACKED_STRUCT; 6016dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidttypedef struct edcf_acparam edcf_acparam_t; 6026dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 6036dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 6046dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry ShmidtBWL_PRE_PACKED_STRUCT struct wme_param_ie { 6056dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 oui[3]; 6066dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 type; 6076dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 subtype; 6086dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 version; 6096dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 qosinfo; 6106dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 rsvd; 6116dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt edcf_acparam_t acparam[AC_COUNT]; 6126dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt} BWL_POST_PACKED_STRUCT; 6136dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidttypedef struct wme_param_ie wme_param_ie_t; 6146dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define WME_PARAM_IE_LEN 24 6156dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 6166dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 6176dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define WME_QI_AP_APSD_MASK 0x80 6186dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define WME_QI_AP_APSD_SHIFT 7 6196dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define WME_QI_AP_COUNT_MASK 0x0f 6206dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define WME_QI_AP_COUNT_SHIFT 0 6216dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 6226dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 6236dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define WME_QI_STA_MAXSPLEN_MASK 0x60 6246dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define WME_QI_STA_MAXSPLEN_SHIFT 5 6256dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define WME_QI_STA_APSD_ALL_MASK 0xf 6266dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define WME_QI_STA_APSD_ALL_SHIFT 0 6276dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define WME_QI_STA_APSD_BE_MASK 0x8 6286dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define WME_QI_STA_APSD_BE_SHIFT 3 6296dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define WME_QI_STA_APSD_BK_MASK 0x4 6306dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define WME_QI_STA_APSD_BK_SHIFT 2 6316dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define WME_QI_STA_APSD_VI_MASK 0x2 6326dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define WME_QI_STA_APSD_VI_SHIFT 1 6336dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define WME_QI_STA_APSD_VO_MASK 0x1 6346dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define WME_QI_STA_APSD_VO_SHIFT 0 6356dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 6366dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 6376dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define EDCF_AIFSN_MIN 1 6386dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define EDCF_AIFSN_MAX 15 6396dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define EDCF_AIFSN_MASK 0x0f 6406dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define EDCF_ACM_MASK 0x10 6416dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define EDCF_ACI_MASK 0x60 6426dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define EDCF_ACI_SHIFT 5 6436dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define EDCF_AIFSN_SHIFT 12 6446dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 6456dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 6466dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define EDCF_ECW_MIN 0 6476dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define EDCF_ECW_MAX 15 6486dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define EDCF_ECW2CW(exp) ((1 << (exp)) - 1) 6496dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define EDCF_ECWMIN_MASK 0x0f 6506dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define EDCF_ECWMAX_MASK 0xf0 6516dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define EDCF_ECWMAX_SHIFT 4 6526dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 6536dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 6546dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define EDCF_TXOP_MIN 0 6556dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define EDCF_TXOP_MAX 65535 6566dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define EDCF_TXOP2USEC(txop) ((txop) << 5) 6576dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 6586dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 6596dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define NON_EDCF_AC_BE_ACI_STA 0x02 6606dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 6616dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 6626dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define EDCF_AC_BE_ACI_STA 0x03 6636dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define EDCF_AC_BE_ECW_STA 0xA4 6646dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define EDCF_AC_BE_TXOP_STA 0x0000 6656dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define EDCF_AC_BK_ACI_STA 0x27 6666dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define EDCF_AC_BK_ECW_STA 0xA4 6676dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define EDCF_AC_BK_TXOP_STA 0x0000 6686dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define EDCF_AC_VI_ACI_STA 0x42 6696dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define EDCF_AC_VI_ECW_STA 0x43 6706dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define EDCF_AC_VI_TXOP_STA 0x005e 6716dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define EDCF_AC_VO_ACI_STA 0x62 6726dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define EDCF_AC_VO_ECW_STA 0x32 6736dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define EDCF_AC_VO_TXOP_STA 0x002f 6746dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 6756dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 6766dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define EDCF_AC_BE_ACI_AP 0x03 6776dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define EDCF_AC_BE_ECW_AP 0x64 6786dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define EDCF_AC_BE_TXOP_AP 0x0000 6796dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define EDCF_AC_BK_ACI_AP 0x27 6806dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define EDCF_AC_BK_ECW_AP 0xA4 6816dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define EDCF_AC_BK_TXOP_AP 0x0000 6826dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define EDCF_AC_VI_ACI_AP 0x41 6836dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define EDCF_AC_VI_ECW_AP 0x43 6846dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define EDCF_AC_VI_TXOP_AP 0x005e 6856dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define EDCF_AC_VO_ACI_AP 0x61 6866dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define EDCF_AC_VO_ECW_AP 0x32 6876dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define EDCF_AC_VO_TXOP_AP 0x002f 6886dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 6896dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 6906dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry ShmidtBWL_PRE_PACKED_STRUCT struct edca_param_ie { 6916dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 qosinfo; 6926dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 rsvd; 6936dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt edcf_acparam_t acparam[AC_COUNT]; 6946dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt} BWL_POST_PACKED_STRUCT; 6956dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidttypedef struct edca_param_ie edca_param_ie_t; 6966dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define EDCA_PARAM_IE_LEN 18 6976dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 6986dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 6996dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry ShmidtBWL_PRE_PACKED_STRUCT struct qos_cap_ie { 7006dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 qosinfo; 7016dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt} BWL_POST_PACKED_STRUCT; 7026dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidttypedef struct qos_cap_ie qos_cap_ie_t; 7036dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 7046dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry ShmidtBWL_PRE_PACKED_STRUCT struct dot11_qbss_load_ie { 7056dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 id; 7066dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 length; 7076dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint16 station_count; 7086dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 channel_utilization; 7096dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint16 aac; 7106dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt} BWL_POST_PACKED_STRUCT; 7116dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidttypedef struct dot11_qbss_load_ie dot11_qbss_load_ie_t; 712ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define BSS_LOAD_IE_SIZE 7 7136dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 7146dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 7156dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FIXED_MSDU_SIZE 0x8000 7166dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define MSDU_SIZE_MASK 0x7fff 7176dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 7186dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 7196dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 7206dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define INTEGER_SHIFT 13 7216dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FRACTION_MASK 0x1FFF 7226dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 7236dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 7246dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry ShmidtBWL_PRE_PACKED_STRUCT struct dot11_management_notification { 7256dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 category; 7266dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 action; 7276dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 token; 7286dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 status; 7296dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 data[1]; 7306dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt} BWL_POST_PACKED_STRUCT; 7316dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MGMT_NOTIFICATION_LEN 4 7326dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 7336dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 734ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry ShmidtBWL_PRE_PACKED_STRUCT struct ti_ie { 735ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt uint8 ti_type; 736ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt uint32 ti_val; 737ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt} BWL_POST_PACKED_STRUCT; 738ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidttypedef struct ti_ie ti_ie_t; 739ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define TI_TYPE_REASSOC_DEADLINE 1 740ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define TI_TYPE_KEY_LIFETIME 2 741ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt 7426dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define WME_ADDTS_REQUEST 0 7436dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define WME_ADDTS_RESPONSE 1 7446dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define WME_DELTS_REQUEST 2 7456dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 7466dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 7476dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define WME_ADMISSION_ACCEPTED 0 7486dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define WME_INVALID_PARAMETERS 1 7496dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define WME_ADMISSION_REFUSED 3 7506dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 7516dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 7526dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define BCN_PRB_SSID(body) ((char*)(body) + DOT11_BCN_PRB_LEN) 7536dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 7546dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 7556dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_OPEN_SYSTEM 0 7566dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_SHARED_KEY 1 757ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define DOT11_FAST_BSS 2 758ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define DOT11_CHALLENGE_LEN 128 7596dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 7606dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 7616dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_PVER_MASK 0x3 7626dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_PVER_SHIFT 0 7636dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_TYPE_MASK 0xC 7646dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_TYPE_SHIFT 2 7656dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_SUBTYPE_MASK 0xF0 7666dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_SUBTYPE_SHIFT 4 7676dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_TODS 0x100 7686dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_TODS_SHIFT 8 7696dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_FROMDS 0x200 7706dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_FROMDS_SHIFT 9 7716dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_MOREFRAG 0x400 7726dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_MOREFRAG_SHIFT 10 7736dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_RETRY 0x800 7746dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_RETRY_SHIFT 11 7756dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_PM 0x1000 7766dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_PM_SHIFT 12 7776dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_MOREDATA 0x2000 7786dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_MOREDATA_SHIFT 13 7796dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_WEP 0x4000 7806dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_WEP_SHIFT 14 7816dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_ORDER 0x8000 7826dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_ORDER_SHIFT 15 7836dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 7846dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 7856dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define SEQNUM_SHIFT 4 7866dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define SEQNUM_MAX 0x1000 7876dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FRAGNUM_MASK 0xF 7886dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 7896dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 7906dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 7916dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 7926dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_TYPE_MNG 0 7936dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_TYPE_CTL 1 7946dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_TYPE_DATA 2 7956dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 7966dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 7976dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_SUBTYPE_ASSOC_REQ 0 7986dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_SUBTYPE_ASSOC_RESP 1 7996dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_SUBTYPE_REASSOC_REQ 2 8006dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_SUBTYPE_REASSOC_RESP 3 8016dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_SUBTYPE_PROBE_REQ 4 8026dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_SUBTYPE_PROBE_RESP 5 8036dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_SUBTYPE_BEACON 8 8046dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_SUBTYPE_ATIM 9 8056dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_SUBTYPE_DISASSOC 10 8066dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_SUBTYPE_AUTH 11 8076dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_SUBTYPE_DEAUTH 12 8086dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_SUBTYPE_ACTION 13 8096dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_SUBTYPE_ACTION_NOACK 14 8106dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 8116dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 8126dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_SUBTYPE_CTL_WRAPPER 7 8136dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_SUBTYPE_BLOCKACK_REQ 8 8146dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_SUBTYPE_BLOCKACK 9 8156dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_SUBTYPE_PS_POLL 10 8166dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_SUBTYPE_RTS 11 8176dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_SUBTYPE_CTS 12 8186dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_SUBTYPE_ACK 13 8196dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_SUBTYPE_CF_END 14 8206dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_SUBTYPE_CF_END_ACK 15 8216dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 8226dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 8236dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_SUBTYPE_DATA 0 8246dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_SUBTYPE_DATA_CF_ACK 1 8256dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_SUBTYPE_DATA_CF_POLL 2 8266dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_SUBTYPE_DATA_CF_ACK_POLL 3 8276dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_SUBTYPE_NULL 4 8286dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_SUBTYPE_CF_ACK 5 8296dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_SUBTYPE_CF_POLL 6 8306dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_SUBTYPE_CF_ACK_POLL 7 8316dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_SUBTYPE_QOS_DATA 8 8326dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_SUBTYPE_QOS_DATA_CF_ACK 9 8336dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_SUBTYPE_QOS_DATA_CF_POLL 10 8346dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_SUBTYPE_QOS_DATA_CF_ACK_POLL 11 8356dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_SUBTYPE_QOS_NULL 12 8366dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_SUBTYPE_QOS_CF_POLL 14 8376dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_SUBTYPE_QOS_CF_ACK_POLL 15 8386dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 8396dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 8406dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_SUBTYPE_ANY_QOS(s) (((s) & 8) != 0) 8416dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_SUBTYPE_ANY_NULL(s) (((s) & 4) != 0) 8426dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_SUBTYPE_ANY_CF_POLL(s) (((s) & 2) != 0) 8436dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_SUBTYPE_ANY_CF_ACK(s) (((s) & 1) != 0) 8446dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 8456dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 8466dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_KIND_MASK (FC_TYPE_MASK | FC_SUBTYPE_MASK) 8476dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 8486dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_KIND(t, s) (((t) << FC_TYPE_SHIFT) | ((s) << FC_SUBTYPE_SHIFT)) 8496dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 8506dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_SUBTYPE(fc) (((fc) & FC_SUBTYPE_MASK) >> FC_SUBTYPE_SHIFT) 8516dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_TYPE(fc) (((fc) & FC_TYPE_MASK) >> FC_TYPE_SHIFT) 8526dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 8536dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_ASSOC_REQ FC_KIND(FC_TYPE_MNG, FC_SUBTYPE_ASSOC_REQ) 8546dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_ASSOC_RESP FC_KIND(FC_TYPE_MNG, FC_SUBTYPE_ASSOC_RESP) 8556dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_REASSOC_REQ FC_KIND(FC_TYPE_MNG, FC_SUBTYPE_REASSOC_REQ) 8566dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_REASSOC_RESP FC_KIND(FC_TYPE_MNG, FC_SUBTYPE_REASSOC_RESP) 8576dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_PROBE_REQ FC_KIND(FC_TYPE_MNG, FC_SUBTYPE_PROBE_REQ) 8586dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_PROBE_RESP FC_KIND(FC_TYPE_MNG, FC_SUBTYPE_PROBE_RESP) 8596dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_BEACON FC_KIND(FC_TYPE_MNG, FC_SUBTYPE_BEACON) 8606dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_DISASSOC FC_KIND(FC_TYPE_MNG, FC_SUBTYPE_DISASSOC) 8616dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_AUTH FC_KIND(FC_TYPE_MNG, FC_SUBTYPE_AUTH) 8626dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_DEAUTH FC_KIND(FC_TYPE_MNG, FC_SUBTYPE_DEAUTH) 8636dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_ACTION FC_KIND(FC_TYPE_MNG, FC_SUBTYPE_ACTION) 8646dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_ACTION_NOACK FC_KIND(FC_TYPE_MNG, FC_SUBTYPE_ACTION_NOACK) 8656dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 8666dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_CTL_WRAPPER FC_KIND(FC_TYPE_CTL, FC_SUBTYPE_CTL_WRAPPER) 8676dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_BLOCKACK_REQ FC_KIND(FC_TYPE_CTL, FC_SUBTYPE_BLOCKACK_REQ) 8686dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_BLOCKACK FC_KIND(FC_TYPE_CTL, FC_SUBTYPE_BLOCKACK) 8696dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_PS_POLL FC_KIND(FC_TYPE_CTL, FC_SUBTYPE_PS_POLL) 8706dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_RTS FC_KIND(FC_TYPE_CTL, FC_SUBTYPE_RTS) 8716dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_CTS FC_KIND(FC_TYPE_CTL, FC_SUBTYPE_CTS) 8726dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_ACK FC_KIND(FC_TYPE_CTL, FC_SUBTYPE_ACK) 8736dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_CF_END FC_KIND(FC_TYPE_CTL, FC_SUBTYPE_CF_END) 8746dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_CF_END_ACK FC_KIND(FC_TYPE_CTL, FC_SUBTYPE_CF_END_ACK) 8756dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 8766dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_DATA FC_KIND(FC_TYPE_DATA, FC_SUBTYPE_DATA) 8776dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_NULL_DATA FC_KIND(FC_TYPE_DATA, FC_SUBTYPE_NULL) 8786dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_DATA_CF_ACK FC_KIND(FC_TYPE_DATA, FC_SUBTYPE_DATA_CF_ACK) 8796dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_QOS_DATA FC_KIND(FC_TYPE_DATA, FC_SUBTYPE_QOS_DATA) 8806dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FC_QOS_NULL FC_KIND(FC_TYPE_DATA, FC_SUBTYPE_QOS_NULL) 8816dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 8826dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 8836dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 8846dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 8856dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define QOS_PRIO_SHIFT 0 8866dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define QOS_PRIO_MASK 0x0007 8876dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define QOS_PRIO(qos) (((qos) & QOS_PRIO_MASK) >> QOS_PRIO_SHIFT) 8886dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 8896dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 8906dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define QOS_TID_SHIFT 0 8916dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define QOS_TID_MASK 0x000f 8926dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define QOS_TID(qos) (((qos) & QOS_TID_MASK) >> QOS_TID_SHIFT) 8936dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 8946dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 8956dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define QOS_EOSP_SHIFT 4 8966dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define QOS_EOSP_MASK 0x0010 8976dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define QOS_EOSP(qos) (((qos) & QOS_EOSP_MASK) >> QOS_EOSP_SHIFT) 8986dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 8996dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 9006dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define QOS_ACK_NORMAL_ACK 0 9016dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define QOS_ACK_NO_ACK 1 9026dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define QOS_ACK_NO_EXP_ACK 2 9036dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define QOS_ACK_BLOCK_ACK 3 9046dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define QOS_ACK_SHIFT 5 9056dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define QOS_ACK_MASK 0x0060 9066dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define QOS_ACK(qos) (((qos) & QOS_ACK_MASK) >> QOS_ACK_SHIFT) 9076dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 9086dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 9096dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define QOS_AMSDU_SHIFT 7 9106dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define QOS_AMSDU_MASK 0x0080 9116dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 9126dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 9136dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 9146dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 9156dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 9166dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 9176dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MNG_AUTH_ALGO_LEN 2 9186dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MNG_AUTH_SEQ_LEN 2 9196dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MNG_BEACON_INT_LEN 2 9206dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MNG_CAP_LEN 2 9216dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MNG_AP_ADDR_LEN 6 9226dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MNG_LISTEN_INT_LEN 2 9236dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MNG_REASON_LEN 2 9246dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MNG_AID_LEN 2 9256dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MNG_STATUS_LEN 2 9266dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MNG_TIMESTAMP_LEN 8 9276dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 9286dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 9296dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_AID_MASK 0x3fff 9306dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 9316dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 9326dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_RC_RESERVED 0 9336dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_RC_UNSPECIFIED 1 9346dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_RC_AUTH_INVAL 2 9356dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_RC_DEAUTH_LEAVING 3 9366dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_RC_INACTIVITY 4 9376dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_RC_BUSY 5 9386dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_RC_INVAL_CLASS_2 6 9396dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_RC_INVAL_CLASS_3 7 9406dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_RC_DISASSOC_LEAVING 8 9416dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_RC_NOT_AUTH 9 9426dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_RC_BAD_PC 10 9436dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_RC_BAD_CHANNELS 11 9446dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 9456dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 9466dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 9476dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_RC_UNSPECIFIED_QOS 32 9486dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_RC_INSUFFCIENT_BW 33 9496dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_RC_EXCESSIVE_FRAMES 34 9506dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_RC_TX_OUTSIDE_TXOP 35 9516dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_RC_LEAVING_QBSS 36 9526dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_RC_BAD_MECHANISM 37 9536dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_RC_SETUP_NEEDED 38 9546dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_RC_TIMEOUT 39 9556dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 9566dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_RC_MAX 23 9576dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 958ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define DOT11_RC_TDLS_PEER_UNREACH 25 959ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define DOT11_RC_TDLS_DOWN_UNSPECIFIED 26 960ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt 9616dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 962ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define DOT11_SC_SUCCESS 0 963ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define DOT11_SC_FAILURE 1 964ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define DOT11_SC_TDLS_WAKEUP_SCH_ALT 2 965ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt 966ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define DOT11_SC_TDLS_WAKEUP_SCH_REJ 3 967ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define DOT11_SC_TDLS_SEC_DISABLED 5 968ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define DOT11_SC_LIFETIME_REJ 6 969ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define DOT11_SC_NOT_SAME_BSS 7 9706dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_SC_CAP_MISMATCH 10 9716dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_SC_REASSOC_FAIL 11 9726dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_SC_ASSOC_FAIL 12 9736dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_SC_AUTH_MISMATCH 13 9746dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_SC_AUTH_SEQ 14 9756dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_SC_AUTH_CHALLENGE_FAIL 15 9766dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_SC_AUTH_TIMEOUT 16 9776dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_SC_ASSOC_BUSY_FAIL 17 9786dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_SC_ASSOC_RATE_MISMATCH 18 9796dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_SC_ASSOC_SHORT_REQUIRED 19 9806dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_SC_ASSOC_PBCC_REQUIRED 20 9816dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_SC_ASSOC_AGILITY_REQUIRED 21 9826dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_SC_ASSOC_SPECTRUM_REQUIRED 22 9836dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_SC_ASSOC_BAD_POWER_CAP 23 9846dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_SC_ASSOC_BAD_SUP_CHANNELS 24 9856dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_SC_ASSOC_SHORTSLOT_REQUIRED 25 9866dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_SC_ASSOC_ERPBCC_REQUIRED 26 9876dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_SC_ASSOC_DSSOFDM_REQUIRED 27 988ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define DOT11_SC_ASSOC_R0KH_UNREACHABLE 28 989ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define DOT11_SC_ASSOC_TRY_LATER 30 990ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define DOT11_SC_ASSOC_MFP_VIOLATION 31 991ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt 992ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define DOT11_SC_DECLINED 37 993ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define DOT11_SC_INVALID_PARAMS 38 994ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define DOT11_SC_INVALID_PAIRWISE_CIPHER 42 995ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define DOT11_SC_INVALID_AKMP 43 996ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define DOT11_SC_INVALID_RSNIE_CAP 45 997ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define DOT11_SC_DLS_NOT_ALLOWED 48 998ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define DOT11_SC_INVALID_PMKID 53 999ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define DOT11_SC_INVALID_MDID 54 1000ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define DOT11_SC_INVALID_FTIE 55 10016dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 1002ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define DOT11_SC_UNEXP_MSG 70 1003ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define DOT11_SC_INVALID_SNONCE 71 1004ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define DOT11_SC_INVALID_RSNIE 72 10056dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 10066dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 10076dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MNG_DS_PARAM_LEN 1 10086dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MNG_IBSS_PARAM_LEN 2 10096dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 10106dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 10116dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MNG_TIM_FIXED_LEN 3 10126dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MNG_TIM_DTIM_COUNT 0 10136dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MNG_TIM_DTIM_PERIOD 1 10146dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MNG_TIM_BITMAP_CTL 2 10156dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MNG_TIM_PVB 3 10166dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 10176dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 10186dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define TLV_TAG_OFF 0 10196dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define TLV_LEN_OFF 1 10206dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define TLV_HDR_LEN 2 10216dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define TLV_BODY_OFF 2 10226dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 10236dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 10246dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MNG_SSID_ID 0 10256dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MNG_RATES_ID 1 10266dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MNG_FH_PARMS_ID 2 10276dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MNG_DS_PARMS_ID 3 10286dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MNG_CF_PARMS_ID 4 10296dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MNG_TIM_ID 5 10306dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MNG_IBSS_PARMS_ID 6 10316dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MNG_COUNTRY_ID 7 10326dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MNG_HOPPING_PARMS_ID 8 10336dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MNG_HOPPING_TABLE_ID 9 10346dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MNG_REQUEST_ID 10 10356dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MNG_QBSS_LOAD_ID 11 10366dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MNG_EDCA_PARAM_ID 12 10376dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MNG_CHALLENGE_ID 16 10386dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MNG_PWR_CONSTRAINT_ID 32 10396dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MNG_PWR_CAP_ID 33 10406dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MNG_TPC_REQUEST_ID 34 10416dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MNG_TPC_REPORT_ID 35 10426dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MNG_SUPP_CHANNELS_ID 36 10436dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MNG_CHANNEL_SWITCH_ID 37 10446dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MNG_MEASURE_REQUEST_ID 38 10456dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MNG_MEASURE_REPORT_ID 39 10466dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MNG_QUIET_ID 40 10476dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MNG_IBSS_DFS_ID 41 10486dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MNG_ERP_ID 42 10496dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MNG_TS_DELAY_ID 43 10506dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MNG_HT_CAP 45 10516dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MNG_QOS_CAP_ID 46 10526dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MNG_NONERP_ID 47 10536dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MNG_RSN_ID 48 10546dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MNG_EXT_RATES_ID 50 10556dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MNG_AP_CHREP_ID 51 10566dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MNG_NBR_REP_ID 52 10576dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MNG_MDIE_ID 54 10586dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MNG_FTIE_ID 55 10596dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MNG_FT_TI_ID 56 10606dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MNG_REGCLASS_ID 59 10616dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MNG_EXT_CSA_ID 60 10626dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MNG_HT_ADD 61 10636dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MNG_EXT_CHANNEL_OFFSET 62 1064ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define DOT11_MNG_WAPI_ID 68 1065ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define DOT11_MNG_TIME_ADVERTISE_ID 69 1066ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define DOT11_MNG_RRM_CAP_ID 70 1067ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define DOT11_MNG_HT_BSS_COEXINFO_ID 72 1068ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define DOT11_MNG_HT_BSS_CHANNEL_REPORT_ID 73 1069ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define DOT11_MNG_HT_OBSS_ID 74 1070ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define DOT11_MNG_CHANNEL_USAGE 97 1071ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define DOT11_MNG_TIME_ZONE_ID 98 1072ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define DOT11_MNG_LINK_IDENTIFIER_ID 101 1073ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define DOT11_MNG_WAKEUP_SCHEDULE_ID 102 1074ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define DOT11_MNG_CHANNEL_SWITCH_TIMING_ID 104 1075ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define DOT11_MNG_PTI_CONTROL_ID 105 1076ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define DOT11_MNG_PU_BUFFER_STATUS_ID 106 1077ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define DOT11_MNG_INTERWORKING_ID 107 1078ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define DOT11_MNG_ADVERTISEMENT_ID 108 1079ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define DOT11_MNG_EXP_BW_REQ_ID 109 1080ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define DOT11_MNG_QOS_MAP_ID 110 1081ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define DOT11_MNG_ROAM_CONSORT_ID 111 1082ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define DOT11_MNG_EMERGCY_ALERT_ID 112 1083ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define DOT11_MNG_EXT_CAP_ID 127 1084ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define DOT11_MNG_VHT_CAP_ID 191 1085ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define DOT11_MNG_VHT_OPERATION_ID 192 10866dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MNG_WPA_ID 221 10876dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MNG_PROPR_ID 221 10886dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 10896dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MNG_VS_ID 221 10906dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 10916dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 10926dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_RATE_BASIC 0x80 10936dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_RATE_MASK 0x7F 10946dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 10956dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 10966dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MNG_ERP_LEN 1 10976dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MNG_NONERP_PRESENT 0x01 10986dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MNG_USE_PROTECTION 0x02 10996dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MNG_BARKER_PREAMBLE 0x04 11006dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 11016dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MGN_TS_DELAY_LEN 4 11026dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define TS_DELAY_FIELD_SIZE 4 11036dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 11046dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 11056dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_CAP_ESS 0x0001 11066dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_CAP_IBSS 0x0002 11076dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_CAP_POLLABLE 0x0004 11086dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_CAP_POLL_RQ 0x0008 11096dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_CAP_PRIVACY 0x0010 11106dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_CAP_SHORT 0x0020 11116dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_CAP_PBCC 0x0040 11126dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_CAP_AGILITY 0x0080 11136dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_CAP_SPECTRUM 0x0100 11146dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_CAP_SHORTSLOT 0x0400 11156dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_CAP_RRM 0x1000 11166dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_CAP_CCK_OFDM 0x2000 11176dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 11186dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 1119ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define DOT11_EXT_CAP_OBSS_COEX_MGMT 0 1120ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt 1121ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define DOT11_EXT_CAP_SPSMP 6 1122ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt 1123ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define DOT11_EXT_CAP_BSS_TRANSITION_MGMT 19 1124ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt 1125ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define DOT11_EXT_CAP_IW 31 1126ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt 1127ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define DOT11_EXT_CAP_SI 41 1128ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define DOT11_EXT_CAP_SI_MASK 0x0E 11296dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 11306dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 11316dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_ACTION_HDR_LEN 2 11326dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_ACTION_CAT_OFF 0 11336dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_ACTION_ACT_OFF 1 11346dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 11356dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 11366dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_ACTION_CAT_ERR_MASK 0x80 11376dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_ACTION_CAT_MASK 0x7F 11386dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_ACTION_CAT_SPECT_MNG 0 11396dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_ACTION_CAT_QOS 1 11406dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_ACTION_CAT_DLS 2 11416dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_ACTION_CAT_BLOCKACK 3 11426dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_ACTION_CAT_PUBLIC 4 11436dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_ACTION_CAT_RRM 5 11446dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_ACTION_CAT_FBT 6 11456dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_ACTION_CAT_HT 7 1146ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define DOT11_ACTION_CAT_SA_QUERY 8 1147ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define DOT11_ACTION_CAT_PDPA 9 1148ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define DOT11_ACTION_CAT_BSSMGMT 10 1149ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define DOT11_ACTION_NOTIFICATION 17 1150ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define DOT11_ACTION_CAT_VSP 126 11516dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_ACTION_CAT_VS 127 11526dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 11536dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 11546dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_SM_ACTION_M_REQ 0 11556dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_SM_ACTION_M_REP 1 11566dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_SM_ACTION_TPC_REQ 2 11576dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_SM_ACTION_TPC_REP 3 11586dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_SM_ACTION_CHANNEL_SWITCH 4 11596dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_SM_ACTION_EXT_CSA 5 11606dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 11616dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 11626dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_ACTION_ID_HT_CH_WIDTH 0 11636dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_ACTION_ID_HT_MIMO_PS 1 11646dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 11656dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 11666dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_PUB_ACTION_BSS_COEX_MNG 0 11676dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_PUB_ACTION_CHANNEL_SWITCH 4 11686dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 11696dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 11706dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_BA_ACTION_ADDBA_REQ 0 11716dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_BA_ACTION_ADDBA_RESP 1 11726dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_BA_ACTION_DELBA 2 11736dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 11746dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 11756dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_ADDBA_PARAM_AMSDU_SUP 0x0001 11766dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_ADDBA_PARAM_POLICY_MASK 0x0002 11776dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_ADDBA_PARAM_POLICY_SHIFT 1 11786dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_ADDBA_PARAM_TID_MASK 0x003c 11796dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_ADDBA_PARAM_TID_SHIFT 2 11806dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_ADDBA_PARAM_BSIZE_MASK 0xffc0 11816dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_ADDBA_PARAM_BSIZE_SHIFT 6 11826dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 11836dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_ADDBA_POLICY_DELAYED 0 11846dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_ADDBA_POLICY_IMMEDIATE 1 11856dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 11866dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry ShmidtBWL_PRE_PACKED_STRUCT struct dot11_addba_req { 11876dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 category; 11886dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 action; 11896dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 token; 11906dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint16 addba_param_set; 11916dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint16 timeout; 11926dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint16 start_seqnum; 11936dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt} BWL_POST_PACKED_STRUCT; 11946dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidttypedef struct dot11_addba_req dot11_addba_req_t; 11956dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_ADDBA_REQ_LEN 9 11966dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 11976dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry ShmidtBWL_PRE_PACKED_STRUCT struct dot11_addba_resp { 11986dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 category; 11996dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 action; 12006dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 token; 12016dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint16 status; 12026dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint16 addba_param_set; 12036dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint16 timeout; 12046dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt} BWL_POST_PACKED_STRUCT; 12056dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidttypedef struct dot11_addba_resp dot11_addba_resp_t; 12066dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_ADDBA_RESP_LEN 9 12076dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 12086dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 12096dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_DELBA_PARAM_INIT_MASK 0x0800 12106dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_DELBA_PARAM_INIT_SHIFT 11 12116dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_DELBA_PARAM_TID_MASK 0xf000 12126dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_DELBA_PARAM_TID_SHIFT 12 12136dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 12146dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry ShmidtBWL_PRE_PACKED_STRUCT struct dot11_delba { 12156dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 category; 12166dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 action; 12176dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint16 delba_param_set; 12186dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint16 reason; 12196dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt} BWL_POST_PACKED_STRUCT; 12206dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidttypedef struct dot11_delba dot11_delba_t; 12216dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_DELBA_LEN 6 12226dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 12236dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 12246dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 12256dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 12266dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 12276dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_RRM_CAP_LEN 5 12286dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry ShmidtBWL_PRE_PACKED_STRUCT struct dot11_rrm_cap_ie { 12296dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 cap[DOT11_RRM_CAP_LEN]; 12306dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt} BWL_POST_PACKED_STRUCT; 12316dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidttypedef struct dot11_rrm_cap_ie dot11_rrm_cap_ie_t; 12326dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 12336dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 12346dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_RRM_CAP_LINK 0 12356dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_RRM_CAP_NEIGHBOR_REPORT 1 12366dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_RRM_CAP_PARALLEL 2 12376dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_RRM_CAP_REPEATED 3 12386dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_RRM_CAP_BCN_PASSIVE 4 12396dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_RRM_CAP_BCN_ACTIVE 5 12406dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_RRM_CAP_BCN_TABLE 6 12416dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_RRM_CAP_BCN_REP_COND 7 12426dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_RRM_CAP_AP_CHANREP 16 12436dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 12446dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 12456dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_RM_ACTION_RM_REQ 0 12466dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_RM_ACTION_RM_REP 1 12476dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_RM_ACTION_LM_REQ 2 12486dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_RM_ACTION_LM_REP 3 12496dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_RM_ACTION_NR_REQ 4 12506dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_RM_ACTION_NR_REP 5 12516dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 12526dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 12536dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry ShmidtBWL_PRE_PACKED_STRUCT struct dot11_rm_action { 12546dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 category; 12556dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 action; 12566dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 token; 12576dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 data[1]; 12586dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt} BWL_POST_PACKED_STRUCT; 12596dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidttypedef struct dot11_rm_action dot11_rm_action_t; 12606dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_RM_ACTION_LEN 3 12616dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 12626dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry ShmidtBWL_PRE_PACKED_STRUCT struct dot11_rmreq { 12636dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 category; 12646dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 action; 12656dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 token; 12666dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint16 reps; 12676dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt} BWL_POST_PACKED_STRUCT; 12686dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidttypedef struct dot11_rmreq dot11_rmreq_t; 12696dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_RMREQ_LEN 5 12706dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 12716dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry ShmidtBWL_PRE_PACKED_STRUCT struct dot11_rm_ie { 12726dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 id; 12736dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 len; 12746dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 token; 12756dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 mode; 12766dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 type; 12776dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt} BWL_POST_PACKED_STRUCT; 12786dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidttypedef struct dot11_rm_ie dot11_rm_ie_t; 12796dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_RM_IE_LEN 5 12806dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 12816dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 12826dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_RMREQ_MODE_PARALLEL 1 12836dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_RMREQ_MODE_ENABLE 2 12846dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_RMREQ_MODE_REQUEST 4 12856dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_RMREQ_MODE_REPORT 8 12866dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_RMREQ_MODE_DURMAND 0x10 12876dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 12886dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 12896dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_RMREP_MODE_LATE 1 12906dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_RMREP_MODE_INCAPABLE 2 12916dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_RMREP_MODE_REFUSED 4 12926dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 12936dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry ShmidtBWL_PRE_PACKED_STRUCT struct dot11_rmreq_bcn { 12946dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 id; 12956dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 len; 12966dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 token; 12976dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 mode; 12986dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 type; 12996dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 reg; 13006dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 channel; 13016dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint16 interval; 13026dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint16 duration; 13036dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 bcn_mode; 13046dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt struct ether_addr bssid; 13056dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt} BWL_POST_PACKED_STRUCT; 13066dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidttypedef struct dot11_rmreq_bcn dot11_rmreq_bcn_t; 13076dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_RMREQ_BCN_LEN 18 13086dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 13096dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry ShmidtBWL_PRE_PACKED_STRUCT struct dot11_rmrep_bcn { 13106dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 reg; 13116dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 channel; 13126dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint32 starttime[2]; 13136dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint16 duration; 13146dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 frame_info; 13156dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 rcpi; 13166dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 rsni; 13176dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt struct ether_addr bssid; 13186dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 antenna_id; 13196dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint32 parent_tsf; 13206dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt} BWL_POST_PACKED_STRUCT; 13216dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidttypedef struct dot11_rmrep_bcn dot11_rmrep_bcn_t; 13226dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_RMREP_BCN_LEN 26 13236dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 13246dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 13256dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_RMREQ_BCN_PASSIVE 0 13266dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_RMREQ_BCN_ACTIVE 1 13276dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_RMREQ_BCN_TABLE 2 13286dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 13296dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 13306dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_RMREQ_BCN_SSID_ID 0 13316dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_RMREQ_BCN_REPINFO_ID 1 13326dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_RMREQ_BCN_REPDET_ID 2 13336dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_RMREQ_BCN_REQUEST_ID 10 13346dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_RMREQ_BCN_APCHREP_ID 51 13356dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 13366dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 13376dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_RMREQ_BCN_REPDET_FIXED 0 13386dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_RMREQ_BCN_REPDET_REQUEST 1 13396dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_RMREQ_BCN_REPDET_ALL 2 13406dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 13416dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 13426dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_RMREP_BCN_FRM_BODY 1 13436dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 13446dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 13456dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry ShmidtBWL_PRE_PACKED_STRUCT struct dot11_rmrep_nbr { 13466dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt struct ether_addr bssid; 13476dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint32 bssid_info; 13486dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 reg; 13496dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 channel; 13506dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 phytype; 13516dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt} BWL_POST_PACKED_STRUCT; 13526dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidttypedef struct dot11_rmrep_nbr dot11_rmrep_nbr_t; 13536dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_RMREP_NBR_LEN 13 13546dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 13556dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 13566dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_BSSTYPE_INFRASTRUCTURE 0 13576dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_BSSTYPE_INDEPENDENT 1 13586dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_BSSTYPE_ANY 2 13596dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_SCANTYPE_ACTIVE 0 13606dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_SCANTYPE_PASSIVE 1 13616dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 13626dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 13636dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry ShmidtBWL_PRE_PACKED_STRUCT struct dot11_lmreq { 13646dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 category; 13656dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 action; 13666dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 token; 13676dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 txpwr; 13686dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 maxtxpwr; 13696dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt} BWL_POST_PACKED_STRUCT; 13706dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidttypedef struct dot11_lmreq dot11_lmreq_t; 13716dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_LMREQ_LEN 5 13726dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 13736dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry ShmidtBWL_PRE_PACKED_STRUCT struct dot11_lmrep { 13746dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 category; 13756dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 action; 13766dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 token; 13776dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt dot11_tpc_rep_t tpc; 13786dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 rxant; 13796dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 txant; 13806dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 rcpi; 13816dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 rsni; 13826dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt} BWL_POST_PACKED_STRUCT; 13836dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidttypedef struct dot11_lmrep dot11_lmrep_t; 13846dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_LMREP_LEN 11 13856dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 13866dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 13876dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define PREN_PREAMBLE 24 13886dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define PREN_MM_EXT 12 13896dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define PREN_PREAMBLE_EXT 4 13906dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 13916dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 13926dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define RIFS_11N_TIME 2 13936dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 13946dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 13956dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 13966dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_SIG1_MCS_MASK 0x00007F 13976dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_SIG1_CBW 0x000080 13986dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_SIG1_HT_LENGTH 0xFFFF00 13996dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 14006dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 14016dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_SIG2_SMOOTHING 0x000001 14026dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_SIG2_NOT_SOUNDING 0x000002 14036dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_SIG2_RESERVED 0x000004 14046dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_SIG2_AGGREGATION 0x000008 14056dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_SIG2_STBC_MASK 0x000030 14066dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_SIG2_STBC_SHIFT 4 14076dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_SIG2_FEC_CODING 0x000040 14086dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_SIG2_SHORT_GI 0x000080 14096dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_SIG2_ESS_MASK 0x000300 14106dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_SIG2_ESS_SHIFT 8 14116dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_SIG2_CRC 0x03FC00 14126dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_SIG2_TAIL 0x1C0000 14136dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 14146dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 14156dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define APHY_SLOT_TIME 9 14166dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define APHY_SIFS_TIME 16 14176dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define APHY_DIFS_TIME (APHY_SIFS_TIME + (2 * APHY_SLOT_TIME)) 14186dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define APHY_PREAMBLE_TIME 16 14196dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define APHY_SIGNAL_TIME 4 14206dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define APHY_SYMBOL_TIME 4 14216dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define APHY_SERVICE_NBITS 16 14226dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define APHY_TAIL_NBITS 6 14236dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define APHY_CWMIN 15 14246dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 14256dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 14266dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define BPHY_SLOT_TIME 20 14276dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define BPHY_SIFS_TIME 10 14286dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define BPHY_DIFS_TIME 50 14296dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define BPHY_PLCP_TIME 192 14306dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define BPHY_PLCP_SHORT_TIME 96 14316dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define BPHY_CWMIN 31 14326dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 14336dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 14346dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_OFDM_SIGNAL_EXTENSION 6 14356dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 14366dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define PHY_CWMAX 1023 14376dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 14386dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MAXNUMFRAGS 16 14396dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 14406dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 14416dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidttypedef struct d11cnt { 14426dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint32 txfrag; 14436dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint32 txmulti; 14446dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint32 txfail; 14456dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint32 txretry; 14466dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint32 txretrie; 14476dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint32 rxdup; 14486dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint32 txrts; 14496dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint32 txnocts; 14506dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint32 txnoack; 14516dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint32 rxfrag; 14526dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint32 rxmulti; 14536dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint32 rxcrc; 14546dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint32 txfrmsnt; 14556dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint32 rxundec; 14566dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt} d11cnt_t; 14576dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 14586dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 14596dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define BRCM_PROP_OUI "\x00\x90\x4C" 14606dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 14616dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 14626dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 14636dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define BRCM_OUI "\x00\x10\x18" 14646dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 14656dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 14666dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry ShmidtBWL_PRE_PACKED_STRUCT struct brcm_ie { 14676dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 id; 14686dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 len; 14696dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 oui[3]; 14706dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 ver; 14716dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 assoc; 14726dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 flags; 14736dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 flags1; 14746dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint16 amsdu_mtu_pref; 14756dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt} BWL_POST_PACKED_STRUCT; 14766dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidttypedef struct brcm_ie brcm_ie_t; 14776dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define BRCM_IE_LEN 11 14786dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define BRCM_IE_VER 2 14796dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define BRCM_IE_LEGACY_AES_VER 1 14806dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 14816dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 14826dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#ifdef WLAFTERBURNER 14836dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define BRF_ABCAP 0x1 14846dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define BRF_ABRQRD 0x2 14856dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define BRF_ABCOUNTER_MASK 0xf0 14866dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define BRF_ABCOUNTER_SHIFT 4 14876dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#endif 14886dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define BRF_LZWDS 0x4 14896dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define BRF_BLOCKACK 0x8 14906dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 14916dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 14926dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define BRF1_AMSDU 0x1 14936dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define BRF1_WMEPS 0x4 14946dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define BRF1_PSOFIX 0x8 14956dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define BRF1_RX_LARGE_AGG 0x10 14966dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define BRF1_SOFTAP 0x40 14976dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 14986dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#ifdef WLAFTERBURNER 14996dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define AB_WDS_TIMEOUT_MAX 15 15006dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define AB_WDS_TIMEOUT_MIN 1 15016dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#endif 15026dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 15036dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define AB_GUARDCOUNT 10 15046dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 15056dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 15066dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry ShmidtBWL_PRE_PACKED_STRUCT struct vndr_ie { 15076dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uchar id; 15086dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uchar len; 15096dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uchar oui [3]; 15106dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uchar data [1]; 15116dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt} BWL_POST_PACKED_STRUCT; 15126dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidttypedef struct vndr_ie vndr_ie_t; 15136dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 15146dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define VNDR_IE_HDR_LEN 2 15156dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define VNDR_IE_MIN_LEN 3 15166dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define VNDR_IE_MAX_LEN 256 15176dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 15186dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 15196dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define MCSSET_LEN 16 15206dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define MAX_MCS_NUM (128) 15216dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 15226dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry ShmidtBWL_PRE_PACKED_STRUCT struct ht_cap_ie { 15236dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint16 cap; 15246dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 params; 15256dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 supp_mcs[MCSSET_LEN]; 15266dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint16 ext_htcap; 15276dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint32 txbf_cap; 15286dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 as_cap; 15296dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt} BWL_POST_PACKED_STRUCT; 15306dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidttypedef struct ht_cap_ie ht_cap_ie_t; 15316dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 15326dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 15336dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 15346dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry ShmidtBWL_PRE_PACKED_STRUCT struct ht_prop_cap_ie { 15356dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 id; 15366dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 len; 15376dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 oui[3]; 15386dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 type; 15396dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt ht_cap_ie_t cap_ie; 15406dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt} BWL_POST_PACKED_STRUCT; 15416dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidttypedef struct ht_prop_cap_ie ht_prop_cap_ie_t; 15426dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 15436dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_PROP_IE_OVERHEAD 4 15446dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_CAP_IE_LEN 26 15456dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_CAP_IE_TYPE 51 15466dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 15476dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_CAP_LDPC_CODING 0x0001 15486dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_CAP_40MHZ 0x0002 15496dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_CAP_MIMO_PS_MASK 0x000C 15506dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_CAP_MIMO_PS_SHIFT 0x0002 15516dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_CAP_MIMO_PS_OFF 0x0003 15526dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_CAP_MIMO_PS_RTS 0x0001 15536dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_CAP_MIMO_PS_ON 0x0000 15546dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_CAP_GF 0x0010 15556dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_CAP_SHORT_GI_20 0x0020 15566dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_CAP_SHORT_GI_40 0x0040 15576dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_CAP_TX_STBC 0x0080 15586dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_CAP_RX_STBC_MASK 0x0300 15596dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_CAP_RX_STBC_SHIFT 8 15606dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_CAP_DELAYED_BA 0x0400 15616dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_CAP_MAX_AMSDU 0x0800 15626dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_CAP_DSSS_CCK 0x1000 15636dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_CAP_PSMP 0x2000 15646dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_CAP_40MHZ_INTOLERANT 0x4000 15656dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_CAP_LSIG_TXOP 0x8000 15666dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 15676dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_CAP_RX_STBC_NO 0x0 15686dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_CAP_RX_STBC_ONE_STREAM 0x1 15696dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_CAP_RX_STBC_TWO_STREAM 0x2 15706dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_CAP_RX_STBC_THREE_STREAM 0x3 15716dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 15726dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_MAX_AMSDU 7935 15736dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_MIN_AMSDU 3835 15746dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 15756dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_PARAMS_RX_FACTOR_MASK 0x03 15766dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_PARAMS_DENSITY_MASK 0x1C 15776dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_PARAMS_DENSITY_SHIFT 2 15786dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 15796dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 15806dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define AMPDU_MAX_MPDU_DENSITY 7 15816dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define AMPDU_RX_FACTOR_8K 0 15826dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define AMPDU_RX_FACTOR_16K 1 15836dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define AMPDU_RX_FACTOR_32K 2 15846dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define AMPDU_RX_FACTOR_64K 3 15856dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define AMPDU_RX_FACTOR_BASE 8*1024 15866dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 15876dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define AMPDU_DELIMITER_LEN 4 15886dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define AMPDU_DELIMITER_LEN_MAX 63 15896dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 15906dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry ShmidtBWL_PRE_PACKED_STRUCT struct ht_add_ie { 15916dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 ctl_ch; 15926dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 byte1; 15936dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint16 opmode; 15946dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint16 misc_bits; 15956dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 basic_mcs[MCSSET_LEN]; 15966dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt} BWL_POST_PACKED_STRUCT; 15976dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidttypedef struct ht_add_ie ht_add_ie_t; 15986dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 15996dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 16006dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 16016dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry ShmidtBWL_PRE_PACKED_STRUCT struct ht_prop_add_ie { 16026dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 id; 16036dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 len; 16046dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 oui[3]; 16056dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 type; 16066dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt ht_add_ie_t add_ie; 16076dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt} BWL_POST_PACKED_STRUCT; 16086dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidttypedef struct ht_prop_add_ie ht_prop_add_ie_t; 16096dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 16106dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_ADD_IE_LEN 22 16116dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_ADD_IE_TYPE 52 16126dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 16136dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 16146dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_BW_ANY 0x04 16156dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_RIFS_PERMITTED 0x08 16166dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 16176dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 16186dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_OPMODE_MASK 0x0003 16196dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_OPMODE_SHIFT 0 16206dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_OPMODE_PURE 0x0000 16216dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_OPMODE_OPTIONAL 0x0001 16226dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_OPMODE_HT20IN40 0x0002 16236dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_OPMODE_MIXED 0x0003 16246dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_OPMODE_NONGF 0x0004 16256dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11N_TXBURST 0x0008 16266dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11N_OBSS_NONHT 0x0010 16276dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 16286dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 16296dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_BASIC_STBC_MCS 0x007f 16306dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_DUAL_STBC_PROT 0x0080 16316dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_SECOND_BCN 0x0100 16326dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_LSIG_TXOP 0x0200 16336dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_PCO_ACTIVE 0x0400 16346dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_PCO_PHASE 0x0800 16356dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 16366dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 16376dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11N_2G_TXBURST_LIMIT 6160 16386dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11N_5G_TXBURST_LIMIT 3080 16396dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 16406dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 16416dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define GET_HT_OPMODE(add_ie) ((ltoh16_ua(&add_ie->opmode) & HT_OPMODE_MASK) \ 16426dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt >> HT_OPMODE_SHIFT) 16436dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_MIXEDMODE_PRESENT(add_ie) ((ltoh16_ua(&add_ie->opmode) & HT_OPMODE_MASK) \ 16446dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt == HT_OPMODE_MIXED) 16456dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_HT20_PRESENT(add_ie) ((ltoh16_ua(&add_ie->opmode) & HT_OPMODE_MASK) \ 16466dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt == HT_OPMODE_HT20IN40) 16476dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_OPTIONAL_PRESENT(add_ie) ((ltoh16_ua(&add_ie->opmode) & HT_OPMODE_MASK) \ 16486dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt == HT_OPMODE_OPTIONAL) 16496dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_USE_PROTECTION(add_ie) (HT_HT20_PRESENT((add_ie)) || \ 16506dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt HT_MIXEDMODE_PRESENT((add_ie))) 16516dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_NONGF_PRESENT(add_ie) ((ltoh16_ua(&add_ie->opmode) & HT_OPMODE_NONGF) \ 16526dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt == HT_OPMODE_NONGF) 16536dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11N_TXBURST_PRESENT(add_ie) ((ltoh16_ua(&add_ie->opmode) & DOT11N_TXBURST) \ 16546dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt == DOT11N_TXBURST) 16556dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11N_OBSS_NONHT_PRESENT(add_ie) ((ltoh16_ua(&add_ie->opmode) & DOT11N_OBSS_NONHT) \ 16566dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt == DOT11N_OBSS_NONHT) 16576dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 16586dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry ShmidtBWL_PRE_PACKED_STRUCT struct obss_params { 16596dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint16 passive_dwell; 16606dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint16 active_dwell; 16616dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint16 bss_widthscan_interval; 16626dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint16 passive_total; 16636dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint16 active_total; 16646dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint16 chanwidth_transition_dly; 16656dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint16 activity_threshold; 16666dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt} BWL_POST_PACKED_STRUCT; 16676dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidttypedef struct obss_params obss_params_t; 16686dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 16696dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry ShmidtBWL_PRE_PACKED_STRUCT struct dot11_obss_ie { 16706dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 id; 16716dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 len; 16726dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt obss_params_t obss_params; 16736dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt} BWL_POST_PACKED_STRUCT; 16746dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidttypedef struct dot11_obss_ie dot11_obss_ie_t; 16756dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_OBSS_SCAN_IE_LEN sizeof(obss_params_t) 16766dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 16776dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 16786dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_CTRL_LA_TRQ 0x00000002 16796dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_CTRL_LA_MAI 0x0000003C 16806dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_CTRL_LA_MAI_SHIFT 2 16816dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_CTRL_LA_MAI_MRQ 0x00000004 16826dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_CTRL_LA_MAI_MSI 0x00000038 16836dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_CTRL_LA_MFSI 0x000001C0 16846dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_CTRL_LA_MFSI_SHIFT 6 16856dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_CTRL_LA_MFB_ASELC 0x0000FE00 16866dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_CTRL_LA_MFB_ASELC_SH 9 16876dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_CTRL_LA_ASELC_CMD 0x00000C00 16886dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_CTRL_LA_ASELC_DATA 0x0000F000 16896dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_CTRL_CAL_POS 0x00030000 16906dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_CTRL_CAL_SEQ 0x000C0000 16916dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_CTRL_CSI_STEERING 0x00C00000 16926dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_CTRL_CSI_STEER_SHIFT 22 16936dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_CTRL_CSI_STEER_NFB 0 16946dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_CTRL_CSI_STEER_CSI 1 16956dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_CTRL_CSI_STEER_NCOM 2 16966dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_CTRL_CSI_STEER_COM 3 16976dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_CTRL_NDP_ANNOUNCE 0x01000000 16986dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_CTRL_AC_CONSTRAINT 0x40000000 16996dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_CTRL_RDG_MOREPPDU 0x80000000 17006dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 17016dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_OPMODE_OPTIONAL 0x0001 17026dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_OPMODE_HT20IN40 0x0002 17036dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_OPMODE_MIXED 0x0003 17046dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define HT_OPMODE_NONGF 0x0004 17056dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11N_TXBURST 0x0008 17066dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11N_OBSS_NONHT 0x0010 17076dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 17086dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 17096dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 17106dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define WPA_OUI "\x00\x50\xF2" 17116dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define WPA_OUI_LEN 3 17126dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define WPA_OUI_TYPE 1 17136dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define WPA_VERSION 1 17146dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define WPA2_OUI "\x00\x0F\xAC" 17156dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define WPA2_OUI_LEN 3 17166dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define WPA2_VERSION 1 17176dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define WPA2_VERSION_LEN 2 17186dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 17196dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 17206dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define WPS_OUI "\x00\x50\xF2" 17216dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define WPS_OUI_LEN 3 17226dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define WPS_OUI_TYPE 4 17236dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 17246dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 17256dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define WFA_OUI "\x50\x6F\x9A" 17266dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define WFA_OUI_LEN 3 17276dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 17286dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define WFA_OUI_TYPE_WPA 1 17296dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define WFA_OUI_TYPE_WPS 4 17306dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define WFA_OUI_TYPE_TPC 8 17316dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define WFA_OUI_TYPE_P2P 9 17326dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 17336dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 17346dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define RSN_AKM_NONE 0 17356dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define RSN_AKM_UNSPECIFIED 1 17366dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define RSN_AKM_PSK 2 17376dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define RSN_AKM_FBT_1X 3 17386dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define RSN_AKM_FBT_PSK 4 17396dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 17406dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 17416dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MAX_DEFAULT_KEYS 4 17426dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MAX_KEY_SIZE 32 17436dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_MAX_IV_SIZE 16 17446dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_EXT_IV_FLAG (1<<5) 17456dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_WPA_KEY_RSC_LEN 8 17466dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 17476dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define WEP1_KEY_SIZE 5 17486dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define WEP1_KEY_HEX_SIZE 10 17496dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define WEP128_KEY_SIZE 13 17506dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define WEP128_KEY_HEX_SIZE 26 17516dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define TKIP_MIC_SIZE 8 17526dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define TKIP_EOM_SIZE 7 17536dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define TKIP_EOM_FLAG 0x5a 17546dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define TKIP_KEY_SIZE 32 17556dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define TKIP_MIC_AUTH_TX 16 17566dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define TKIP_MIC_AUTH_RX 24 17576dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define TKIP_MIC_SUP_RX TKIP_MIC_AUTH_TX 17586dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define TKIP_MIC_SUP_TX TKIP_MIC_AUTH_RX 17596dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define AES_KEY_SIZE 16 17606dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define AES_MIC_SIZE 8 17616dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 17626dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 17636dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define WCN_OUI "\x00\x50\xf2" 17646dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define WCN_TYPE 4 17656dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 17666dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 17676dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 17686dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 17696dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 17706dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry ShmidtBWL_PRE_PACKED_STRUCT struct dot11_mdid_ie { 17716dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 id; 17726dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 len; 17736dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint16 mdid; 17746dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 cap; 17756dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt} BWL_POST_PACKED_STRUCT; 17766dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidttypedef struct dot11_mdid_ie dot11_mdid_ie_t; 17776dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 17786dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FBT_MDID_CAP_OVERDS 0x01 17796dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define FBT_MDID_CAP_RRP 0x02 17806dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 17816dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 17826dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry ShmidtBWL_PRE_PACKED_STRUCT struct dot11_ft_ie { 17836dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 id; 17846dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 len; 17856dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint16 mic_control; 17866dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 mic[16]; 17876dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 anonce[32]; 17886dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 snonce[32]; 17896dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt} BWL_POST_PACKED_STRUCT; 17906dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidttypedef struct dot11_ft_ie dot11_ft_ie_t; 17916dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 17926dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 17936dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry ShmidtBWL_PRE_PACKED_STRUCT struct dot11_gtk_ie { 17946dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 id; 17956dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 len; 17966dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint16 key_info; 17976dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 key_len; 17986dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 rsc[8]; 17996dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 data[1]; 18006dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt} BWL_POST_PACKED_STRUCT; 18016dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidttypedef struct dot11_gtk_ie dot11_gtk_ie_t; 18026dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 18036dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 18046dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 18056dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#include <packed_section_end.h> 18066dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt 18076dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#endif 1808