kernel: add a few patches for avoiding unnecessary skb reallocations - significantly improves ethernet<->wireless performance with mac80211 based drivers
SVN-Revision: 31886
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
--- a/net/netlink/af_netlink.c
|
||||
+++ b/net/netlink/af_netlink.c
|
||||
@@ -854,25 +854,7 @@ void netlink_detachskb(struct sock *sk,
|
||||
|
||||
static struct sk_buff *netlink_trim(struct sk_buff *skb, gfp_t allocation)
|
||||
{
|
||||
- int delta;
|
||||
-
|
||||
skb_orphan(skb);
|
||||
-
|
||||
- delta = skb->end - skb->tail;
|
||||
- if (delta * 2 < skb->truesize)
|
||||
- return skb;
|
||||
-
|
||||
- if (skb_shared(skb)) {
|
||||
- struct sk_buff *nskb = skb_clone(skb, allocation);
|
||||
- if (!nskb)
|
||||
- return skb;
|
||||
- kfree_skb(skb);
|
||||
- skb = nskb;
|
||||
- }
|
||||
-
|
||||
- if (!pskb_expand_head(skb, 0, -delta, allocation))
|
||||
- skb->truesize -= delta;
|
||||
-
|
||||
return skb;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user