Merge tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma
[platform/kernel/linux-starfive.git] / drivers / net / ethernet / broadcom / bnxt / bnxt.h
index eb0314d..98e0cef 100644 (file)
@@ -671,6 +671,10 @@ struct nqe_cn {
 #define HWRM_MIN_TIMEOUT               25
 #define HWRM_MAX_TIMEOUT               40
 
+#define HWRM_WAIT_MUST_ABORT(bp, req)                                  \
+       (le16_to_cpu((req)->req_type) != HWRM_VER_GET &&                \
+        !bnxt_is_fw_healthy(bp))
+
 #define HWRM_TOTAL_TIMEOUT(n)  (((n) <= HWRM_SHORT_TIMEOUT_COUNTER) ?  \
        ((n) * HWRM_SHORT_MIN_TIMEOUT) :                                \
        (HWRM_SHORT_TIMEOUT_COUNTER * HWRM_SHORT_MIN_TIMEOUT +          \
@@ -1337,9 +1341,6 @@ struct bnxt_led_info {
 
 struct bnxt_test_info {
        u8 offline_mask;
-       u8 flags;
-#define BNXT_TEST_FL_EXT_LPBK          0x1
-#define BNXT_TEST_FL_AN_PHY_LPBK       0x2
        u16 timeout;
        char string[BNXT_MAX_TEST][ETH_GSTRING_LEN];
 };
@@ -1560,6 +1561,7 @@ struct bnxt_fw_reporter_ctx {
 #define BNXT_FW_STATUS_HEALTH_MSK      0xffff
 #define BNXT_FW_STATUS_HEALTHY         0x8000
 #define BNXT_FW_STATUS_SHUTDOWN                0x100000
+#define BNXT_FW_STATUS_RECOVERING      0x400000
 
 #define BNXT_FW_IS_HEALTHY(sts)                (((sts) & BNXT_FW_STATUS_HEALTH_MSK) ==\
                                         BNXT_FW_STATUS_HEALTHY)
@@ -1570,6 +1572,9 @@ struct bnxt_fw_reporter_ctx {
 #define BNXT_FW_IS_ERR(sts)            (((sts) & BNXT_FW_STATUS_HEALTH_MSK) > \
                                         BNXT_FW_STATUS_HEALTHY)
 
+#define BNXT_FW_IS_RECOVERING(sts)     (BNXT_FW_IS_ERR(sts) &&                \
+                                        ((sts) & BNXT_FW_STATUS_RECOVERING))
+
 #define BNXT_FW_RETRY                  5
 #define BNXT_FW_IF_RETRY               10
 
@@ -1685,7 +1690,6 @@ struct bnxt {
        #define BNXT_FLAG_SHARED_RINGS  0x200
        #define BNXT_FLAG_PORT_STATS    0x400
        #define BNXT_FLAG_UDP_RSS_CAP   0x800
-       #define BNXT_FLAG_EEE_CAP       0x1000
        #define BNXT_FLAG_NEW_RSS_CAP   0x2000
        #define BNXT_FLAG_WOL_CAP       0x4000
        #define BNXT_FLAG_ROCEV1_CAP    0x8000
@@ -1712,8 +1716,10 @@ struct bnxt {
 #define BNXT_NPAR(bp)          ((bp)->port_partition_type)
 #define BNXT_MH(bp)            ((bp)->flags & BNXT_FLAG_MULTI_HOST)
 #define BNXT_SINGLE_PF(bp)     (BNXT_PF(bp) && !BNXT_NPAR(bp) && !BNXT_MH(bp))
+#define BNXT_SH_PORT_CFG_OK(bp)        (BNXT_PF(bp) &&                         \
+                                ((bp)->phy_flags & BNXT_PHY_FL_SHARED_PORT_CFG))
 #define BNXT_PHY_CFG_ABLE(bp)  ((BNXT_SINGLE_PF(bp) ||                 \
-                                 ((bp)->fw_cap & BNXT_FW_CAP_SHARED_PORT_CFG)) && \
+                                 BNXT_SH_PORT_CFG_OK(bp)) &&           \
                                 (bp)->link_info.phy_state == BNXT_PHY_STATE_ENABLED)
 #define BNXT_CHIP_TYPE_NITRO_A0(bp) ((bp)->flags & BNXT_FLAG_CHIP_NITRO_A0)
 #define BNXT_RX_PAGE_MODE(bp)  ((bp)->flags & BNXT_FLAG_RX_PAGE_MODE)
