mirror of
https://github.com/openwrt/openwrt.git
synced 2025-01-11 15:33:03 +00:00
target/realtek: use netif_receive_skb_list
Small performance improvement on rx. Signed-off-by: Rosen Penev <rosenp@gmail.com>
This commit is contained in:
parent
e131a66e30
commit
3b93651072
@ -1252,6 +1252,7 @@ static int rtl838x_hw_receive(struct net_device *dev, int r, int budget)
|
|||||||
struct rtl838x_eth_priv *priv = netdev_priv(dev);
|
struct rtl838x_eth_priv *priv = netdev_priv(dev);
|
||||||
struct ring_b *ring = priv->membase;
|
struct ring_b *ring = priv->membase;
|
||||||
struct sk_buff *skb;
|
struct sk_buff *skb;
|
||||||
|
LIST_HEAD(rx_list);
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
int i, len, work_done = 0;
|
int i, len, work_done = 0;
|
||||||
u8 *data, *skb_data;
|
u8 *data, *skb_data;
|
||||||
@ -1329,7 +1330,7 @@ static int rtl838x_hw_receive(struct net_device *dev, int r, int budget)
|
|||||||
dev->stats.rx_packets++;
|
dev->stats.rx_packets++;
|
||||||
dev->stats.rx_bytes += len;
|
dev->stats.rx_bytes += len;
|
||||||
|
|
||||||
netif_receive_skb(skb);
|
list_add_tail(&skb->list, &rx_list);
|
||||||
} else {
|
} else {
|
||||||
if (net_ratelimit())
|
if (net_ratelimit())
|
||||||
dev_warn(&dev->dev, "low on memory - packet dropped\n");
|
dev_warn(&dev->dev, "low on memory - packet dropped\n");
|
||||||
@ -1347,6 +1348,8 @@ static int rtl838x_hw_receive(struct net_device *dev, int r, int budget)
|
|||||||
last = (u32 *)KSEG1ADDR(sw_r32(priv->r->dma_if_rx_cur + r * 4));
|
last = (u32 *)KSEG1ADDR(sw_r32(priv->r->dma_if_rx_cur + r * 4));
|
||||||
} while (&ring->rx_r[r][ring->c_rx[r]] != last && work_done < budget);
|
} while (&ring->rx_r[r][ring->c_rx[r]] != last && work_done < budget);
|
||||||
|
|
||||||
|
netif_receive_skb_list(&rx_list);
|
||||||
|
|
||||||
// Update counters
|
// Update counters
|
||||||
priv->r->update_cntr(r, 0);
|
priv->r->update_cntr(r, 0);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user