X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=include%2Flinux%2Fieee80211.h;h=94bd4bbcbed5ff5ce33eb1f88a9f3a20fcb02b9a;hb=9869147bf29b14700f1f2f32e3c4d774d60b8109;hp=4550eb7a3fd470943c090b27fd3a94d57a60b524;hpb=b1d888b7631fee5b83f9be6572ebeccac4f9a872;p=carl9170fw.git diff --git a/include/linux/ieee80211.h b/include/linux/ieee80211.h index 4550eb7..94bd4bb 100644 --- a/include/linux/ieee80211.h +++ b/include/linux/ieee80211.h @@ -179,6 +179,8 @@ static inline u16 ieee80211_sn_sub(u16 sn1, u16 sn2) /* number of user priorities 802.11 uses */ #define IEEE80211_NUM_UPS 8 +/* number of ACs */ +#define IEEE80211_NUM_ACS 4 #define IEEE80211_QOS_CTL_LEN 2 /* 1d tag mask */ @@ -1594,6 +1596,9 @@ struct ieee80211_vht_operation { #define WLAN_AUTH_SHARED_KEY 1 #define WLAN_AUTH_FT 2 #define WLAN_AUTH_SAE 3 +#define WLAN_AUTH_FILS_SK 4 +#define WLAN_AUTH_FILS_SK_PFS 5 +#define WLAN_AUTH_FILS_PK 6 #define WLAN_AUTH_LEAP 128 #define WLAN_AUTH_CHALLENGE_LEN 128 @@ -1978,6 +1983,26 @@ enum ieee80211_eid { WLAN_EID_VENDOR_SPECIFIC = 221, WLAN_EID_QOS_PARAMETER = 222, + WLAN_EID_CAG_NUMBER = 237, + WLAN_EID_AP_CSN = 239, + WLAN_EID_FILS_INDICATION = 240, + WLAN_EID_DILS = 241, + WLAN_EID_FRAGMENT = 242, + WLAN_EID_EXTENSION = 255 +}; + +/* Element ID Extensions for Element ID 255 */ +enum ieee80211_eid_ext { + WLAN_EID_EXT_ASSOC_DELAY_INFO = 1, + WLAN_EID_EXT_FILS_REQ_PARAMS = 2, + WLAN_EID_EXT_FILS_KEY_CONFIRM = 3, + WLAN_EID_EXT_FILS_SESSION = 4, + WLAN_EID_EXT_FILS_HLP_CONTAINER = 5, + WLAN_EID_EXT_FILS_IP_ADDR_ASSIGN = 6, + WLAN_EID_EXT_KEY_DELIVERY = 7, + WLAN_EID_EXT_FILS_WRAPPED_DATA = 8, + WLAN_EID_EXT_FILS_PUBLIC_KEY = 12, + WLAN_EID_EXT_FILS_NONCE = 13, }; /* Action category code */ @@ -2091,6 +2116,9 @@ enum ieee80211_key_len { #define IEEE80211_GCMP_MIC_LEN 16 #define IEEE80211_GCMP_PN_LEN 6 +#define FILS_NONCE_LEN 16 +#define FILS_MAX_KEK_LEN 64 + /* Public action codes */ enum ieee80211_pub_actioncode { WLAN_PUB_ACTION_EXT_CHANSW_ANN = 4, @@ -2491,12 +2519,17 @@ static inline bool ieee80211_is_public_action(struct ieee80211_hdr *hdr, return mgmt->u.action.category == WLAN_CATEGORY_PUBLIC; } +static inline bool is_multicast_ether_addr(const u8 *a) +{ + return 0x01 & a[0]; +} + /** * _ieee80211_is_group_privacy_action - check if frame is a group addressed * privacy action frame * @hdr: the frame */ -static inline bool _ieee80211_is_group_privacy_action(struct ieee80211_hdr *hdr) +static inline bool ieee80211_is_group_privacy_action(struct ieee80211_hdr *hdr) { struct ieee80211_mgmt *mgmt = (void *)hdr; @@ -2508,18 +2541,6 @@ static inline bool _ieee80211_is_group_privacy_action(struct ieee80211_hdr *hdr) mgmt->u.action.category == WLAN_CATEGORY_MULTIHOP_ACTION; } -/** - * ieee80211_is_group_privacy_action - check if frame is a group addressed - * privacy action frame - * @skb: the skb containing the frame, length will be checked - */ -static inline bool ieee80211_is_group_privacy_action(struct sk_buff *skb) -{ - if (skb->len < IEEE80211_MIN_ACTION_SIZE) - return false; - return _ieee80211_is_group_privacy_action((void *)skb->data); -} - /** * ieee80211_tu_to_usec - convert time units (TU) to microseconds * @tu: the TUs