aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Chan <michael.chan@broadcom.com>2016-04-11 04:11:12 -0400
committerDavid S. Miller <davem@davemloft.net>2016-04-11 14:58:44 -0400
commit33f7d55f07ab964055d73d38774346f8d4821f00 (patch)
treeafbde59e43c7a12e3b9546f43d026dfb91daa252
parent03efbec03198a0f505c2a6c93268c3c5df321c90 (diff)
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: Michael Chan <michael.chan@broadcom.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/ethernet/broadcom/bnxt/bnxt.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
index a06dcaa75f6e..e874a564f40b 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
@@ -4790,6 +4790,21 @@ int bnxt_hwrm_set_link_setting(struct bnxt *bp, bool set_pause, bool set_eee)
4790 return hwrm_send_message(bp, &req, sizeof(req), HWRM_CMD_TIMEOUT); 4790 return hwrm_send_message(bp, &req, sizeof(req), HWRM_CMD_TIMEOUT);
4791} 4791}
4792 4792
4793static int bnxt_hwrm_shutdown_link(struct bnxt *bp)
4794{
4795 struct hwrm_port_phy_cfg_input req = {0};
4796
4797 if (BNXT_VF(bp))
4798 return 0;
4799
4800 if (pci_num_vf(bp->pdev))
4801 return 0;
4802
4803 bnxt_hwrm_cmd_hdr_init(bp, &req, HWRM_PORT_PHY_CFG, -1, -1);
4804 req.flags = cpu_to_le32(PORT_PHY_CFG_REQ_FLAGS_FORCE_LINK_DOWN);
4805 return hwrm_send_message(bp, &req, sizeof(req), HWRM_CMD_TIMEOUT);
4806}
4807
4793static bool bnxt_eee_config_ok(struct bnxt *bp) 4808static bool bnxt_eee_config_ok(struct bnxt *bp)
4794{ 4809{
4795 struct ethtool_eee *eee = &bp->eee; 4810 struct ethtool_eee *eee = &bp->eee;
@@ -5044,6 +5059,7 @@ static int bnxt_close(struct net_device *dev)
5044 struct bnxt *bp = netdev_priv(dev); 5059 struct bnxt *bp = netdev_priv(dev);
5045 5060
5046 bnxt_close_nic(bp, true, true); 5061 bnxt_close_nic(bp, true, true);
5062 bnxt_hwrm_shutdown_link(bp);
5047 return 0; 5063 return 0;
5048} 5064}
5049 5065