* Copyright (c) 2006, Michael Wu <flamingice@sourmilk.net>
* 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
__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;
/* 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;
/* 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 {
u8 variable[0];
} __packed ftm;
} u;
- } __packed action;
- } u;
+ } __packed __aligned(4) action;
+ } u __aligned(2);
} __packed __aligned(2);
/* Supported rates membership selectors */
__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
#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 {
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