In airoha_dev_open(), if airoha_set_vip_for_gdm_port() fails after netif_tx_start_all_queues() has been called, the TX queues remain started while the device configuration is incomplete. This leaves the device in an inconsistent state where packets could be transmitted before the VIP/IFC port configuration is complete. Add netif_tx_stop_all_queues() call on the error path to properly roll back the TX queue state. Fixes: 20bf7d07c956 ("net: airoha: add QDMA support for Airoha EN7581 Ethernet") Signed-off-by: Wayen Yan --- drivers/net/ethernet/airoha/airoha_eth.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/airoha/airoha_eth.c b/drivers/net/ethernet/airoha/airoha_eth.c index 31cdb11cd7..cf9c366907 100644 --- a/drivers/net/ethernet/airoha/airoha_eth.c +++ b/drivers/net/ethernet/airoha/airoha_eth.c @@ -1715,8 +1715,10 @@ static int airoha_dev_open(struct net_device *dev) netif_tx_start_all_queues(dev); err = airoha_set_vip_for_gdm_port(port, true); - if (err) + if (err) { + netif_tx_stop_all_queues(dev); return err; + } if (netdev_uses_dsa(dev)) airoha_fe_set(qdma->eth, REG_GDM_INGRESS_CFG(port->id), -- 2.51.0