mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-04-01 12:04:08 +00:00
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
1 changed files with 2 additions and 2 deletions
|
@ -328,13 +328,13 @@ static int rx_submit (struct usbnet *dev, struct urb *urb, gfp_t flags)
|
||||||
unsigned long lockflags;
|
unsigned long lockflags;
|
||||||
size_t size = dev->rx_urb_size;
|
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");
|
netif_dbg(dev, rx_err, dev->net, "no rx skb\n");
|
||||||
usbnet_defer_kevent (dev, EVENT_RX_MEMORY);
|
usbnet_defer_kevent (dev, EVENT_RX_MEMORY);
|
||||||
usb_free_urb (urb);
|
usb_free_urb (urb);
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
skb_reserve (skb, NET_IP_ALIGN);
|
|
||||||
|
|
||||||
entry = (struct skb_data *) skb->cb;
|
entry = (struct skb_data *) skb->cb;
|
||||||
entry->urb = urb;
|
entry->urb = urb;
|
||||||
|
|
Loading…
Add table
Reference in a new issue