X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=include%2Flinux%2Fieee80211.h;h=e9efbafd24fa461a69cda813e7ee9850850d6991;hb=c60a8805f6ac6d6ff054c3ab39af6146bb1bc223;hp=31c59eac2b59fea407bdbeab861d45c93a9fdc0d;hpb=7138f716f5d7e978d6a510409ea1e4fc03665b80;p=carl9170fw.git diff --git a/include/linux/ieee80211.h b/include/linux/ieee80211.h index 31c59ea..e9efbaf 100644 --- a/include/linux/ieee80211.h +++ b/include/linux/ieee80211.h @@ -8,6 +8,7 @@ * Copyright (c) 2006, Michael Wu * Copyright (c) 2013 - 2014 Intel Mobile Communications GmbH * Copyright (c) 2016 - 2017 Intel Deutschland GmbH + * Copyright (c) 2018 Intel Corporation * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as @@ -897,33 +898,33 @@ struct ieee80211_mgmt { __le16 status_code; /* possibly followed by Challenge text */ u8 variable[0]; - } __packed auth; + } __packed __aligned(4) auth; struct { __le16 reason_code; - } __packed deauth; + } __packed __aligned(4) deauth; struct { __le16 capab_info; __le16 listen_interval; /* followed by SSID and Supported rates */ u8 variable[0]; - } __packed assoc_req; + } __packed __aligned(4) assoc_req; struct { __le16 capab_info; __le16 status_code; __le16 aid; /* followed by Supported rates */ u8 variable[0]; - } __packed assoc_resp, reassoc_resp; + } __packed __aligned(4) assoc_resp, reassoc_resp; struct { __le16 capab_info; __le16 listen_interval; u8 current_ap[6]; /* followed by SSID and Supported rates */ u8 variable[0]; - } __packed reassoc_req; + } __packed __aligned(4) reassoc_req; struct { __le16 reason_code; - } __packed disassoc; + } __packed __aligned(4) disassoc; struct { __le64 timestamp; __le16 beacon_int; @@ -931,11 +932,11 @@ struct ieee80211_mgmt { /* followed by some of SSID, Supported rates, * FH Params, DS Params, CF Params, IBSS Params, TIM */ u8 variable[0]; - } __packed beacon; + } __packed __aligned(4) beacon; struct { /* only variable items: SSID, Supported rates */ u8 variable[0]; - } __packed probe_req; + } __packed __aligned(4) probe_req; struct { __le64 timestamp; __le16 beacon_int; @@ -943,7 +944,7 @@ struct ieee80211_mgmt { /* followed by some of SSID, Supported rates, * FH Params, DS Params, CF Params, IBSS Params */ u8 variable[0]; - } __packed probe_resp; + } __packed __aligned(4) probe_resp; struct { u8 category; union { @@ -1041,8 +1042,8 @@ struct ieee80211_mgmt { u8 variable[0]; } __packed ftm; } u; - } __packed action; - } u; + } __packed __aligned(4) action; + } u __aligned(2); } __packed __aligned(2); /* Supported rates membership selectors */ @@ -1245,7 +1246,7 @@ struct ieee80211_bar { __u8 ta[6]; __le16 control; __le16 start_seq_num; -} __packed __aligned(4); +} __packed __aligned(2); /* 802.11 BA(R) control masks */ #define IEEE80211_BAR_CTRL_ACK_POLICY_NORMAL 0x0000 @@ -2129,7 +2130,7 @@ enum ieee80211_key_len { #define FILS_ERP_MAX_REALM_LEN 253 #define FILS_ERP_MAX_RRK_LEN 64 -#define PMK_MAX_LEN 48 +#define PMK_MAX_LEN 64 /* Public action codes (IEEE Std 802.11-2016, 9.6.8.1, Table 9-307) */ enum ieee80211_pub_actioncode { @@ -2518,6 +2519,17 @@ static inline u8 *ieee80211_get_qos_ctl(struct ieee80211_hdr *hdr) return (u8 *)hdr + 24; } +/** + * ieee80211_get_tid - get qos TID + * @hdr: the frame + */ +static inline u8 ieee80211_get_tid(struct ieee80211_hdr *hdr) +{ + u8 *qc = ieee80211_get_qos_ctl(hdr); + + return qc[0] & IEEE80211_QOS_CTL_TID_MASK; +} + /** * ieee80211_get_SA - get pointer to SA * @hdr: the frame