usb_drv: Fix performance of ASIX AX88772

Caused by #773
This commit is contained in:
Sebastian Sumpf 2013-06-20 18:41:29 +02:00 committed by Norman Feske
parent 98ee7612f1
commit cc0f4bc9d2
3 changed files with 20 additions and 5 deletions

View File

@ -0,0 +1,11 @@
diff -r e55abb7f4c0a drivers/net/usb/ax88179_178a.c
--- a/drivers/net/usb/ax88179_178a.c Thu Jun 20 18:17:35 2013 +0200
+++ b/drivers/net/usb/ax88179_178a.c Thu Jun 20 18:18:13 2013 +0200
@@ -1022,6 +1022,7 @@
dev->net->netdev_ops = &ax88179_netdev_ops;
dev->net->ethtool_ops = &ax88179_ethtool_ops;
dev->net->needed_headroom = 8;
+ dev->net->net_ip_align = 1;
/* Initialize MII structure */
dev->mii.dev = dev->net;

View File

@ -3212,6 +3212,7 @@ struct net_device
int watchdog_timeo; /* used by dev_watchdog() */
struct device dev;
void *priv;
unsigned net_ip_align;
struct phy_device *phydev;
};

View File

@ -99,7 +99,7 @@ class Skb
/* wait until some SKBs are freed */
_wait_free = false;
PDBG("wait for free skbs ...");
//PDBG("wait for free skbs ...");
_wait_event(_wait_free);
return alloc();
@ -164,8 +164,9 @@ class Nic_device : public Nic::Device
struct usbnet *dev = (usbnet *)netdev_priv(_ndev);
/* initialize skb allocators */
skb_rx(64, dev->rx_urb_size);
skb_tx(64, dev->rx_urb_size);
unsigned urb_cnt = dev->rx_urb_size <= 2048 ? 128 : 64;
skb_rx(urb_cnt, dev->rx_urb_size);
skb_tx(urb_cnt, dev->rx_urb_size);
if (!burst()) return;
@ -404,8 +405,10 @@ struct sk_buff *alloc_skb(unsigned int size, gfp_t priority)
struct sk_buff *netdev_alloc_skb_ip_align(struct net_device *dev, unsigned int length)
{
struct sk_buff *s = _alloc_skb(length + NET_IP_ALIGN, false);
s->data += NET_IP_ALIGN;
s->tail += NET_IP_ALIGN;
if (dev->net_ip_align) {
s->data += NET_IP_ALIGN;
s->tail += NET_IP_ALIGN;
}
return s;
}