net/bnxt: fix Thor SVIF size for generic tables
[dpdk.git] / drivers / net / bnxt / bnxt_filter.h
index e09b435..587932c 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.
  */
 
@@ -8,6 +8,12 @@
 
 #include <rte_ether.h>
 
+#define bnxt_vlan_filter_exists(bp, filter, chk, vlan_id)      \
+               (((filter)->enables & (chk)) &&                 \
+                ((filter)->l2_ivlan == (vlan_id) &&            \
+                 (filter)->l2_ivlan_mask == 0x0FFF) &&         \
+                !memcmp((filter)->l2_addr, (bp)->mac_addr,     \
+                        RTE_ETHER_ADDR_LEN))
 struct bnxt;
 
 #define BNXT_FLOW_L2_VALID_FLAG                        BIT(0)
@@ -17,9 +23,16 @@ struct bnxt;
 #define BNXT_FLOW_L2_INNER_DST_VALID_FLAG      BIT(4)
 #define BNXT_FLOW_L2_DROP_FLAG                 BIT(5)
 #define BNXT_FLOW_PARSE_INNER_FLAG             BIT(6)
+#define BNXT_FLOW_MARK_FLAG                    BIT(7)
+
+struct bnxt_flow_stats {
+       uint64_t        packets;
+       uint64_t        bytes;
+};
 
 struct bnxt_filter_info {
        STAILQ_ENTRY(bnxt_filter_info)  next;
+       uint32_t                flow_id;
        uint64_t                fw_l2_filter_id;
        struct bnxt_filter_info *matching_l2_fltr_ptr;
        uint64_t                fw_em_filter_id;
@@ -30,6 +43,7 @@ struct bnxt_filter_info {
 #define HWRM_CFA_EM_FILTER     1
 #define HWRM_CFA_NTUPLE_FILTER 2
 #define HWRM_CFA_TUNNEL_REDIRECT_FILTER        3
+#define HWRM_CFA_CONFIG                4
        uint8_t                 filter_type;
        uint32_t                dst_id;
 
@@ -71,12 +85,16 @@ struct bnxt_filter_info {
        uint16_t                ip_addr_type;
        uint16_t                ethertype;
        uint32_t                priority;
-       uint8_t                 dflt;
+       /* Backptr to vnic. As of now, used only by an L2 filter
+        * to remember which vnic it was created on
+        */
+       struct                  bnxt_vnic_info *vnic;
+       uint32_t                mark;
+       struct bnxt_flow_stats  hw_stats;
 };
 
 struct bnxt_filter_info *bnxt_alloc_filter(struct bnxt *bp);
 struct bnxt_filter_info *bnxt_alloc_vf_filter(struct bnxt *bp, uint16_t vf);
-void bnxt_init_filters(struct bnxt *bp);
 void bnxt_free_all_filters(struct bnxt *bp);
 void bnxt_free_filter_mem(struct bnxt *bp);
 int bnxt_alloc_filter_mem(struct bnxt *bp);