net/ice/base: add QFI for flow director
[dpdk.git] / drivers / net / ice / base / ice_flex_type.h
index 92d205a..1be98ea 100644 (file)
@@ -278,6 +278,69 @@ enum ice_sect {
 #define ICE_PTYPE_IPV6_TCP_PAY         92
 #define ICE_PTYPE_IPV6_SCTP_PAY                93
 #define ICE_PTYPE_IPV6_ICMP_PAY                94
+#define ICE_MAC_IPV4_GTPC_TEID         325
+#define ICE_MAC_IPV6_GTPC_TEID         326
+#define ICE_MAC_IPV4_GTPC              327
+#define ICE_MAC_IPV6_GTPC              328
+#define ICE_MAC_IPV4_GTPU              329
+#define ICE_MAC_IPV6_GTPU              330
+#define ICE_MAC_IPV4_GTPU_IPV4_FRAG    331
+#define ICE_MAC_IPV4_GTPU_IPV4_PAY     332
+#define ICE_MAC_IPV4_GTPU_IPV4_UDP_PAY 333
+#define ICE_MAC_IPV4_GTPU_IPV4_TCP     334
+#define ICE_MAC_IPV4_GTPU_IPV4_ICMP    335
+#define ICE_MAC_IPV6_GTPU_IPV4_FRAG    336
+#define ICE_MAC_IPV6_GTPU_IPV4_PAY     337
+#define ICE_MAC_IPV6_GTPU_IPV4_UDP_PAY 338
+#define ICE_MAC_IPV6_GTPU_IPV4_TCP     339
+#define ICE_MAC_IPV6_GTPU_IPV4_ICMP    340
+#define ICE_MAC_IPV4_GTPU_IPV6_FRAG    341
+#define ICE_MAC_IPV4_GTPU_IPV6_PAY     342
+#define ICE_MAC_IPV4_GTPU_IPV6_UDP_PAY 343
+#define ICE_MAC_IPV4_GTPU_IPV6_TCP     344
+#define ICE_MAC_IPV4_GTPU_IPV6_ICMPV6  345
+#define ICE_MAC_IPV6_GTPU_IPV6_FRAG    346
+#define ICE_MAC_IPV6_GTPU_IPV6_PAY     347
+#define ICE_MAC_IPV6_GTPU_IPV6_UDP_PAY 348
+#define ICE_MAC_IPV6_GTPU_IPV6_TCP     349
+#define ICE_MAC_IPV6_GTPU_IPV6_ICMPV6  350
+
+/* Attributes that can modify PTYPE definitions.
+ *
+ * These values will represent special attributes for PTYPES, which will
+ * resolve into metadata packet flags definitions that can be used in the TCAM
+ * for identifying a PTYPE with specific characteristics.
+ */
+enum ice_ptype_attrib_type {
+       /* GTP PTYPES */
+       ICE_PTYPE_ATTR_GTP_PDU_EH,
+       ICE_PTYPE_ATTR_GTP_SESSION,
+       ICE_PTYPE_ATTR_GTP_DOWNLINK,
+       ICE_PTYPE_ATTR_GTP_UPLINK,
+};
+
+struct ice_ptype_attrib_info {
+       u16 flags;
+       u16 mask;
+};
+
+/* TCAM flag definitions */
+#define ICE_GTP_PDU                    BIT(14)
+#define ICE_GTP_PDU_LINK               BIT(13)
+
+/* GTP attributes */
+#define ICE_GTP_PDU_FLAG_MASK          (ICE_GTP_PDU)
+#define ICE_GTP_PDU_EH                 ICE_GTP_PDU
+
+#define ICE_GTP_FLAGS_MASK             (ICE_GTP_PDU | ICE_GTP_PDU_LINK)
+#define ICE_GTP_SESSION                        0
+#define ICE_GTP_DOWNLINK               ICE_GTP_PDU
+#define ICE_GTP_UPLINK                 (ICE_GTP_PDU | ICE_GTP_PDU_LINK)
+
+struct ice_ptype_attributes {
+       u16 ptype;
+       enum ice_ptype_attrib_type attrib;
+};
 
 /* Packet Type Groups (PTG) - Inner Most fields (IM) */
 #define ICE_PTG_IM_IPV4_TCP            16
@@ -530,12 +593,14 @@ struct ice_prof_map {
        u8 prof_id;
        u8 ptg_cnt;
        u8 ptg[ICE_MAX_PTG_PER_PROFILE];
+       struct ice_ptype_attrib_info attr[ICE_MAX_PTG_PER_PROFILE];
 };
 
 #define ICE_INVALID_TCAM       0xFFFF
 
 struct ice_tcam_inf {
        u16 tcam_idx;
+       struct ice_ptype_attrib_info attr;
        u8 ptg;
        u8 prof_id;
        u8 in_use;
@@ -708,6 +773,7 @@ struct ice_chs_chg {
        u16 vsig;
        u16 orig_vsig;
        u16 tcam_idx;
+       struct ice_ptype_attrib_info attr;
 };
 
 #define ICE_FLOW_PTYPE_MAX             ICE_XLT1_CNT