On Wed, 2013-02-20 at 07:11 -0800, Eric Dumazet wrote: > diff --git a/drivers/net/wireless/iwlwifi/dvm/rx.c b/drivers/net/wireless/iwlwifi/dvm/rx.c > index a4eed20..77a3ee3 100644 > --- a/drivers/net/wireless/iwlwifi/dvm/rx.c > +++ b/drivers/net/wireless/iwlwifi/dvm/rx.c > @@ -750,7 +750,12 @@ static void iwlagn_pass_packet_to_mac80211(struct iwl_priv *priv, > /* Dont use dev_alloc_skb(), we'll have enough headroom once > * ieee80211_hdr pulled. > */ > - skb = alloc_skb(128, GFP_ATOMIC); > + fraglen = 128; > + /* if we use order-1 pages, copy to get better TCP performance */ > + if (rxb->truesize > PAGE_SIZE) > + fraglen = max_t(unsigned, fraglen, len); Btw, shouldn't this rather be something like if (rxb->truesize > PAGE_SIZE && len < SKB_WITH_OVERHEAD(PAGE_SIZE)) to avoid allocating large SKBs in the case that this actually is a big 8k A-MSDU? That wouldn't be given to the TCP RX path anyway because mac80211 will split the A-MSDU into MSDUs and memcpy along the way. Anyway we're preparing a patch for 4k A-MSDU (which is really just something like 3782 bytes or something). johannes -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html