net/ice/base: update IPv4 and IPv6 flow packet type masks
[dpdk.git] / drivers / net / ice / base / ice_flow.h
index c8a0483..9298766 100644 (file)
@@ -7,6 +7,7 @@
 
 #include "ice_flex_type.h"
 #include "ice_acl.h"
+
 #define ICE_IPV4_MAKE_PREFIX_MASK(prefix) ((u32)(~0) << (32 - (prefix)))
 #define ICE_FLOW_PROF_ID_INVAL         0xfffffffffffffffful
 #define ICE_FLOW_PROF_ID_BYPASS                0
 #define ICE_FLOW_HASH_IPV6     \
        (BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_SA) | \
         BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_DA))
+#define ICE_FLOW_HASH_IPV6_PRE32       \
+       (BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE32_SA) | \
+        BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE32_DA))
+#define ICE_FLOW_HASH_IPV6_PRE48       \
+       (BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE48_SA) | \
+        BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE48_DA))
+#define ICE_FLOW_HASH_IPV6_PRE64       \
+       (BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE64_SA) | \
+        BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE64_DA))
 #define ICE_FLOW_HASH_TCP_PORT \
        (BIT_ULL(ICE_FLOW_FIELD_IDX_TCP_SRC_PORT) | \
         BIT_ULL(ICE_FLOW_FIELD_IDX_TCP_DST_PORT))
 #define ICE_HASH_SCTP_IPV4     (ICE_FLOW_HASH_IPV4 | ICE_FLOW_HASH_SCTP_PORT)
 #define ICE_HASH_SCTP_IPV6     (ICE_FLOW_HASH_IPV6 | ICE_FLOW_HASH_SCTP_PORT)
 
+#define ICE_HASH_TCP_IPV6_PRE32         \
+       (ICE_FLOW_HASH_IPV6_PRE32 | ICE_FLOW_HASH_TCP_PORT)
+#define ICE_HASH_UDP_IPV6_PRE32         \
+       (ICE_FLOW_HASH_IPV6_PRE32 | ICE_FLOW_HASH_UDP_PORT)
+#define ICE_HASH_SCTP_IPV6_PRE32 \
+       (ICE_FLOW_HASH_IPV6_PRE32 | ICE_FLOW_HASH_SCTP_PORT)
+#define ICE_HASH_TCP_IPV6_PRE48         \
+       (ICE_FLOW_HASH_IPV6_PRE48 | ICE_FLOW_HASH_TCP_PORT)
+#define ICE_HASH_UDP_IPV6_PRE48         \
+       (ICE_FLOW_HASH_IPV6_PRE48 | ICE_FLOW_HASH_UDP_PORT)
+#define ICE_HASH_SCTP_IPV6_PRE48 \
+       (ICE_FLOW_HASH_IPV6_PRE48 | ICE_FLOW_HASH_SCTP_PORT)
+#define ICE_HASH_TCP_IPV6_PRE64         \
+       (ICE_FLOW_HASH_IPV6_PRE64 | ICE_FLOW_HASH_TCP_PORT)
+#define ICE_HASH_UDP_IPV6_PRE64         \
+       (ICE_FLOW_HASH_IPV6_PRE64 | ICE_FLOW_HASH_UDP_PORT)
+#define ICE_HASH_SCTP_IPV6_PRE64 \
+       (ICE_FLOW_HASH_IPV6_PRE64 | ICE_FLOW_HASH_SCTP_PORT)
+
 #define ICE_FLOW_HASH_GTP_TEID \
        (BIT_ULL(ICE_FLOW_FIELD_IDX_GTPC_TEID))
 
@@ -148,6 +177,11 @@ enum ice_flow_seg_hdr {
        ICE_FLOW_SEG_HDR_ESP            = 0x00100000,
        ICE_FLOW_SEG_HDR_AH             = 0x00200000,
        ICE_FLOW_SEG_HDR_NAT_T_ESP      = 0x00400000,
+       ICE_FLOW_SEG_HDR_ETH_NON_IP     = 0x00800000,
+       /* The following is an additive bit for ICE_FLOW_SEG_HDR_IPV4 and
+        * ICE_FLOW_SEG_HDR_IPV6 which include the IPV4 other PTYPEs
+        */
+       ICE_FLOW_SEG_HDR_IPV_OTHER      = 0x20000000,
 };
 
 /* These segements all have the same PTYPES, but are otherwise distinguished by
@@ -184,6 +218,12 @@ enum ice_flow_field {
        ICE_FLOW_FIELD_IDX_IPV4_DA,
        ICE_FLOW_FIELD_IDX_IPV6_SA,
        ICE_FLOW_FIELD_IDX_IPV6_DA,
+       ICE_FLOW_FIELD_IDX_IPV6_PRE32_SA,
+       ICE_FLOW_FIELD_IDX_IPV6_PRE32_DA,
+       ICE_FLOW_FIELD_IDX_IPV6_PRE48_SA,
+       ICE_FLOW_FIELD_IDX_IPV6_PRE48_DA,
+       ICE_FLOW_FIELD_IDX_IPV6_PRE64_SA,
+       ICE_FLOW_FIELD_IDX_IPV6_PRE64_DA,
        /* L4 */
        ICE_FLOW_FIELD_IDX_TCP_SRC_PORT,
        ICE_FLOW_FIELD_IDX_TCP_DST_PORT,
@@ -470,8 +510,8 @@ ice_flow_add_entry(struct ice_hw *hw, enum ice_block blk, u64 prof_id,
                   u64 entry_id, u16 vsi, enum ice_flow_priority prio,
                   void *data, struct ice_flow_action *acts, u8 acts_cnt,
                   u64 *entry_h);
-enum ice_status ice_flow_rem_entry(struct ice_hw *hw, enum ice_block blk,
-                                  u64 entry_h);
+enum ice_status
+ice_flow_rem_entry(struct ice_hw *hw, enum ice_block blk, u64 entry_h);
 void
 ice_flow_set_fld(struct ice_flow_seg_info *seg, enum ice_flow_field fld,
                 u16 val_loc, u16 mask_loc, u16 last_loc, bool range);