[net80211] Add fields to decode uAPSD fields.

It turns out that madwifi actually has the basics for uAPSD implemented
but it was never ported to FreeBSD.  I may eventually port most of the
pieces; I'll see how it goes!

Obtained from:	Madwifi
This commit is contained in:
Adrian Chadd 2016-03-30 00:42:18 +00:00
parent 47d2d39111
commit 275b79bd9b

View File

@ -316,6 +316,27 @@ struct ieee80211_wme_param {
struct ieee80211_wme_acparams params_acParams[WME_NUM_AC];
} __packed;
/*
* WME U-APSD qos info field defines
*/
#define WME_CAPINFO_UAPSD_EN 0x00000080
#define WME_CAPINFO_UAPSD_VO 0x00000001
#define WME_CAPINFO_UAPSD_VI 0x00000002
#define WME_CAPINFO_UAPSD_BK 0x00000004
#define WME_CAPINFO_UAPSD_BE 0x00000008
#define WME_CAPINFO_UAPSD_ACFLAGS_SHIFT 0
#define WME_CAPINFO_UAPSD_ACFLAGS_MASK 0xF
#define WME_CAPINFO_UAPSD_MAXSP_SHIFT 5
#define WME_CAPINFO_UAPSD_MAXSP_MASK 0x3
#define WME_CAPINFO_IE_OFFSET 8
#define WME_UAPSD_MAXSP(_qosinfo) \
(((_qosinfo) >> WME_CAPINFO_UAPSD_MAXSP_SHIFT) & \
WME_CAPINFO_UAPSD_MAXSP_MASK)
#define WME_UAPSD_AC_ENABLED(_ac, _qosinfo) \
((1 << (3 - (_ac))) & ( \
((_qosinfo) >> WME_CAPINFO_UAPSD_ACFLAGS_SHIFT) & \
WME_CAPINFO_UAPSD_ACFLAGS_MASK))
/*
* Management Notification Frame
*/