mac80211: assume 2-byte aligning for 802.11 packets, slightly improves code size...
[openwrt.git] / package / mac80211 / patches / 542-mac80211_optimize_wireless_struct.patch
1 --- a/include/linux/ieee80211.h
2 +++ b/include/linux/ieee80211.h
3 @@ -180,7 +180,7 @@ struct ieee80211_hdr {
4         u8 addr3[6];
5         __le16 seq_ctrl;
6         u8 addr4[6];
7 -} __packed;
8 +} __packed __aligned(2);
9  
10  struct ieee80211_hdr_3addr {
11         __le16 frame_control;
12 @@ -189,7 +189,7 @@ struct ieee80211_hdr_3addr {
13         u8 addr2[6];
14         u8 addr3[6];
15         __le16 seq_ctrl;
16 -} __packed;
17 +} __packed __aligned(2);
18  
19  struct ieee80211_qos_hdr {
20         __le16 frame_control;
21 @@ -199,7 +199,7 @@ struct ieee80211_qos_hdr {
22         u8 addr3[6];
23         __le16 seq_ctrl;
24         __le16 qos_ctrl;
25 -} __packed;
26 +} __packed __aligned(2);
27  
28  /**
29   * ieee80211_has_tods - check if IEEE80211_FCTL_TODS is set
30 @@ -576,7 +576,7 @@ struct ieee80211s_hdr {
31         __le32 seqnum;
32         u8 eaddr1[6];
33         u8 eaddr2[6];
34 -} __packed;
35 +} __packed __aligned(2);
36  
37  /* Mesh flags */
38  #define MESH_FLAGS_AE_A4       0x1
39 @@ -830,7 +830,7 @@ struct ieee80211_mgmt {
40                         } u;
41                 } __packed action;
42         } u;
43 -} __packed;
44 +} __packed __aligned(2);
45  
46  /* Supported Rates value encodings in 802.11n-2009 7.3.2.2 */
47  #define BSS_MEMBERSHIP_SELECTOR_HT_PHY 127
48 @@ -861,20 +861,20 @@ struct ieee80211_rts {
49         __le16 duration;
50         u8 ra[6];
51         u8 ta[6];
52 -} __packed;
53 +} __packed __aligned(2);
54  
55  struct ieee80211_cts {
56         __le16 frame_control;
57         __le16 duration;
58         u8 ra[6];
59 -} __packed;
60 +} __packed __aligned(2);
61  
62  struct ieee80211_pspoll {
63         __le16 frame_control;
64         __le16 aid;
65         u8 bssid[6];
66         u8 ta[6];
67 -} __packed;
68 +} __packed __aligned(2);
69  
70  /* TDLS */
71