Skip to content

Commit

Permalink
bcm63xx: support xmit_more in BQL
Browse files Browse the repository at this point in the history
Support bulking hardware TX queue by using xmit_more.

Signed-off-by: Sieng Piaw Liew <[email protected]>
[Amend commit description, fix kernel xmit_more exceptions]
Signed-off-by: Álvaro Fernández Rojas <[email protected]>
  • Loading branch information
spliew89 authored and Noltari committed Dec 5, 2020
1 parent 3425248 commit 36334b2
Showing 1 changed file with 54 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
From 79bfb73319098bc4cb701139a6677dcdec99182f Mon Sep 17 00:00:00 2001
From: Sieng Piaw Liew <[email protected]>
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 <[email protected]>
---
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

0 comments on commit 36334b2

Please sign in to comment.