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