Commit 3a5be7d4 authored by David S. Miller's avatar David S. Miller

Revert "mac80211: Use skb_header_cloned() on TX path."

This reverts commit 608961a5.

The problem is that the mac80211 stack not only needs to be able to
muck with the link-level headers, it also might need to mangle all of
the packet data if doing sw wireless encryption.

This fixes kernel bugzilla #10903.  Thanks to Didier Raboud (for the
bugzilla report), Andrew Prince (for bisecting), Johannes Berg (for
bringing this bisection analysis to my attention), and Ilpo (for
trying to analyze this purely from the TCP side).

In 2.6.27 we can take another stab at this, by using something like
skb_cow_data() when the TX path of mac80211 ends up with a non-NULL
tx->key.  The ESP protocol code in the IPSEC stack can be used as a
model for implementation.
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 3c73419c
...@@ -1562,13 +1562,13 @@ int ieee80211_subif_start_xmit(struct sk_buff *skb, ...@@ -1562,13 +1562,13 @@ int ieee80211_subif_start_xmit(struct sk_buff *skb,
* be cloned. This could happen, e.g., with Linux bridge code passing * be cloned. This could happen, e.g., with Linux bridge code passing
* us broadcast frames. */ * us broadcast frames. */
if (head_need > 0 || skb_header_cloned(skb)) { if (head_need > 0 || skb_cloned(skb)) {
#if 0 #if 0
printk(KERN_DEBUG "%s: need to reallocate buffer for %d bytes " printk(KERN_DEBUG "%s: need to reallocate buffer for %d bytes "
"of headroom\n", dev->name, head_need); "of headroom\n", dev->name, head_need);
#endif #endif
if (skb_header_cloned(skb)) if (skb_cloned(skb))
I802_DEBUG_INC(local->tx_expand_skb_head_cloned); I802_DEBUG_INC(local->tx_expand_skb_head_cloned);
else else
I802_DEBUG_INC(local->tx_expand_skb_head); I802_DEBUG_INC(local->tx_expand_skb_head);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment