bcm63xx: support xmit_more in BQL
[openwrt/staging/rmilecki.git] / target / linux / bcm63xx / patches-5.4 / 443-bcm63xx_enet-support_xmit_more_in_bql.patch
1 From 79bfb73319098bc4cb701139a6677dcdec99182f Mon Sep 17 00:00:00 2001
2 From: Sieng Piaw Liew <liew.s.piaw@gmail.com>
3 Date: Tue, 3 Nov 2020 08:14:35 +0800
4 Subject: [PATCH 2/2] bcm63xx: support xmit_more in BQL
5
6 Support bulking hardware TX queue by using xmit_more.
7
8 Signed-off-by: Sieng Piaw Liew <liew.s.piaw@gmail.com>
9 ---
10 bcm63xx_enet.c | 10 ++++++----
11 1 file changed, 6 insertions(+), 4 deletions(-)
12
13 --- a/drivers/net/ethernet/broadcom/bcm63xx_enet.c
14 +++ b/drivers/net/ethernet/broadcom/bcm63xx_enet.c
15 @@ -638,14 +638,16 @@ bcm_enet_start_xmit(struct sk_buff *skb,
16
17 netdev_sent_queue(dev, skb->len);
18
19 - /* kick tx dma */
20 - enet_dmac_writel(priv, priv->dma_chan_en_mask,
21 - ENETDMAC_CHANCFG, priv->tx_chan);
22 -
23 /* stop queue if no more desc available */
24 if (!priv->tx_desc_count)
25 netif_stop_queue(dev);
26
27 + /* kick tx dma */
28 + if(!netdev_xmit_more() || !priv->tx_desc_count)
29 + enet_dmac_writel(priv, priv->dma_chan_en_mask,
30 + ENETDMAC_CHANCFG, priv->tx_chan);
31 +
32 +
33 dev->stats.tx_bytes += skb->len;
34 dev->stats.tx_packets++;
35 ret = NETDEV_TX_OK;
36 @@ -2713,7 +2715,7 @@ static int bcm_enetsw_probe(struct platf
37 priv->irq_rx = irq_rx;
38 priv->irq_tx = irq_tx;
39 priv->rx_ring_size = BCMENET_DEF_RX_DESC;
40 - priv->tx_ring_size = BCMENET_DEF_TX_DESC;
41 + priv->tx_ring_size = BCMENETSW_DEF_TX_DESC;
42 priv->dma_maxburst = BCMENETSW_DMA_MAXBURST;
43
44 pd = dev_get_platdata(&pdev->dev);
45 --- a/drivers/net/ethernet/broadcom/bcm63xx_enet.h
46 +++ b/drivers/net/ethernet/broadcom/bcm63xx_enet.h
47 @@ -15,6 +15,7 @@
48 /* default number of descriptor */
49 #define BCMENET_DEF_RX_DESC 64
50 #define BCMENET_DEF_TX_DESC 32
51 +#define BCMENETSW_DEF_TX_DESC 48
52
53 /* maximum burst len for dma (4 bytes unit) */
54 #define BCMENET_DMA_MAXBURST 16