Drv_load bit will be reset to default 0 after hardware LAN reset,
reconfigure it to inform firmware that driver is loaded. And set it to 0
when device is closed.

Fixes: 3518df5774c7 ("net/ngbe: support device start/stop")
Fixes: cc63194e89cb ("net/ngbe: support close and reset device")
Cc: sta...@dpdk.org

Signed-off-by: Jiawen Wu <jiawe...@trustnetic.com>
---
 drivers/net/ngbe/ngbe_ethdev.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/drivers/net/ngbe/ngbe_ethdev.c b/drivers/net/ngbe/ngbe_ethdev.c
index d9d2daf656..ba46dcf2a5 100644
--- a/drivers/net/ngbe/ngbe_ethdev.c
+++ b/drivers/net/ngbe/ngbe_ethdev.c
@@ -263,6 +263,8 @@ ngbe_pf_reset_hw(struct ngbe_hw *hw)
        status = hw->mac.reset_hw(hw);
 
        ctrl_ext = rd32(hw, NGBE_PORTCTL);
+       /* let hardware know driver is loaded */
+       ctrl_ext |= NGBE_PORTCTL_DRVLOAD;
        /* Set PF Reset Done bit so PF/VF Mail Ops can work */
        ctrl_ext |= NGBE_PORTCTL_RSTDONE;
        wr32(hw, NGBE_PORTCTL, ctrl_ext);
@@ -1277,6 +1279,9 @@ ngbe_dev_close(struct rte_eth_dev *dev)
 
        ngbe_dev_stop(dev);
 
+       /* Let firmware take over control of hardware */
+       wr32m(hw, NGBE_PORTCTL, NGBE_PORTCTL_DRVLOAD, 0);
+
        ngbe_dev_free_queues(dev);
 
        ngbe_set_pcie_master(hw, false);
-- 
2.27.0

Reply via email to