]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
bnxt_en: Shutdown link when device is closed.
authorMichael Chan <michael.chan@broadcom.com>
Mon, 11 Apr 2016 08:11:12 +0000 (04:11 -0400)
committerChuck Anderson <chuck.anderson@oracle.com>
Thu, 7 Jul 2016 00:37:18 +0000 (17:37 -0700)
Orabug: 23221795

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>
(cherry picked from commit 33f7d55f07ab964055d73d38774346f8d4821f00)
Signed-off-by: Brian Maly <brian.maly@oracle.com>
drivers/net/ethernet/broadcom/bnxt/bnxt.c

index 84340c242a35a7c42fdf8ea6027b94b942dc7d07..957907a88015e14adf82366e9b81e19f297716b1 100644 (file)
@@ -4912,6 +4912,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);
 }
 
+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)
 {
        struct ethtool_eee *eee = &bp->eee;
@@ -5166,6 +5181,7 @@ static int bnxt_close(struct net_device *dev)
        struct bnxt *bp = netdev_priv(dev);
 
        bnxt_close_nic(bp, true, true);
+       bnxt_hwrm_shutdown_link(bp);
        return 0;
 }