Mesh PERR action frames are robust and thus may be encrypted, so add
proper head/tailroom to allow this. Fixes this warning when operating
a Mesh STA on ath5k:
WARNING: at net/mac80211/wpa.c:427 ccmp_encrypt_skb.isra.5+0x7b/0x1a0 [mac80211]()
Call Trace:
[<
c011c5e7>] warn_slowpath_common+0x63/0x78
[<
c011c60b>] warn_slowpath_null+0xf/0x13
[<
e090621d>] ccmp_encrypt_skb.isra.5+0x7b/0x1a0 [mac80211]
[<
e090685c>] ieee80211_crypto_ccmp_encrypt+0x1f/0x37 [mac80211]
[<
e0917113>] invoke_tx_handlers+0xcad/0x10bd [mac80211]
[<
e0917665>] ieee80211_tx+0x87/0xb3 [mac80211]
[<
e0918932>] ieee80211_tx_pending+0xcc/0x170 [mac80211]
[<
c0121c43>] tasklet_action+0x3e/0x65
Signed-off-by: Bob Copeland <me@bobcopeland.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
return -EAGAIN;
skb = dev_alloc_skb(local->tx_headroom +
+ IEEE80211_ENCRYPT_HEADROOM +
+ IEEE80211_ENCRYPT_TAILROOM +
hdr_len +
2 + 15 /* PERR IE */);
if (!skb)
return -1;
- skb_reserve(skb, local->tx_headroom);
+ skb_reserve(skb, local->tx_headroom + IEEE80211_ENCRYPT_HEADROOM);
mgmt = (struct ieee80211_mgmt *) skb_put(skb, hdr_len);
memset(mgmt, 0, hdr_len);
mgmt->frame_control = cpu_to_le16(IEEE80211_FTYPE_MGMT |