net/ice: clean GTPU flow type for flow director
[dpdk.git] / drivers / net / bnxt / bnxt.h
index 2a318ef..b4370e5 100644 (file)
@@ -1,5 +1,5 @@
 /* SPDX-License-Identifier: BSD-3-Clause
- * Copyright(c) 2014-2018 Broadcom
+ * Copyright(c) 2014-2021 Broadcom
  * All rights reserved.
  */
 
@@ -12,7 +12,7 @@
 
 #include <rte_pci.h>
 #include <rte_bus_pci.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
 #include <rte_memory.h>
 #include <rte_lcore.h>
 #include <rte_spinlock.h>
 #define BROADCOM_DEV_ID_STRATUS_NIC_VF2 0x1609
 #define BROADCOM_DEV_ID_STRATUS_NIC    0x1614
 #define BROADCOM_DEV_ID_57414_VF       0x16c1
-#define BROADCOM_DEV_ID_57301          0x16c8
-#define BROADCOM_DEV_ID_57302          0x16c9
-#define BROADCOM_DEV_ID_57304_PF       0x16ca
 #define BROADCOM_DEV_ID_57304_VF       0x16cb
 #define BROADCOM_DEV_ID_57417_MF       0x16cc
 #define BROADCOM_DEV_ID_NS2            0x16cd
-#define BROADCOM_DEV_ID_57311          0x16ce
-#define BROADCOM_DEV_ID_57312          0x16cf
-#define BROADCOM_DEV_ID_57402          0x16d0
-#define BROADCOM_DEV_ID_57404          0x16d1
-#define BROADCOM_DEV_ID_57406_PF       0x16d2
 #define BROADCOM_DEV_ID_57406_VF       0x16d3
-#define BROADCOM_DEV_ID_57402_MF       0x16d4
-#define BROADCOM_DEV_ID_57407_RJ45     0x16d5
 #define BROADCOM_DEV_ID_57412          0x16d6
 #define BROADCOM_DEV_ID_57414          0x16d7
 #define BROADCOM_DEV_ID_57416_RJ45     0x16d8
 #define BROADCOM_DEV_ID_57417_RJ45     0x16d9
 #define BROADCOM_DEV_ID_5741X_VF       0x16dc
 #define BROADCOM_DEV_ID_57412_MF       0x16de
-#define BROADCOM_DEV_ID_57314          0x16df
 #define BROADCOM_DEV_ID_57317_RJ45     0x16e0
 #define BROADCOM_DEV_ID_5731X_VF       0x16e1
 #define BROADCOM_DEV_ID_57417_SFP      0x16e2
 #define BROADCOM_DEV_ID_57416_SFP      0x16e3
 #define BROADCOM_DEV_ID_57317_SFP      0x16e4
-#define BROADCOM_DEV_ID_57404_MF       0x16e7
-#define BROADCOM_DEV_ID_57406_MF       0x16e8
-#define BROADCOM_DEV_ID_57407_SFP      0x16e9
 #define BROADCOM_DEV_ID_57407_MF       0x16ea
 #define BROADCOM_DEV_ID_57414_MF       0x16ec
 #define BROADCOM_DEV_ID_57416_MF       0x16ee
 #define BROADCOM_DEV_ID_58804          0xd804
 #define BROADCOM_DEV_ID_58808          0x16f0
 #define BROADCOM_DEV_ID_58802_VF       0xd800
+#define BROADCOM_DEV_ID_58812          0xd812
+#define BROADCOM_DEV_ID_58814          0xd814
+#define BROADCOM_DEV_ID_58818          0xd818
+#define BROADCOM_DEV_ID_58818_VF       0xd82e
 
 #define BROADCOM_DEV_957508_N2100      0x5208
 #define IS_BNXT_DEV_957508_N2100(bp)   \
  */
 #ifdef RTE_EXEC_ENV_FREEBSD
 /* In FreeBSD OS, nic_uio driver does not support interrupts */
-#define BNXT_NUM_ASYNC_CPR(bp) 0
+#define BNXT_NUM_ASYNC_CPR(bp) 0U
 #else
-#define BNXT_NUM_ASYNC_CPR(bp) 1
+#define BNXT_NUM_ASYNC_CPR(bp) 1U
 #endif
 
 #define BNXT_MISC_VEC_ID               RTE_INTR_VEC_ZERO_OFFSET
@@ -381,14 +371,20 @@ struct bnxt_coal {
 };
 
 /* 64-bit doorbell */
+#define DBR_EPOCH_MASK                         0x01000000UL
+#define DBR_EPOCH_SFT                          24
 #define DBR_XID_SFT                            32
 #define DBR_PATH_L2                            (0x1ULL << 56)
