bcm4908: add pending BQL support for bcm4908_enet
[openwrt/staging/noltari.git] / target / linux / bcm4908 / patches-5.10 / 170-net-broadcom-bcm4908_enet-report-queued-and-transmit.patch
1 From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
2 Date: Thu, 27 Oct 2022 22:18:05 +0200
3 Subject: [PATCH] net: broadcom: bcm4908_enet: report queued and transmitted
4 bytes
5 MIME-Version: 1.0
6 Content-Type: text/plain; charset=UTF-8
7 Content-Transfer-Encoding: 8bit
8
9 This allows BQL to operate avoiding buffer bloat and reducing latency.
10
11 Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
12 ---
13 drivers/net/ethernet/broadcom/bcm4908_enet.c | 4 ++++
14 1 file changed, 4 insertions(+)
15
16 --- a/drivers/net/ethernet/broadcom/bcm4908_enet.c
17 +++ b/drivers/net/ethernet/broadcom/bcm4908_enet.c
18 @@ -504,6 +504,7 @@ static int bcm4908_enet_stop(struct net_
19 netif_carrier_off(netdev);
20 napi_disable(&rx_ring->napi);
21 napi_disable(&tx_ring->napi);
22 + netdev_reset_queue(netdev);
23
24 bcm4908_enet_dma_rx_ring_disable(enet, &enet->rx_ring);
25 bcm4908_enet_dma_tx_ring_disable(enet, &enet->tx_ring);
26 @@ -563,6 +564,8 @@ static int bcm4908_enet_start_xmit(struc
27 if (ring->write_idx + 1 == ring->length - 1)
28 tmp |= DMA_CTL_STATUS_WRAP;
29
30 + netdev_sent_queue(enet->netdev, skb->len);
31 +
32 buf_desc->addr = cpu_to_le32((uint32_t)slot->dma_addr);
33 buf_desc->ctl = cpu_to_le32(tmp);
34
35 @@ -670,6 +673,7 @@ static int bcm4908_enet_poll_tx(struct n
36 tx_ring->read_idx = 0;
37 }
38
39 + netdev_completed_queue(enet->netdev, handled, bytes);
40 enet->netdev->stats.tx_packets += handled;
41 enet->netdev->stats.tx_bytes += bytes;
42