@@ -1862,11 +1868,9 @@ struct bnxt {
        #define BNXT_FW_CAP_EXT_STATS_SUPPORTED         0x00040000
        #define BNXT_FW_CAP_ERR_RECOVER_RELOAD          0x00100000
        #define BNXT_FW_CAP_HOT_RESET                   0x00200000
-       #define BNXT_FW_CAP_SHARED_PORT_CFG             0x00400000
        #define BNXT_FW_CAP_VLAN_RX_STRIP               0x01000000
        #define BNXT_FW_CAP_VLAN_TX_INSERT              0x02000000
        #define BNXT_FW_CAP_EXT_HW_STATS_SUPPORTED      0x04000000
-       #define BNXT_FW_CAP_PORT_STATS_NO_RESET         0x10000000
        #define BNXT_FW_CAP_RING_MONITOR                0x40000000
 
 #define BNXT_NEW_RM(bp)                ((bp)->fw_cap & BNXT_FW_CAP_NEW_RM)
@@ -1909,6 +1913,8 @@ struct bnxt {
 
        u16                     vxlan_fw_dst_port_id;
        u16                     nge_fw_dst_port_id;
+       __be16                  vxlan_port;
+       __be16                  nge_port;
        u8                      port_partition_type;
        u8                      port_count;
        u16                     br_mode;
@@ -2001,6 +2007,17 @@ struct bnxt {
        u32                     lpi_tmr_lo;
        u32                     lpi_tmr_hi;
 
+       /* copied from flags in hwrm_port_phy_qcaps_output */
+       u8                      phy_flags;
+#define BNXT_PHY_FL_EEE_CAP            PORT_PHY_QCAPS_RESP_FLAGS_EEE_SUPPORTED
+#define BNXT_PHY_FL_EXT_LPBK           PORT_PHY_QCAPS_RESP_FLAGS_EXTERNAL_LPBK_SUPPORTED
+#define BNXT_PHY_FL_AN_PHY_LPBK                PORT_PHY_QCAPS_RESP_FLAGS_AUTONEG_LPBK_SUPPORTED
+#define BNXT_PHY_FL_SHARED_PORT_CFG    PORT_PHY_QCAPS_RESP_FLAGS_SHARED_PHY_CFG_SUPPORTED
+#define BNXT_PHY_FL_PORT_STATS_NO_RESET        PORT_PHY_QCAPS_RESP_FLAGS_CUMULATIVE_COUNTERS_ON_RESET
+#define BNXT_PHY_FL_NO_PHY_LPBK                PORT_PHY_QCAPS_RESP_FLAGS_LOCAL_LPBK_NOT_SUPPORTED
+#define BNXT_PHY_FL_FW_MANAGED_LKDN    PORT_PHY_QCAPS_RESP_FLAGS_FW_MANAGED_LINK_DOWN
+#define BNXT_PHY_FL_NO_FCS             PORT_PHY_QCAPS_RESP_FLAGS_NO_FCS
+
        u8                      num_tests;
        struct bnxt_test_info   *test_info;
 
@@ -2227,6 +2244,7 @@ int bnxt_hwrm_set_link_setting(struct bnxt *, bool, bool);
 int bnxt_hwrm_alloc_wol_fltr(struct bnxt *bp);
 int bnxt_hwrm_free_wol_fltr(struct bnxt *bp);
 int bnxt_hwrm_func_resc_qcaps(struct bnxt *bp, bool all);
+bool bnxt_is_fw_healthy(struct bnxt *bp);
 int bnxt_hwrm_fw_set_time(struct bnxt *);
 int bnxt_open_nic(struct bnxt *, bool, bool);
 int bnxt_half_open_nic(struct bnxt *bp);