Skip to content

Commit c9f9477

Browse files
LorenzoBianconilunn
authored andcommitted
net: airoha: Reset BQL stopping the netdevice
Run airoha_qdma_cleanup_tx_queue() in ndo_stop callback in order to unmap pending skbs. Moreover, reset BQL txq state stopping the netdevice, Signed-off-by: Lorenzo Bianconi <[email protected]> Reviewed-by: Hariprasad Kelam <[email protected]> Message-ID: <[email protected]> Signed-off-by: Andrew Lunn <[email protected]>
1 parent 93a610c commit c9f9477

File tree

1 file changed

+9
-1
lines changed

1 file changed

+9
-1
lines changed

drivers/net/ethernet/mediatek/airoha_eth.c

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2342,7 +2342,7 @@ static int airoha_dev_stop(struct net_device *dev)
23422342
{
23432343
struct airoha_gdm_port *port = netdev_priv(dev);
23442344
struct airoha_qdma *qdma = port->qdma;
2345-
int err;
2345+
int i, err;
23462346

23472347
netif_tx_disable(dev);
23482348
err = airoha_set_gdm_ports(qdma->eth, false);
@@ -2353,6 +2353,14 @@ static int airoha_dev_stop(struct net_device *dev)
23532353
GLOBAL_CFG_TX_DMA_EN_MASK |
23542354
GLOBAL_CFG_RX_DMA_EN_MASK);
23552355

2356+
for (i = 0; i < ARRAY_SIZE(qdma->q_tx); i++) {
2357+
if (!qdma->q_tx[i].ndesc)
2358+
continue;
2359+
2360+
airoha_qdma_cleanup_tx_queue(&qdma->q_tx[i]);
2361+
netdev_tx_reset_subqueue(dev, i);
2362+
}
2363+
23562364
return 0;
23572365
}
23582366

0 commit comments

Comments
 (0)