bnxt_en: close & open NIC, only when the interface is in running state.
authorVenkat Duvvuru <venkatkumar.duvvuru@broadcom.com>
Sat, 10 Mar 2018 04:46:09 +0000 (23:46 -0500)
committerDavid S. Miller <davem@davemloft.net>
Mon, 12 Mar 2018 14:58:05 +0000 (10:58 -0400)
commit1a037782e79047ec3386d8ba94c103cbdfb851d0
treee3a784614630590eb551d257cc7945d34cfe2a1c
parent6ae777eab2f53b50d84a5d75a48d2d149f787da8
bnxt_en: close & open NIC, only when the interface is in running state.

bnxt_restore_pf_fw_resources routine frees PF resources by calling
close_nic and allocates the resources back, by doing open_nic. However,
this is not needed, if the PF is already in closed state.

This bug causes the driver to call open the device and call request_irq()
when it is not needed.  Ultimately, pci_disable_msix() will crash
when bnxt_en is unloaded.

This patch fixes the problem by skipping __bnxt_close_nic and
__bnxt_open_nic inside bnxt_restore_pf_fw_resources routine, if the
interface is not running.

Fixes: 80fcaf46c092 ("bnxt_en: Restore MSIX after disabling SRIOV.")
Signed-off-by: Venkat Duvvuru <venkatkumar.duvvuru@broadcom.com>
Signed-off-by: Michael Chan <michael.chan@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/broadcom/bnxt/bnxt.c