|
|
@@ -28,6 +28,33 @@
|
|
|
if (rate_flags & IEEE80211_TX_RC_USE_RTS_CTS) {
|
|
|
--- a/include/net/mac80211.h
|
|
|
+++ b/include/net/mac80211.h
|
|
|
+@@ -173,7 +173,7 @@ struct ieee80211_chanctx_conf {
|
|
|
+
|
|
|
+ u8 rx_chains_static, rx_chains_dynamic;
|
|
|
+
|
|
|
+- u8 drv_priv[0] __attribute__((__aligned__(sizeof(void *))));
|
|
|
++ u8 drv_priv[0] __aligned(sizeof(void *));
|
|
|
+ };
|
|
|
+
|
|
|
+ /**
|
|
|
+@@ -1059,7 +1059,7 @@ struct ieee80211_vif {
|
|
|
+ u32 driver_flags;
|
|
|
+
|
|
|
+ /* must be last */
|
|
|
+- u8 drv_priv[0] __attribute__((__aligned__(sizeof(void *))));
|
|
|
++ u8 drv_priv[0] __aligned(sizeof(void *));
|
|
|
+ };
|
|
|
+
|
|
|
+ static inline bool ieee80211_vif_is_mesh(struct ieee80211_vif *vif)
|
|
|
+@@ -1209,7 +1209,7 @@ struct ieee80211_sta {
|
|
|
+ u8 max_sp;
|
|
|
+
|
|
|
+ /* must be last */
|
|
|
+- u8 drv_priv[0] __attribute__((__aligned__(sizeof(void *))));
|
|
|
++ u8 drv_priv[0] __aligned(sizeof(void *));
|
|
|
+ };
|
|
|
+
|
|
|
+ /**
|
|
|
@@ -1369,6 +1369,10 @@ struct ieee80211_tx_control {
|
|
|
* @IEEE80211_HW_P2P_DEV_ADDR_FOR_INTF: Use the P2P Device address for any
|
|
|
* P2P Interface. This will be honoured even if more than one interface
|
|
|
@@ -826,3 +853,354 @@
|
|
|
|
|
|
void ieee80211_recalc_smps_chanctx(struct ieee80211_local *local,
|
|
|
struct ieee80211_chanctx *chanctx);
|
|
|
+--- a/include/linux/ieee80211.h
|
|
|
++++ b/include/linux/ieee80211.h
|
|
|
+@@ -180,7 +180,7 @@ struct ieee80211_hdr {
|
|
|
+ u8 addr3[6];
|
|
|
+ __le16 seq_ctrl;
|
|
|
+ u8 addr4[6];
|
|
|
+-} __attribute__ ((packed));
|
|
|
++} __packed;
|
|
|
+
|
|
|
+ struct ieee80211_hdr_3addr {
|
|
|
+ __le16 frame_control;
|
|
|
+@@ -189,7 +189,7 @@ struct ieee80211_hdr_3addr {
|
|
|
+ u8 addr2[6];
|
|
|
+ u8 addr3[6];
|
|
|
+ __le16 seq_ctrl;
|
|
|
+-} __attribute__ ((packed));
|
|
|
++} __packed;
|
|
|
+
|
|
|
+ struct ieee80211_qos_hdr {
|
|
|
+ __le16 frame_control;
|
|
|
+@@ -199,7 +199,7 @@ struct ieee80211_qos_hdr {
|
|
|
+ u8 addr3[6];
|
|
|
+ __le16 seq_ctrl;
|
|
|
+ __le16 qos_ctrl;
|
|
|
+-} __attribute__ ((packed));
|
|
|
++} __packed;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * ieee80211_has_tods - check if IEEE80211_FCTL_TODS is set
|
|
|
+@@ -576,7 +576,7 @@ struct ieee80211s_hdr {
|
|
|
+ __le32 seqnum;
|
|
|
+ u8 eaddr1[6];
|
|
|
+ u8 eaddr2[6];
|
|
|
+-} __attribute__ ((packed));
|
|
|
++} __packed;
|
|
|
+
|
|
|
+ /* Mesh flags */
|
|
|
+ #define MESH_FLAGS_AE_A4 0x1
|
|
|
+@@ -614,7 +614,7 @@ struct ieee80211_quiet_ie {
|
|
|
+ u8 period;
|
|
|
+ __le16 duration;
|
|
|
+ __le16 offset;
|
|
|
+-} __attribute__ ((packed));
|
|
|
++} __packed;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * struct ieee80211_msrment_ie
|
|
|
+@@ -626,7 +626,7 @@ struct ieee80211_msrment_ie {
|
|
|
+ u8 mode;
|
|
|
+ u8 type;
|
|
|
+ u8 request[0];
|
|
|
+-} __attribute__ ((packed));
|
|
|
++} __packed;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * struct ieee80211_channel_sw_ie
|
|
|
+@@ -637,7 +637,7 @@ struct ieee80211_channel_sw_ie {
|
|
|
+ u8 mode;
|
|
|
+ u8 new_ch_num;
|
|
|
+ u8 count;
|
|
|
+-} __attribute__ ((packed));
|
|
|
++} __packed;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * struct ieee80211_tim
|
|
|
+@@ -650,7 +650,7 @@ struct ieee80211_tim_ie {
|
|
|
+ u8 bitmap_ctrl;
|
|
|
+ /* variable size: 1 - 251 bytes */
|
|
|
+ u8 virtual_map[1];
|
|
|
+-} __attribute__ ((packed));
|
|
|
++} __packed;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * struct ieee80211_meshconf_ie
|
|
|
+@@ -665,7 +665,7 @@ struct ieee80211_meshconf_ie {
|
|
|
+ u8 meshconf_auth;
|
|
|
+ u8 meshconf_form;
|
|
|
+ u8 meshconf_cap;
|
|
|
+-} __attribute__ ((packed));
|
|
|
++} __packed;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * enum mesh_config_capab_flags - Mesh Configuration IE capability field flags
|
|
|
+@@ -695,7 +695,7 @@ struct ieee80211_rann_ie {
|
|
|
+ __le32 rann_seq;
|
|
|
+ __le32 rann_interval;
|
|
|
+ __le32 rann_metric;
|
|
|
+-} __attribute__ ((packed));
|
|
|
++} __packed;
|
|
|
+
|
|
|
+ enum ieee80211_rann_flags {
|
|
|
+ RANN_FLAG_IS_GATE = 1 << 0,
|
|
|
+@@ -717,33 +717,33 @@ struct ieee80211_mgmt {
|
|
|
+ __le16 status_code;
|
|
|
+ /* possibly followed by Challenge text */
|
|
|
+ u8 variable[0];
|
|
|
+- } __attribute__ ((packed)) auth;
|
|
|
++ } __packed auth;
|
|
|
+ struct {
|
|
|
+ __le16 reason_code;
|
|
|
+- } __attribute__ ((packed)) deauth;
|
|
|
++ } __packed deauth;
|
|
|
+ struct {
|
|
|
+ __le16 capab_info;
|
|
|
+ __le16 listen_interval;
|
|
|
+ /* followed by SSID and Supported rates */
|
|
|
+ u8 variable[0];
|
|
|
+- } __attribute__ ((packed)) assoc_req;
|
|
|
++ } __packed assoc_req;
|
|
|
+ struct {
|
|
|
+ __le16 capab_info;
|
|
|
+ __le16 status_code;
|
|
|
+ __le16 aid;
|
|
|
+ /* followed by Supported rates */
|
|
|
+ u8 variable[0];
|
|
|
+- } __attribute__ ((packed)) assoc_resp, reassoc_resp;
|
|
|
++ } __packed assoc_resp, reassoc_resp;
|
|
|
+ struct {
|
|
|
+ __le16 capab_info;
|
|
|
+ __le16 listen_interval;
|
|
|
+ u8 current_ap[6];
|
|
|
+ /* followed by SSID and Supported rates */
|
|
|
+ u8 variable[0];
|
|
|
+- } __attribute__ ((packed)) reassoc_req;
|
|
|
++ } __packed reassoc_req;
|
|
|
+ struct {
|
|
|
+ __le16 reason_code;
|
|
|
+- } __attribute__ ((packed)) disassoc;
|
|
|
++ } __packed disassoc;
|
|
|
+ struct {
|
|
|
+ __le64 timestamp;
|
|
|
+ __le16 beacon_int;
|
|
|
+@@ -751,11 +751,11 @@ struct ieee80211_mgmt {
|
|
|
+ /* followed by some of SSID, Supported rates,
|
|
|
+ * FH Params, DS Params, CF Params, IBSS Params, TIM */
|
|
|
+ u8 variable[0];
|
|
|
+- } __attribute__ ((packed)) beacon;
|
|
|
++ } __packed beacon;
|
|
|
+ struct {
|
|
|
+ /* only variable items: SSID, Supported rates */
|
|
|
+ u8 variable[0];
|
|
|
+- } __attribute__ ((packed)) probe_req;
|
|
|
++ } __packed probe_req;
|
|
|
+ struct {
|
|
|
+ __le64 timestamp;
|
|
|
+ __le16 beacon_int;
|
|
|
+@@ -763,7 +763,7 @@ struct ieee80211_mgmt {
|
|
|
+ /* followed by some of SSID, Supported rates,
|
|
|
+ * FH Params, DS Params, CF Params, IBSS Params */
|
|
|
+ u8 variable[0];
|
|
|
+- } __attribute__ ((packed)) probe_resp;
|
|
|
++ } __packed probe_resp;
|
|
|
+ struct {
|
|
|
+ u8 category;
|
|
|
+ union {
|
|
|
+@@ -772,55 +772,55 @@ struct ieee80211_mgmt {
|
|
|
+ u8 dialog_token;
|
|
|
+ u8 status_code;
|
|
|
+ u8 variable[0];
|
|
|
+- } __attribute__ ((packed)) wme_action;
|
|
|
++ } __packed wme_action;
|
|
|
+ struct{
|
|
|
+ u8 action_code;
|
|
|
+ u8 element_id;
|
|
|
+ u8 length;
|
|
|
+ struct ieee80211_channel_sw_ie sw_elem;
|
|
|
+- } __attribute__((packed)) chan_switch;
|
|
|
++ } __packed chan_switch;
|
|
|
+ struct{
|
|
|
+ u8 action_code;
|
|
|
+ u8 dialog_token;
|
|
|
+ u8 element_id;
|
|
|
+ u8 length;
|
|
|
+ struct ieee80211_msrment_ie msr_elem;
|
|
|
+- } __attribute__((packed)) measurement;
|
|
|
++ } __packed measurement;
|
|
|
+ struct{
|
|
|
+ u8 action_code;
|
|
|
+ u8 dialog_token;
|
|
|
+ __le16 capab;
|
|
|
+ __le16 timeout;
|
|
|
+ __le16 start_seq_num;
|
|
|
+- } __attribute__((packed)) addba_req;
|
|
|
++ } __packed addba_req;
|
|
|
+ struct{
|
|
|
+ u8 action_code;
|
|
|
+ u8 dialog_token;
|
|
|
+ __le16 status;
|
|
|
+ __le16 capab;
|
|
|
+ __le16 timeout;
|
|
|
+- } __attribute__((packed)) addba_resp;
|
|
|
++ } __packed addba_resp;
|
|
|
+ struct{
|
|
|
+ u8 action_code;
|
|
|
+ __le16 params;
|
|
|
+ __le16 reason_code;
|
|
|
+- } __attribute__((packed)) delba;
|
|
|
++ } __packed delba;
|
|
|
+ struct {
|
|
|
+ u8 action_code;
|
|
|
+ u8 variable[0];
|
|
|
+- } __attribute__((packed)) self_prot;
|
|
|
++ } __packed self_prot;
|
|
|
+ struct{
|
|
|
+ u8 action_code;
|
|
|
+ u8 variable[0];
|
|
|
+- } __attribute__((packed)) mesh_action;
|
|
|
++ } __packed mesh_action;
|
|
|
+ struct {
|
|
|
+ u8 action;
|
|
|
+ u8 trans_id[WLAN_SA_QUERY_TR_ID_LEN];
|
|
|
+- } __attribute__ ((packed)) sa_query;
|
|
|
++ } __packed sa_query;
|
|
|
+ struct {
|
|
|
+ u8 action;
|
|
|
+ u8 smps_control;
|
|
|
+- } __attribute__ ((packed)) ht_smps;
|
|
|
++ } __packed ht_smps;
|
|
|
+ struct {
|
|
|
+ u8 action_code;
|
|
|
+ u8 dialog_token;
|
|
|
+@@ -828,9 +828,9 @@ struct ieee80211_mgmt {
|
|
|
+ u8 variable[0];
|
|
|
+ } __packed tdls_discover_resp;
|
|
|
+ } u;
|
|
|
+- } __attribute__ ((packed)) action;
|
|
|
++ } __packed action;
|
|
|
+ } u;
|
|
|
+-} __attribute__ ((packed));
|
|
|
++} __packed;
|
|
|
+
|
|
|
+ /* Supported Rates value encodings in 802.11n-2009 7.3.2.2 */
|
|
|
+ #define BSS_MEMBERSHIP_SELECTOR_HT_PHY 127
|
|
|
+@@ -846,7 +846,7 @@ struct ieee80211_mmie {
|
|
|
+ __le16 key_id;
|
|
|
+ u8 sequence_number[6];
|
|
|
+ u8 mic[8];
|
|
|
+-} __attribute__ ((packed));
|
|
|
++} __packed;
|
|
|
+
|
|
|
+ struct ieee80211_vendor_ie {
|
|
|
+ u8 element_id;
|
|
|
+@@ -861,20 +861,20 @@ struct ieee80211_rts {
|
|
|
+ __le16 duration;
|
|
|
+ u8 ra[6];
|
|
|
+ u8 ta[6];
|
|
|
+-} __attribute__ ((packed));
|
|
|
++} __packed;
|
|
|
+
|
|
|
+ struct ieee80211_cts {
|
|
|
+ __le16 frame_control;
|
|
|
+ __le16 duration;
|
|
|
+ u8 ra[6];
|
|
|
+-} __attribute__ ((packed));
|
|
|
++} __packed;
|
|
|
+
|
|
|
+ struct ieee80211_pspoll {
|
|
|
+ __le16 frame_control;
|
|
|
+ __le16 aid;
|
|
|
+ u8 bssid[6];
|
|
|
+ u8 ta[6];
|
|
|
+-} __attribute__ ((packed));
|
|
|
++} __packed;
|
|
|
+
|
|
|
+ /* TDLS */
|
|
|
+
|
|
|
+@@ -967,7 +967,7 @@ struct ieee80211_bar {
|
|
|
+ __u8 ta[6];
|
|
|
+ __le16 control;
|
|
|
+ __le16 start_seq_num;
|
|
|
+-} __attribute__((packed));
|
|
|
++} __packed;
|
|
|
+
|
|
|
+ /* 802.11 BAR control masks */
|
|
|
+ #define IEEE80211_BAR_CTRL_ACK_POLICY_NORMAL 0x0000
|
|
|
+@@ -992,7 +992,7 @@ struct ieee80211_mcs_info {
|
|
|
+ __le16 rx_highest;
|
|
|
+ u8 tx_params;
|
|
|
+ u8 reserved[3];
|
|
|
+-} __attribute__((packed));
|
|
|
++} __packed;
|
|
|
+
|
|
|
+ /* 802.11n HT capability MSC set */
|
|
|
+ #define IEEE80211_HT_MCS_RX_HIGHEST_MASK 0x3ff
|
|
|
+@@ -1031,7 +1031,7 @@ struct ieee80211_ht_cap {
|
|
|
+ __le16 extended_ht_cap_info;
|
|
|
+ __le32 tx_BF_cap_info;
|
|
|
+ u8 antenna_selection_info;
|
|
|
+-} __attribute__ ((packed));
|
|
|
++} __packed;
|
|
|
+
|
|
|
+ /* 802.11n HT capabilities masks (for cap_info) */
|
|
|
+ #define IEEE80211_HT_CAP_LDPC_CODING 0x0001
|
|
|
+@@ -1102,7 +1102,7 @@ struct ieee80211_ht_operation {
|
|
|
+ __le16 operation_mode;
|
|
|
+ __le16 stbc_param;
|
|
|
+ u8 basic_set[16];
|
|
|
+-} __attribute__ ((packed));
|
|
|
++} __packed;
|
|
|
+
|
|
|
+ /* for ht_param */
|
|
|
+ #define IEEE80211_HT_PARAM_CHA_SEC_OFFSET 0x03
|
|
|
+@@ -1832,14 +1832,14 @@ struct ieee80211_country_ie_triplet {
|
|
|
+ u8 first_channel;
|
|
|
+ u8 num_channels;
|
|
|
+ s8 max_power;
|
|
|
+- } __attribute__ ((packed)) chans;
|
|
|
++ } __packed chans;
|
|
|
+ struct {
|
|
|
+ u8 reg_extension_id;
|
|
|
+ u8 reg_class;
|
|
|
+ u8 coverage_class;
|
|
|
+- } __attribute__ ((packed)) ext;
|
|
|
++ } __packed ext;
|
|
|
+ };
|
|
|
+-} __attribute__ ((packed));
|
|
|
++} __packed;
|
|
|
+
|
|
|
+ enum ieee80211_timeout_interval_type {
|
|
|
+ WLAN_TIMEOUT_REASSOC_DEADLINE = 1 /* 802.11r */,
|
|
|
+--- a/include/net/cfg80211.h
|
|
|
++++ b/include/net/cfg80211.h
|
|
|
+@@ -1256,7 +1256,7 @@ struct cfg80211_bss {
|
|
|
+
|
|
|
+ u8 bssid[ETH_ALEN];
|
|
|
+
|
|
|
+- u8 priv[0] __attribute__((__aligned__(sizeof(void *))));
|
|
|
++ u8 priv[0] __aligned(sizeof(void *));
|
|
|
+ };
|
|
|
+
|
|
|
+ /**
|
|
|
+@@ -2395,7 +2395,7 @@ struct wiphy {
|
|
|
+ const struct iw_handler_def *wext;
|
|
|
+ #endif
|
|
|
+
|
|
|
+- char priv[0] __attribute__((__aligned__(NETDEV_ALIGN)));
|
|
|
++ char priv[0] __aligned(NETDEV_ALIGN);
|
|
|
+ };
|
|
|
+
|
|
|
+ static inline struct net *wiphy_net(struct wiphy *wiphy)
|
|
|
+--- a/net/wireless/core.h
|
|
|
++++ b/net/wireless/core.h
|
|
|
+@@ -86,7 +86,7 @@ struct cfg80211_registered_device {
|
|
|
+
|
|
|
+ /* must be last because of the way we do wiphy_priv(),
|
|
|
+ * and it should at least be aligned to NETDEV_ALIGN */
|
|
|
+- struct wiphy wiphy __attribute__((__aligned__(NETDEV_ALIGN)));
|
|
|
++ struct wiphy wiphy __aligned(NETDEV_ALIGN);
|
|
|
+ };
|
|
|
+
|
|
|
+ static inline
|