net/usbnet: reserve headroom on rx skbs
network drivers should reserve some headroom on incoming skbs so that we dont need expensive reallocations, eg forwarding packets in tunnels. This NET_SKB_PAD padding is done in various helpers, like __netdev_alloc_skb_ip_align() in this patch, combining NET_SKB_PAD and NET_IP_ALIGN magic. Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com> Cc: Oliver Neukum <oneukum@suse.de> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Acked-by: Oliver Neukum <oneukum@suse.de> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
c0ea452e42
commit
7bdd402706
@ -328,13 +328,13 @@ static int rx_submit (struct usbnet *dev, struct urb *urb, gfp_t flags)
|
||||
unsigned long lockflags;
|
||||
size_t size = dev->rx_urb_size;
|
||||
|
||||
if ((skb = alloc_skb (size + NET_IP_ALIGN, flags)) == NULL) {
|
||||
skb = __netdev_alloc_skb_ip_align(dev->net, size, flags);
|
||||
if (!skb) {
|
||||
netif_dbg(dev, rx_err, dev->net, "no rx skb\n");
|
||||
usbnet_defer_kevent (dev, EVENT_RX_MEMORY);
|
||||
usb_free_urb (urb);
|
||||
return -ENOMEM;
|
||||
}
|
||||
skb_reserve (skb, NET_IP_ALIGN);
|
||||
|
||||
entry = (struct skb_data *) skb->cb;
|
||||
entry->urb = urb;
|
||||
|
Loading…
Reference in New Issue
Block a user