Commit c9262522 authored by Subbaraya Sundeep's avatar Subbaraya Sundeep Committed by David S. Miller

octeontx2-pf: Disable packet I/O for graceful exit

At the stage of enabling packet I/O in otx2_open, If mailbox
timeout occurs then interface ends up in down state where as
hardware packet I/O is enabled. Hence disable packet I/O also
before bailing out.

Fixes: 1ea0166d ("octeontx2-pf: Fix the device state on error")
Signed-off-by: default avatarSubbaraya Sundeep <sbhatta@marvell.com>
Signed-off-by: default avatarSunil Kovvuri Goutham <sgoutham@marvell.com>
Signed-off-by: default avatarSai Krishna <saikrishnag@marvell.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 5eb1b722
...@@ -1835,13 +1835,22 @@ int otx2_open(struct net_device *netdev) ...@@ -1835,13 +1835,22 @@ int otx2_open(struct net_device *netdev)
otx2_dmacflt_reinstall_flows(pf); otx2_dmacflt_reinstall_flows(pf);
err = otx2_rxtx_enable(pf, true); err = otx2_rxtx_enable(pf, true);
if (err) /* If a mbox communication error happens at this point then interface
* will end up in a state such that it is in down state but hardware
* mcam entries are enabled to receive the packets. Hence disable the
* packet I/O.
*/
if (err == EIO)
goto err_disable_rxtx;
else if (err)
goto err_tx_stop_queues; goto err_tx_stop_queues;
otx2_do_set_rx_mode(pf); otx2_do_set_rx_mode(pf);
return 0; return 0;
err_disable_rxtx:
otx2_rxtx_enable(pf, false);
err_tx_stop_queues: err_tx_stop_queues:
netif_tx_stop_all_queues(netdev); netif_tx_stop_all_queues(netdev);
netif_carrier_off(netdev); netif_carrier_off(netdev);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment