Commit 33f7d55f authored by Michael Chan's avatar Michael Chan Committed by David S. Miller

bnxt_en: Shutdown link when device is closed.

Let firmware know that the driver is giving up control of the link so that
it can be shutdown if no management firmware is running.
Signed-off-by: default avatarMichael Chan <michael.chan@broadcom.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 03efbec0
...@@ -4790,6 +4790,21 @@ int bnxt_hwrm_set_link_setting(struct bnxt *bp, bool set_pause, bool set_eee) ...@@ -4790,6 +4790,21 @@ int bnxt_hwrm_set_link_setting(struct bnxt *bp, bool set_pause, bool set_eee)
return hwrm_send_message(bp, &req, sizeof(req), HWRM_CMD_TIMEOUT); return hwrm_send_message(bp, &req, sizeof(req), HWRM_CMD_TIMEOUT);
} }
static int bnxt_hwrm_shutdown_link(struct bnxt *bp)
{
struct hwrm_port_phy_cfg_input req = {0};
if (BNXT_VF(bp))
return 0;
if (pci_num_vf(bp->pdev))
return 0;
bnxt_hwrm_cmd_hdr_init(bp, &req, HWRM_PORT_PHY_CFG, -1, -1);
req.flags = cpu_to_le32(PORT_PHY_CFG_REQ_FLAGS_FORCE_LINK_DOWN);
return hwrm_send_message(bp, &req, sizeof(req), HWRM_CMD_TIMEOUT);
}
static bool bnxt_eee_config_ok(struct bnxt *bp) static bool bnxt_eee_config_ok(struct bnxt *bp)
{ {
struct ethtool_eee *eee = &bp->eee; struct ethtool_eee *eee = &bp->eee;
...@@ -5044,6 +5059,7 @@ static int bnxt_close(struct net_device *dev) ...@@ -5044,6 +5059,7 @@ static int bnxt_close(struct net_device *dev)
struct bnxt *bp = netdev_priv(dev); struct bnxt *bp = netdev_priv(dev);
bnxt_close_nic(bp, true, true); bnxt_close_nic(bp, true, true);
bnxt_hwrm_shutdown_link(bp);
return 0; return 0;
} }
......
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