+#define DBR_VALID                              (0x1ULL << 58)
 #define DBR_TYPE_SQ                            (0x0ULL << 60)
 #define DBR_TYPE_SRQ                           (0x2ULL << 60)
 #define DBR_TYPE_CQ                            (0x4ULL << 60)
 #define DBR_TYPE_NQ                            (0xaULL << 60)
 #define DBR_TYPE_NQ_ARM                                (0xbULL << 60)
 
+#define DB_PF_OFFSET                   0x10000
+#define DB_VF_OFFSET                   0x4000
+
 #define BNXT_RSS_TBL_SIZE_P5           512U
 #define BNXT_RSS_ENTRIES_PER_CTX_P5    64
 #define BNXT_MAX_RSS_CTXTS_P5 \
@@ -583,6 +579,7 @@ struct bnxt_rep_info {
                                     DEV_RX_OFFLOAD_UDP_CKSUM | \
                                     DEV_RX_OFFLOAD_TCP_CKSUM | \
                                     DEV_RX_OFFLOAD_OUTER_IPV4_CKSUM | \
+                                    DEV_RX_OFFLOAD_OUTER_UDP_CKSUM | \
                                     DEV_RX_OFFLOAD_JUMBO_FRAME | \
                                     DEV_RX_OFFLOAD_KEEP_CRC | \
                                     DEV_RX_OFFLOAD_VLAN_EXTEND | \
@@ -614,6 +611,7 @@ struct bnxt {
        struct rte_eth_dev              *eth_dev;
        struct rte_pci_device           *pdev;
        void                            *doorbell_base;
+       int                             legacy_db_size;
 
        uint32_t                flags;
 #define BNXT_FLAG_REGISTERED           BIT(0)
@@ -645,6 +643,9 @@ struct bnxt {
 #define BNXT_FLAG_DFLT_MAC_SET                 BIT(26)
 #define BNXT_FLAG_TRUFLOW_EN                   BIT(27)
 #define BNXT_FLAG_GFID_ENABLE                  BIT(28)
+#define BNXT_FLAG_RFS_NEEDS_VNIC               BIT(29)
+#define BNXT_FLAG_FLOW_CFA_RFS_RING_TBL_IDX_V2 BIT(30)
+#define BNXT_RFS_NEEDS_VNIC(bp)        ((bp)->flags & BNXT_FLAG_RFS_NEEDS_VNIC)
 #define BNXT_PF(bp)            (!((bp)->flags & BNXT_FLAG_VF))
 #define BNXT_VF(bp)            ((bp)->flags & BNXT_FLAG_VF)
 #define BNXT_NPAR(bp)          ((bp)->flags & BNXT_FLAG_NPAR_PF)
@@ -662,6 +663,10 @@ struct bnxt {
 #define BNXT_TRUFLOW_EN(bp)    ((bp)->flags & BNXT_FLAG_TRUFLOW_EN)
 #define BNXT_GFID_ENABLED(bp)  ((bp)->flags & BNXT_FLAG_GFID_ENABLE)
 
+       uint16_t                chip_num;
+#define CHIP_NUM_58818         0xd818
+#define BNXT_CHIP_SR2(bp)      ((bp)->chip_num == CHIP_NUM_58818)
+
        uint32_t                fw_cap;
 #define BNXT_FW_CAP_HOT_RESET          BIT(0)
 #define BNXT_FW_CAP_IF_CHANGE          BIT(1)
@@ -677,6 +682,7 @@ struct bnxt {
        uint32_t                vnic_cap_flags;
 #define BNXT_VNIC_CAP_COS_CLASSIFY     BIT(0)
 #define BNXT_VNIC_CAP_OUTER_RSS                BIT(1)
+#define BNXT_VNIC_CAP_RX_CMPL_V2       BIT(2)
        unsigned int            rx_nr_rings;
        unsigned int            rx_cp_nr_rings;
        unsigned int            rx_num_qs_per_vnic;
@@ -724,8 +730,19 @@ struct bnxt {
        void                            *hwrm_short_cmd_req_addr;
        rte_iova_t                      hwrm_short_cmd_req_dma_addr;
        rte_spinlock_t                  hwrm_lock;
+       /* synchronize between dev_configure_op and int handler */
        pthread_mutex_t                 def_cp_lock;
+       /* synchronize between dev_start_op and async evt handler
+        * Locking sequence in async evt handler will be
+        * def_cp_lock
+        * health_check_lock
+        */
        pthread_mutex_t                 health_check_lock;
+       /* synchronize between dev_stop/dev_close_op and
+        * error recovery thread triggered as part of
+        * HWRM_ASYNC_EVENT_CMPL_EVENT_ID_RESET_NOTIFY
+        */
+       pthread_mutex_t                 err_recovery_lock;
        uint16_t                        max_req_len;
        uint16_t                        max_resp_len;
        uint16_t                        hwrm_max_ext_req_len;