From: Sieng Piaw Liew Date: Thu, 12 Nov 2020 18:21:07 +0000 (+0800) Subject: bcm63xx: support xmit_more in BQL X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=36334b2d4b41527e9d0c682441a77aba6449228d;p=openwrt%2Fstaging%2Fxback.git bcm63xx: support xmit_more in BQL Support bulking hardware TX queue by using xmit_more. Signed-off-by: Sieng Piaw Liew [Amend commit description, fix kernel xmit_more exceptions] Signed-off-by: Álvaro Fernández Rojas --- 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 +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 +--- + 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