[openwrt/openwrt] target/realtek: use netif_receive_skb_list

LEDE Commits lede-commits at lists.infradead.org
Tue Nov 1 01:14:02 PDT 2022


svanheule pushed a commit to openwrt/openwrt.git, branch master:
https://git.openwrt.org/3b936510720b04ec02b4e4a395aa39cdcfbc47d5

commit 3b936510720b04ec02b4e4a395aa39cdcfbc47d5
Author: Rosen Penev <rosenp at gmail.com>
AuthorDate: Sun Oct 30 12:25:19 2022 -0700

    target/realtek: use netif_receive_skb_list
    
    Small performance improvement on rx.
    
    Signed-off-by: Rosen Penev <rosenp at gmail.com>
---
 target/linux/realtek/files-5.10/drivers/net/ethernet/rtl838x_eth.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/target/linux/realtek/files-5.10/drivers/net/ethernet/rtl838x_eth.c b/target/linux/realtek/files-5.10/drivers/net/ethernet/rtl838x_eth.c
index be84549b9e..166e49e139 100644
--- a/target/linux/realtek/files-5.10/drivers/net/ethernet/rtl838x_eth.c
+++ b/target/linux/realtek/files-5.10/drivers/net/ethernet/rtl838x_eth.c
@@ -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 ring_b *ring = priv->membase;
 	struct sk_buff *skb;
+	LIST_HEAD(rx_list);
 	unsigned long flags;
 	int i, len, work_done = 0;
 	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_bytes += len;
 
-			netif_receive_skb(skb);
+			list_add_tail(&skb->list, &rx_list);
 		} else {
 			if (net_ratelimit())
 				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));
 	} while (&ring->rx_r[r][ring->c_rx[r]] != last && work_done < budget);
 
+	netif_receive_skb_list(&rx_list);
+
 	// Update counters
 	priv->r->update_cntr(r, 0);
 




More information about the lede-commits mailing list