Skip to content

Commit

Permalink
ieee80211: mark 802.11 related structs as being 2-byte aligned
Browse files Browse the repository at this point in the history
Regardless of what header features they use, or if they align the IP
header or not, 802.11 packets from all drivers guarantee a 2-byte
alignment (and there's a debug WARN_ON in case they don't).

Annotate packet structs with __aligned(2) to allow the compiler to use
16-bit load/store operations on platforms with extremely inefficient
unaligned access (e.g. MIPS).

This reduces code size and improves performance on affected platforms
and causes no binary code change on others.

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
  • Loading branch information
Felix Fietkau authored and Johannes Berg committed Mar 6, 2013
1 parent 9a88658 commit b8a31c9
Showing 1 changed file with 8 additions and 8 deletions.
16 changes: 8 additions & 8 deletions include/linux/ieee80211.h
Original file line number Diff line number Diff line change
Expand Up @@ -213,7 +213,7 @@ struct ieee80211_hdr {
u8 addr3[6];
__le16 seq_ctrl;
u8 addr4[6];
} __packed;
} __packed __aligned(2);

struct ieee80211_hdr_3addr {
__le16 frame_control;
Expand All @@ -222,7 +222,7 @@ struct ieee80211_hdr_3addr {
u8 addr2[6];
u8 addr3[6];
__le16 seq_ctrl;
} __packed;
} __packed __aligned(2);

struct ieee80211_qos_hdr {
__le16 frame_control;
Expand All @@ -232,7 +232,7 @@ struct ieee80211_qos_hdr {
u8 addr3[6];
__le16 seq_ctrl;
__le16 qos_ctrl;
} __packed;
} __packed __aligned(2);

/**
* ieee80211_has_tods - check if IEEE80211_FCTL_TODS is set
Expand Down Expand Up @@ -609,7 +609,7 @@ struct ieee80211s_hdr {
__le32 seqnum;
u8 eaddr1[6];
u8 eaddr2[6];
} __packed;
} __packed __aligned(2);

/* Mesh flags */
#define MESH_FLAGS_AE_A4 0x1
Expand Down Expand Up @@ -903,7 +903,7 @@ struct ieee80211_mgmt {
} u;
} __packed action;
} u;
} __packed;
} __packed __aligned(2);

/* Supported Rates value encodings in 802.11n-2009 7.3.2.2 */
#define BSS_MEMBERSHIP_SELECTOR_HT_PHY 127
Expand Down Expand Up @@ -934,20 +934,20 @@ struct ieee80211_rts {
__le16 duration;
u8 ra[6];
u8 ta[6];
} __packed;
} __packed __aligned(2);

struct ieee80211_cts {
__le16 frame_control;
__le16 duration;
u8 ra[6];
} __packed;
} __packed __aligned(2);

struct ieee80211_pspoll {
__le16 frame_control;
__le16 aid;
u8 bssid[6];
u8 ta[6];
} __packed;
} __packed __aligned(2);

/* TDLS */

Expand Down

0 comments on commit b8a31c9

Please sign in to comment.