RE: [PATCH net v2 2/2] net: ngbe: clear DRV_LOAD bit when ngbe_open() fails
From: Loktionov, Aleksandr <hidden>
Date: 2026-09-22 11:10:14
Also in:
lkml, stable
quoted hunk ↗ jump to hunk
-----Original Message----- From: Zhang Yunfei <redacted> Sent: Tuesday, September 22, 2026 12:09 PM To: netdev@vger.kernel.org Cc: jiawenwu@trustnetic.com; mengyuanlou@net-swift.com; andrew+netdev@lunn.ch; davem@davemloft.net; edumazet@google.com; kuba@kernel.org; pabeni@redhat.com; Loktionov, Aleksandr [off-list ref]; leitao@debian.org; weirongguang@kylinos.cn; u.kleine-koenig@baylibre.com; linux- kernel@vger.kernel.org; stable@vger.kernel.org Subject: [PATCH net v2 2/2] net: ngbe: clear DRV_LOAD bit when ngbe_open() fails ngbe_open() sets the WX_CFG_PORT_CTL_DRV_LOAD bit via wx_control_hw(wx, true) to tell the management firmware that the host driver has taken over the port (NCSI/OOB firmware stops using its management channel). Every error path of ngbe_open() returns without clearing it, leaving rings, IRQs and the PHY torn down while the firmware still believes the host owns the port, an inconsistent driver-firmware handshake state that persists until the next successful ifup. Roll the bit back on all open error paths, matching ngbe_close() and ngbe_dev_shutdown(), which already clear it. Fixes: e7956139a6cf ("net: ngbe: Add irqs request flow") Cc: stable@vger.kernel.org Signed-off-by: Zhang Yunfei <redacted> --- drivers/net/ethernet/wangxun/ngbe/ngbe_main.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)diff --git a/drivers/net/ethernet/wangxun/ngbe/ngbe_main.cb/drivers/net/ethernet/wangxun/ngbe/ngbe_main.c index e8cabcc84a41..7e2cc69fe8f8 100644--- a/drivers/net/ethernet/wangxun/ngbe/ngbe_main.c +++ b/drivers/net/ethernet/wangxun/ngbe/ngbe_main.c@@ -494,7 +494,7 @@ static int ngbe_open(struct net_device *netdev) err = wx_setup_resources(wx); if (err) - return err; + goto err_control_hw; wx_configure(wx);@@ -526,6 +526,8 @@ static int ngbe_open(struct net_device *netdev) err_free_resources: wx_free_isb_resources(wx); wx_free_resources(wx); +err_control_hw: + wx_control_hw(wx, false); return err; } --2.25.1
Reviewed-by: Aleksandr Loktionov <redacted>