net/mlx5: fix initialization of steering registers
[dpdk.git] / drivers / net / bnxt / bnxt_filter.h
index 6e90a98..4b2b3ca 100644 (file)
@@ -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;
@@ -71,11 +84,16 @@ struct bnxt_filter_info {
        uint16_t                ip_addr_type;
        uint16_t                ethertype;
        uint32_t                priority;
+       /* 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);