[openwrt/openwrt] bcm63xx: support xmit_more in BQL

LEDE Commits lede-commits at lists.infradead.org
Sat Dec 5 04:15:02 EST 2020


noltari pushed a commit to openwrt/openwrt.git, branch master:
https://git.openwrt.org/36334b2d4b41527e9d0c682441a77aba6449228d

commit 36334b2d4b41527e9d0c682441a77aba6449228d
Author: Sieng Piaw Liew <liew.s.piaw at gmail.com>
AuthorDate: Fri Nov 13 02:21:07 2020 +0800

    bcm63xx: support xmit_more in BQL
    
    Support bulking hardware TX queue by using xmit_more.
    
    Signed-off-by: Sieng Piaw Liew <liew.s.piaw at gmail.com>
    [Amend commit description, fix kernel xmit_more exceptions]
    Signed-off-by: Álvaro Fernández Rojas <noltari at gmail.com>
---
 ...443-bcm63xx_enet-support_xmit_more_in_bql.patch | 54 ++++++++++++++++++++++
 1 file changed, 54 insertions(+)

diff --git a/target/linux/bcm63xx/patches-5.4/443-bcm63xx_enet-support_xmit_more_in_bql.patch b/target/linux/bcm63xx/patches-5.4/443-bcm63xx_enet-support_xmit_more_in_bql.patch
new file mode 100644
index 0000000000..122cbf1138
--- /dev/null
+++ b/target/linux/bcm63xx/patches-5.4/443-bcm63xx_enet-support_xmit_more_in_bql.patch
@@ -0,0 +1,54 @@
+From 79bfb73319098bc4cb701139a6677dcdec99182f Mon Sep 17 00:00:00 2001
+From: Sieng Piaw Liew <liew.s.piaw at gmail.com>
+Date: Tue, 3 Nov 2020 08:14:35 +0800
+Subject: [PATCH 2/2] bcm63xx: support xmit_more in BQL
+
+Support bulking hardware TX queue by using xmit_more.
+
+Signed-off-by: Sieng Piaw Liew <liew.s.piaw at gmail.com>
+---
+ bcm63xx_enet.c | 10 ++++++----
+ 1 file changed, 6 insertions(+), 4 deletions(-)
+
+--- a/drivers/net/ethernet/broadcom/bcm63xx_enet.c
++++ b/drivers/net/ethernet/broadcom/bcm63xx_enet.c
+@@ -638,14 +638,16 @@ bcm_enet_start_xmit(struct sk_buff *skb,
+ 
+ 	netdev_sent_queue(dev, skb->len);
+ 
+-	/* kick tx dma */
+-	enet_dmac_writel(priv, priv->dma_chan_en_mask,
+-				 ENETDMAC_CHANCFG, priv->tx_chan);
+-
+ 	/* stop queue if no more desc available */
+ 	if (!priv->tx_desc_count)
+ 		netif_stop_queue(dev);
+ 
++	/* kick tx dma */
++	if(!netdev_xmit_more() || !priv->tx_desc_count)
++		enet_dmac_writel(priv, priv->dma_chan_en_mask,
++					ENETDMAC_CHANCFG, priv->tx_chan);
++
++
+ 	dev->stats.tx_bytes += skb->len;
+ 	dev->stats.tx_packets++;
+ 	ret = NETDEV_TX_OK;
+@@ -2713,7 +2715,7 @@ static int bcm_enetsw_probe(struct platf
+ 	priv->irq_rx = irq_rx;
+ 	priv->irq_tx = irq_tx;
+ 	priv->rx_ring_size = BCMENET_DEF_RX_DESC;
+-	priv->tx_ring_size = BCMENET_DEF_TX_DESC;
++	priv->tx_ring_size = BCMENETSW_DEF_TX_DESC;
+ 	priv->dma_maxburst = BCMENETSW_DMA_MAXBURST;
+ 
+ 	pd = dev_get_platdata(&pdev->dev);
+--- a/drivers/net/ethernet/broadcom/bcm63xx_enet.h
++++ b/drivers/net/ethernet/broadcom/bcm63xx_enet.h
+@@ -15,6 +15,7 @@
+ /* default number of descriptor */
+ #define BCMENET_DEF_RX_DESC	64
+ #define BCMENET_DEF_TX_DESC	32
++#define BCMENETSW_DEF_TX_DESC	48
+ 
+ /* maximum burst len for dma (4 bytes unit) */
+ #define BCMENET_DMA_MAXBURST	16



More information about the lede-commits mailing list