diff options
author | Scott Branden <scott.branden@broadcom.com> | 2017-11-30 14:36:00 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2017-12-01 15:29:40 -0500 |
commit | 6502ad5963a5307089bed395f63173e34cb251ea (patch) | |
tree | ed8fc903ab8a2cb7f9b3e96cdedc2fc4e7b25f39 | |
parent | 40e44a1e669d078946f46853808a60d29e6f0885 (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.c | 11 | ||||
-rw-r--r-- | drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.h | 1 |
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 | ||
39 | extern const struct ethtool_ops bnxt_ethtool_ops; | 40 | extern const struct ethtool_ops bnxt_ethtool_ops; |