aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorScott Branden <scott.branden@broadcom.com>2017-11-30 14:36:00 -0500
committerDavid S. Miller <davem@davemloft.net>2017-12-01 15:29:40 -0500
commit6502ad5963a5307089bed395f63173e34cb251ea (patch)
treeed8fc903ab8a2cb7f9b3e96cdedc2fc4e7b25f39
parent40e44a1e669d078946f46853808a60d29e6f0885 (diff)
bnxt_en: Add ETH_RESET_AP support
Add ETH_RESET_AP support handling to reset the internal Application Processor(s) of the SmartNIC card. Signed-off-by: Scott Branden <scott.branden@broadcom.com> Acked-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_ethtool.c11
-rw-r--r--drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.h1
2 files changed, 12 insertions, 0 deletions
diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c b/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c
index b13ce5ebde8d..fe7599f404bf 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c
@@ -1376,6 +1376,9 @@ static int bnxt_firmware_reset(struct net_device *dev,
1376 req.embedded_proc_type = FW_RESET_REQ_EMBEDDED_PROC_TYPE_CHIP; 1376 req.embedded_proc_type = FW_RESET_REQ_EMBEDDED_PROC_TYPE_CHIP;
1377 req.selfrst_status = FW_RESET_REQ_SELFRST_STATUS_SELFRSTASAP; 1377 req.selfrst_status = FW_RESET_REQ_SELFRST_STATUS_SELFRSTASAP;
1378 break; 1378 break;
1379 case BNXT_FW_RESET_AP:
1380 req.embedded_proc_type = FW_RESET_REQ_EMBEDDED_PROC_TYPE_AP;
1381 break;
1379 default: 1382 default:
1380 return -EINVAL; 1383 return -EINVAL;
1381 } 1384 }
@@ -2522,6 +2525,14 @@ static int bnxt_reset(struct net_device *dev, u32 *flags)
2522 rc = bnxt_firmware_reset(dev, BNXT_FW_RESET_CHIP); 2525 rc = bnxt_firmware_reset(dev, BNXT_FW_RESET_CHIP);
2523 if (!rc) 2526 if (!rc)
2524 netdev_info(dev, "Reset request successful. Reload driver to complete reset\n"); 2527 netdev_info(dev, "Reset request successful. Reload driver to complete reset\n");
2528 } else if (*flags == ETH_RESET_AP) {
2529 /* This feature is not supported in older firmware versions */
2530 if (bp->hwrm_spec_code < 0x10803)
2531 return -EOPNOTSUPP;
2532
2533 rc = bnxt_firmware_reset(dev, BNXT_FW_RESET_AP);
2534 if (!rc)
2535 netdev_info(dev, "Reset Application Processor request successful.\n");
2525 } else { 2536 } else {
2526 rc = -EINVAL; 2537 rc = -EINVAL;
2527 } 2538 }
diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.h b/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.h
index ff601b42fcc8..836ef682f24c 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.h
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.h
@@ -34,6 +34,7 @@ struct bnxt_led_cfg {
34#define BNXT_LED_DFLT_ENABLES(x) \ 34#define BNXT_LED_DFLT_ENABLES(x) \
35 cpu_to_le32(BNXT_LED_DFLT_ENA << (BNXT_LED_DFLT_ENA_SHIFT * (x))) 35 cpu_to_le32(BNXT_LED_DFLT_ENA << (BNXT_LED_DFLT_ENA_SHIFT * (x)))
36 36
37#define BNXT_FW_RESET_AP 0xfffe
37#define BNXT_FW_RESET_CHIP 0xffff 38#define BNXT_FW_RESET_CHIP 0xffff
38 39
39extern const struct ethtool_ops bnxt_ethtool_ops; 40extern const struct ethtool_ops bnxt_ethtool_ops;