Commit c9f94776 authored by Lorenzo Bianconi's avatar Lorenzo Bianconi Committed by Andrew Lunn
Browse files

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: default avatarLorenzo Bianconi <lorenzo@kernel.org>
Reviewed-by: default avatarHariprasad Kelam <hkelam@marvell.com>
Message-ID: <20241017-airoha-en7581-reset-bql-v1-1-08c0c9888de5@kernel.org>
Signed-off-by: default avatarAndrew Lunn <andrew@lunn.ch>
parent 93a610c0
Loading
Loading
Loading
Loading
+9 −1
Original line number Diff line number Diff line
@@ -2342,7 +2342,7 @@ static int airoha_dev_stop(struct net_device *dev)
{
	struct airoha_gdm_port *port = netdev_priv(dev);
	struct airoha_qdma *qdma = port->qdma;
	int err;
	int i, err;

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

	for (i = 0; i < ARRAY_SIZE(qdma->q_tx); i++) {
		if (!qdma->q_tx[i].ndesc)
			continue;

		airoha_qdma_cleanup_tx_queue(&qdma->q_tx[i]);
		netdev_tx_reset_subqueue(dev, i);
	}

	return 0;
}