Commit 1e2c6117 authored by Bjørn Mork's avatar Bjørn Mork Committed by David S. Miller

net: cdc_ncm: reduce skb truesize in rx path

Cloning the big skbs we use for USB buffering chokes up TCP and
SCTP because the socket memory limits are hitting earlier than
they should. It is better to unconditionally copy the unwrapped
packets to freshly allocated skbs.
Reported-by: default avatarJim Baxter <jim_baxter@mentor.com>
Acked-by: default avatarEric Dumazet <edumazet@google.com>
Signed-off-by: default avatarBjørn Mork <bjorn@mork.no>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent e289fd28
...@@ -1289,12 +1289,11 @@ int cdc_ncm_rx_fixup(struct usbnet *dev, struct sk_buff *skb_in) ...@@ -1289,12 +1289,11 @@ int cdc_ncm_rx_fixup(struct usbnet *dev, struct sk_buff *skb_in)
break; break;
} else { } else {
skb = skb_clone(skb_in, GFP_ATOMIC); /* create a fresh copy to reduce truesize */
skb = netdev_alloc_skb_ip_align(dev->net, len);
if (!skb) if (!skb)
goto error; goto error;
skb->len = len; memcpy(skb_put(skb, len), skb_in->data + offset, len);
skb->data = ((u8 *)skb_in->data) + offset;
skb_set_tail_pointer(skb, len);
usbnet_skb_return(dev, skb); usbnet_skb_return(dev, skb);
payload += len; /* count payload bytes in this NTB */ payload += len; /* count payload bytes in this NTB */
} }
......
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