X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fice%2Fice_generic_flow.h;h=8845a3e15666fdbfb428350593af1184920450ef;hb=689a56742a560cc1baff7255a57efcdfdb789f87;hp=adc30ee2aa620d5295696856d5f9ee1525606836;hpb=ab76e2b03d6aba12542e36488723b402e25a02f6;p=dpdk.git diff --git a/drivers/net/ice/ice_generic_flow.h b/drivers/net/ice/ice_generic_flow.h index adc30ee2aa..8845a3e156 100644 --- a/drivers/net/ice/ice_generic_flow.h +++ b/drivers/net/ice/ice_generic_flow.h @@ -9,174 +9,117 @@ /* protocol */ -#define ICE_PROT_MAC_INNER (1ULL << 1) -#define ICE_PROT_MAC_OUTER (1ULL << 2) -#define ICE_PROT_VLAN_INNER (1ULL << 3) -#define ICE_PROT_VLAN_OUTER (1ULL << 4) -#define ICE_PROT_IPV4_INNER (1ULL << 5) -#define ICE_PROT_IPV4_OUTER (1ULL << 6) -#define ICE_PROT_IPV6_INNER (1ULL << 7) -#define ICE_PROT_IPV6_OUTER (1ULL << 8) -#define ICE_PROT_TCP_INNER (1ULL << 9) -#define ICE_PROT_TCP_OUTER (1ULL << 10) -#define ICE_PROT_UDP_INNER (1ULL << 11) -#define ICE_PROT_UDP_OUTER (1ULL << 12) -#define ICE_PROT_SCTP_INNER (1ULL << 13) -#define ICE_PROT_SCTP_OUTER (1ULL << 14) -#define ICE_PROT_ICMP4_INNER (1ULL << 15) -#define ICE_PROT_ICMP4_OUTER (1ULL << 16) -#define ICE_PROT_ICMP6_INNER (1ULL << 17) -#define ICE_PROT_ICMP6_OUTER (1ULL << 18) -#define ICE_PROT_VXLAN (1ULL << 19) -#define ICE_PROT_NVGRE (1ULL << 20) -#define ICE_PROT_GTPU (1ULL << 21) +#define ICE_PROT_MAC BIT_ULL(1) +#define ICE_PROT_VLAN BIT_ULL(2) +#define ICE_PROT_IPV4 BIT_ULL(3) +#define ICE_PROT_IPV6 BIT_ULL(4) +#define ICE_PROT_TCP BIT_ULL(5) +#define ICE_PROT_UDP BIT_ULL(6) +#define ICE_PROT_SCTP BIT_ULL(7) +#define ICE_PROT_ICMP4 BIT_ULL(8) +#define ICE_PROT_ICMP6 BIT_ULL(9) +#define ICE_PROT_VXLAN BIT_ULL(10) +#define ICE_PROT_NVGRE BIT_ULL(11) +#define ICE_PROT_GTPU BIT_ULL(12) +#define ICE_PROT_PPPOE_S BIT_ULL(13) +#define ICE_PROT_ESP BIT_ULL(14) +#define ICE_PROT_AH BIT_ULL(15) +#define ICE_PROT_L2TPV3OIP BIT_ULL(16) +#define ICE_PROT_PFCP BIT_ULL(17) +#define ICE_PROT_NAT_T_ESP BIT_ULL(18) /* field */ -#define ICE_SMAC (1ULL << 63) -#define ICE_DMAC (1ULL << 62) -#define ICE_ETHERTYPE (1ULL << 61) -#define ICE_IP_SRC (1ULL << 60) -#define ICE_IP_DST (1ULL << 59) -#define ICE_IP_PROTO (1ULL << 58) -#define ICE_IP_TTL (1ULL << 57) -#define ICE_IP_TOS (1ULL << 56) -#define ICE_SPORT (1ULL << 55) -#define ICE_DPORT (1ULL << 54) -#define ICE_ICMP_TYPE (1ULL << 53) -#define ICE_ICMP_CODE (1ULL << 52) -#define ICE_VXLAN_VNI (1ULL << 51) -#define ICE_NVGRE_TNI (1ULL << 50) -#define ICE_GTPU_TEID (1ULL << 49) -#define ICE_GTPU_QFI (1ULL << 48) +#define ICE_SMAC BIT_ULL(63) +#define ICE_DMAC BIT_ULL(62) +#define ICE_ETHERTYPE BIT_ULL(61) +#define ICE_IP_SRC BIT_ULL(60) +#define ICE_IP_DST BIT_ULL(59) +#define ICE_IP_PROTO BIT_ULL(58) +#define ICE_IP_TTL BIT_ULL(57) +#define ICE_IP_TOS BIT_ULL(56) +#define ICE_SPORT BIT_ULL(55) +#define ICE_DPORT BIT_ULL(54) +#define ICE_ICMP_TYPE BIT_ULL(53) +#define ICE_ICMP_CODE BIT_ULL(52) +#define ICE_VXLAN_VNI BIT_ULL(51) +#define ICE_NVGRE_TNI BIT_ULL(50) +#define ICE_GTPU_TEID BIT_ULL(49) +#define ICE_GTPU_QFI BIT_ULL(48) +#define ICE_PPPOE_SESSION BIT_ULL(47) +#define ICE_PPPOE_PROTO BIT_ULL(46) +#define ICE_ESP_SPI BIT_ULL(45) +#define ICE_AH_SPI BIT_ULL(44) +#define ICE_L2TPV3OIP_SESSION_ID BIT_ULL(43) +#define ICE_PFCP_SEID BIT_ULL(42) +#define ICE_PFCP_S_FIELD BIT_ULL(41) +#define ICE_IP_PK_ID BIT_ULL(40) /* input set */ -#define ICE_INSET_NONE 0ULL - -/* non-tunnel */ - -#define ICE_INSET_SMAC (ICE_PROT_MAC_OUTER | ICE_SMAC) -#define ICE_INSET_DMAC (ICE_PROT_MAC_OUTER | ICE_DMAC) -#define ICE_INSET_VLAN_INNER (ICE_PROT_VLAN_INNER) -#define ICE_INSET_VLAN_OUTER (ICE_PROT_VLAN_OUTER) -#define ICE_INSET_ETHERTYPE (ICE_ETHERTYPE) - -#define ICE_INSET_IPV4_SRC \ - (ICE_PROT_IPV4_OUTER | ICE_IP_SRC) -#define ICE_INSET_IPV4_DST \ - (ICE_PROT_IPV4_OUTER | ICE_IP_DST) -#define ICE_INSET_IPV4_TOS \ - (ICE_PROT_IPV4_OUTER | ICE_IP_TOS) -#define ICE_INSET_IPV4_PROTO \ - (ICE_PROT_IPV4_OUTER | ICE_IP_PROTO) -#define ICE_INSET_IPV4_TTL \ - (ICE_PROT_IPV4_OUTER | ICE_IP_TTL) -#define ICE_INSET_IPV6_SRC \ - (ICE_PROT_IPV6_OUTER | ICE_IP_SRC) -#define ICE_INSET_IPV6_DST \ - (ICE_PROT_IPV6_OUTER | ICE_IP_DST) -#define ICE_INSET_IPV6_NEXT_HDR \ - (ICE_PROT_IPV6_OUTER | ICE_IP_PROTO) -#define ICE_INSET_IPV6_HOP_LIMIT \ - (ICE_PROT_IPV6_OUTER | ICE_IP_TTL) -#define ICE_INSET_IPV6_TC \ - (ICE_PROT_IPV6_OUTER | ICE_IP_TOS) - -#define ICE_INSET_TCP_SRC_PORT \ - (ICE_PROT_TCP_OUTER | ICE_SPORT) -#define ICE_INSET_TCP_DST_PORT \ - (ICE_PROT_TCP_OUTER | ICE_DPORT) -#define ICE_INSET_UDP_SRC_PORT \ - (ICE_PROT_UDP_OUTER | ICE_SPORT) -#define ICE_INSET_UDP_DST_PORT \ - (ICE_PROT_UDP_OUTER | ICE_DPORT) -#define ICE_INSET_SCTP_SRC_PORT \ - (ICE_PROT_SCTP_OUTER | ICE_SPORT) -#define ICE_INSET_SCTP_DST_PORT \ - (ICE_PROT_SCTP_OUTER | ICE_DPORT) -#define ICE_INSET_ICMP4_SRC_PORT \ - (ICE_PROT_ICMP4_OUTER | ICE_SPORT) -#define ICE_INSET_ICMP4_DST_PORT \ - (ICE_PROT_ICMP4_OUTER | ICE_DPORT) -#define ICE_INSET_ICMP6_SRC_PORT \ - (ICE_PROT_ICMP6_OUTER | ICE_SPORT) -#define ICE_INSET_ICMP6_DST_PORT \ - (ICE_PROT_ICMP6_OUTER | ICE_DPORT) -#define ICE_INSET_ICMP4_TYPE \ - (ICE_PROT_ICMP4_OUTER | ICE_ICMP_TYPE) -#define ICE_INSET_ICMP4_CODE \ - (ICE_PROT_ICMP4_OUTER | ICE_ICMP_CODE) -#define ICE_INSET_ICMP6_TYPE \ - (ICE_PROT_ICMP6_OUTER | ICE_ICMP_TYPE) -#define ICE_INSET_ICMP6_CODE \ - (ICE_PROT_ICMP6_OUTER | ICE_ICMP_CODE) +#define ICE_INSET_NONE 0ULL + +#define ICE_INSET_SMAC (ICE_SMAC) +#define ICE_INSET_DMAC (ICE_DMAC) +#define ICE_INSET_VLAN (ICE_PROT_VLAN) +#define ICE_INSET_VLAN_INNER (ICE_PROT_VLAN) +#define ICE_INSET_VLAN_OUTER (ICE_PROT_VLAN) +#define ICE_INSET_ETHERTYPE (ICE_ETHERTYPE) + +#define ICE_INSET_IPV4_SRC (ICE_PROT_IPV4 | ICE_IP_SRC) +#define ICE_INSET_IPV4_DST (ICE_PROT_IPV4 | ICE_IP_DST) +#define ICE_INSET_IPV4_TOS (ICE_PROT_IPV4 | ICE_IP_TOS) +#define ICE_INSET_IPV4_PROTO (ICE_PROT_IPV4 | ICE_IP_PROTO) +#define ICE_INSET_IPV4_TTL (ICE_PROT_IPV4 | ICE_IP_TTL) +#define ICE_INSET_IPV4_PKID (ICE_PROT_IPV4 | ICE_IP_PK_ID) +#define ICE_INSET_IPV6_SRC (ICE_PROT_IPV6 | ICE_IP_SRC) +#define ICE_INSET_IPV6_DST (ICE_PROT_IPV6 | ICE_IP_DST) +#define ICE_INSET_IPV6_NEXT_HDR (ICE_PROT_IPV6 | ICE_IP_PROTO) +#define ICE_INSET_IPV6_HOP_LIMIT (ICE_PROT_IPV6 | ICE_IP_TTL) +#define ICE_INSET_IPV6_TC (ICE_PROT_IPV6 | ICE_IP_TOS) +#define ICE_INSET_IPV6_PKID (ICE_PROT_IPV6 | ICE_IP_PK_ID) + +#define ICE_INSET_TCP_SRC_PORT (ICE_PROT_TCP | ICE_SPORT) +#define ICE_INSET_TCP_DST_PORT (ICE_PROT_TCP | ICE_DPORT) +#define ICE_INSET_UDP_SRC_PORT (ICE_PROT_UDP | ICE_SPORT) +#define ICE_INSET_UDP_DST_PORT (ICE_PROT_UDP | ICE_DPORT) +#define ICE_INSET_SCTP_SRC_PORT (ICE_PROT_SCTP | ICE_SPORT) +#define ICE_INSET_SCTP_DST_PORT (ICE_PROT_SCTP | ICE_DPORT) +#define ICE_INSET_ICMP4_SRC_PORT (ICE_PROT_ICMP4 | ICE_SPORT) +#define ICE_INSET_ICMP4_DST_PORT (ICE_PROT_ICMP4 | ICE_DPORT) +#define ICE_INSET_ICMP6_SRC_PORT (ICE_PROT_ICMP6 | ICE_SPORT) +#define ICE_INSET_ICMP6_DST_PORT (ICE_PROT_ICMP6 | ICE_DPORT) +#define ICE_INSET_ICMP4_TYPE (ICE_PROT_ICMP4 | ICE_ICMP_TYPE) +#define ICE_INSET_ICMP4_CODE (ICE_PROT_ICMP4 | ICE_ICMP_CODE) +#define ICE_INSET_ICMP6_TYPE (ICE_PROT_ICMP6 | ICE_ICMP_TYPE) +#define ICE_INSET_ICMP6_CODE (ICE_PROT_ICMP6 | ICE_ICMP_CODE) /* tunnel */ -#define ICE_INSET_TUN_SMAC \ - (ICE_PROT_MAC_INNER | ICE_SMAC) -#define ICE_INSET_TUN_DMAC \ - (ICE_PROT_MAC_INNER | ICE_DMAC) - -#define ICE_INSET_TUN_IPV4_SRC \ - (ICE_PROT_IPV4_INNER | ICE_IP_SRC) -#define ICE_INSET_TUN_IPV4_DST \ - (ICE_PROT_IPV4_INNER | ICE_IP_DST) -#define ICE_INSET_TUN_IPV4_TTL \ - (ICE_PROT_IPV4_INNER | ICE_IP_TTL) -#define ICE_INSET_TUN_IPV4_PROTO \ - (ICE_PROT_IPV4_INNER | ICE_IP_PROTO) -#define ICE_INSET_TUN_IPV4_TOS \ - (ICE_PROT_IPV4_INNER | ICE_IP_TOS) -#define ICE_INSET_TUN_IPV6_SRC \ - (ICE_PROT_IPV6_INNER | ICE_IP_SRC) -#define ICE_INSET_TUN_IPV6_DST \ - (ICE_PROT_IPV6_INNER | ICE_IP_DST) -#define ICE_INSET_TUN_IPV6_HOP_LIMIT \ - (ICE_PROT_IPV6_INNER | ICE_IP_TTL) -#define ICE_INSET_TUN_IPV6_NEXT_HDR \ - (ICE_PROT_IPV6_INNER | ICE_IP_PROTO) -#define ICE_INSET_TUN_IPV6_TC \ - (ICE_PROT_IPV6_INNER | ICE_IP_TOS) - -#define ICE_INSET_TUN_TCP_SRC_PORT \ - (ICE_PROT_TCP_INNER | ICE_SPORT) -#define ICE_INSET_TUN_TCP_DST_PORT \ - (ICE_PROT_TCP_INNER | ICE_DPORT) -#define ICE_INSET_TUN_UDP_SRC_PORT \ - (ICE_PROT_UDP_INNER | ICE_SPORT) -#define ICE_INSET_TUN_UDP_DST_PORT \ - (ICE_PROT_UDP_INNER | ICE_DPORT) -#define ICE_INSET_TUN_SCTP_SRC_PORT \ - (ICE_PROT_SCTP_INNER | ICE_SPORT) -#define ICE_INSET_TUN_SCTP_DST_PORT \ - (ICE_PROT_SCTP_INNER | ICE_DPORT) -#define ICE_INSET_TUN_ICMP4_SRC_PORT \ - (ICE_PROT_ICMP4_INNER | ICE_SPORT) -#define ICE_INSET_TUN_ICMP4_DST_PORT \ - (ICE_PROT_ICMP4_INNER | ICE_DPORT) -#define ICE_INSET_TUN_ICMP6_SRC_PORT \ - (ICE_PROT_ICMP6_INNER | ICE_SPORT) -#define ICE_INSET_TUN_ICMP6_DST_PORT \ - (ICE_PROT_ICMP6_INNER | ICE_DPORT) -#define ICE_INSET_TUN_ICMP4_TYPE \ - (ICE_PROT_ICMP4_INNER | ICE_ICMP_TYPE) -#define ICE_INSET_TUN_ICMP4_CODE \ - (ICE_PROT_ICMP4_INNER | ICE_ICMP_CODE) -#define ICE_INSET_TUN_ICMP6_TYPE \ - (ICE_PROT_ICMP6_INNER | ICE_ICMP_TYPE) -#define ICE_INSET_TUN_ICMP6_CODE \ - (ICE_PROT_ICMP6_INNER | ICE_ICMP_CODE) - -#define ICE_INSET_TUN_VXLAN_VNI \ +#define ICE_INSET_VXLAN_VNI \ (ICE_PROT_VXLAN | ICE_VXLAN_VNI) -#define ICE_INSET_TUN_NVGRE_TNI \ +#define ICE_INSET_NVGRE_TNI \ (ICE_PROT_NVGRE | ICE_NVGRE_TNI) #define ICE_INSET_GTPU_TEID \ (ICE_PROT_GTPU | ICE_GTPU_TEID) #define ICE_INSET_GTPU_QFI \ (ICE_PROT_GTPU | ICE_GTPU_QFI) +#define ICE_INSET_PPPOE_SESSION \ + (ICE_PROT_PPPOE_S | ICE_PPPOE_SESSION) +#define ICE_INSET_PPPOE_PROTO \ + (ICE_PROT_PPPOE_S | ICE_PPPOE_PROTO) +#define ICE_INSET_ESP_SPI \ + (ICE_PROT_ESP | ICE_ESP_SPI) +#define ICE_INSET_AH_SPI \ + (ICE_PROT_AH | ICE_AH_SPI) +#define ICE_INSET_L2TPV3OIP_SESSION_ID \ + (ICE_PROT_L2TPV3OIP | ICE_L2TPV3OIP_SESSION_ID) +#define ICE_INSET_PFCP_S_FIELD \ + (ICE_PROT_PFCP | ICE_PFCP_S_FIELD) +#define ICE_INSET_PFCP_SEID \ + (ICE_PROT_PFCP | ICE_PFCP_S_FIELD | ICE_PFCP_SEID) +#define ICE_INSET_NAT_T_ESP_SPI \ + (ICE_PROT_NAT_T_ESP | ICE_ESP_SPI) /* empty pattern */ extern enum rte_flow_item_type pattern_empty[]; @@ -210,6 +153,9 @@ extern enum rte_flow_item_type pattern_eth_qinq_ipv4_icmp[]; extern enum rte_flow_item_type pattern_eth_ipv6[]; extern enum rte_flow_item_type pattern_eth_vlan_ipv6[]; extern enum rte_flow_item_type pattern_eth_qinq_ipv6[]; +extern enum rte_flow_item_type pattern_eth_ipv6_frag_ext[]; +extern enum rte_flow_item_type pattern_eth_vlan_ipv6_frag_ext[]; +extern enum rte_flow_item_type pattern_eth_qinq_ipv6_frag_ext[]; extern enum rte_flow_item_type pattern_eth_ipv6_udp[]; extern enum rte_flow_item_type pattern_eth_vlan_ipv6_udp[]; extern enum rte_flow_item_type pattern_eth_qinq_ipv6_udp[]; @@ -335,22 +281,72 @@ extern enum rte_flow_item_type pattern_eth_ipv6_nvgre_eth_ipv6_udp[]; extern enum rte_flow_item_type pattern_eth_ipv6_nvgre_eth_ipv6_sctp[]; extern enum rte_flow_item_type pattern_eth_ipv6_nvgre_eth_ipv6_icmp6[]; -/* GTPU */ +/* IPv4 GTPU (EH) */ extern enum rte_flow_item_type pattern_eth_ipv4_gtpu[]; -extern enum rte_flow_item_type pattern_eth_ipv4_gtpu_ipv4[]; extern enum rte_flow_item_type pattern_eth_ipv4_gtpu_eh[]; + +/* IPv6 GTPU (EH) */ +extern enum rte_flow_item_type pattern_eth_ipv6_gtpu[]; +extern enum rte_flow_item_type pattern_eth_ipv6_gtpu_eh[]; + +/* IPv4 GTPU IPv4 */ +extern enum rte_flow_item_type pattern_eth_ipv4_gtpu_ipv4[]; +extern enum rte_flow_item_type pattern_eth_ipv4_gtpu_ipv4_udp[]; +extern enum rte_flow_item_type pattern_eth_ipv4_gtpu_ipv4_tcp[]; +extern enum rte_flow_item_type pattern_eth_ipv4_gtpu_ipv4_icmp[]; + +/* IPv4 GTPU IPv6 */ +extern enum rte_flow_item_type pattern_eth_ipv4_gtpu_ipv6[]; +extern enum rte_flow_item_type pattern_eth_ipv4_gtpu_ipv6_udp[]; +extern enum rte_flow_item_type pattern_eth_ipv4_gtpu_ipv6_tcp[]; +extern enum rte_flow_item_type pattern_eth_ipv4_gtpu_ipv6_icmp[]; + +/* IPv6 GTPU IPv4 */ +extern enum rte_flow_item_type pattern_eth_ipv6_gtpu_ipv4[]; +extern enum rte_flow_item_type pattern_eth_ipv6_gtpu_ipv4_udp[]; +extern enum rte_flow_item_type pattern_eth_ipv6_gtpu_ipv4_tcp[]; +extern enum rte_flow_item_type pattern_eth_ipv6_gtpu_ipv4_icmp[]; + +/* IPv6 GTPU IPv6 */ +extern enum rte_flow_item_type pattern_eth_ipv6_gtpu_ipv6[]; +extern enum rte_flow_item_type pattern_eth_ipv6_gtpu_ipv6_udp[]; +extern enum rte_flow_item_type pattern_eth_ipv6_gtpu_ipv6_tcp[]; +extern enum rte_flow_item_type pattern_eth_ipv6_gtpu_ipv6_icmp[]; + +/* IPv4 GTPU EH IPv4 */ extern enum rte_flow_item_type pattern_eth_ipv4_gtpu_eh_ipv4[]; extern enum rte_flow_item_type pattern_eth_ipv4_gtpu_eh_ipv4_udp[]; extern enum rte_flow_item_type pattern_eth_ipv4_gtpu_eh_ipv4_tcp[]; extern enum rte_flow_item_type pattern_eth_ipv4_gtpu_eh_ipv4_icmp[]; +/* IPv4 GTPU EH IPv6 */ +extern enum rte_flow_item_type pattern_eth_ipv4_gtpu_eh_ipv6[]; +extern enum rte_flow_item_type pattern_eth_ipv4_gtpu_eh_ipv6_udp[]; +extern enum rte_flow_item_type pattern_eth_ipv4_gtpu_eh_ipv6_tcp[]; +extern enum rte_flow_item_type pattern_eth_ipv4_gtpu_eh_ipv6_icmp[]; + +/* IPv6 GTPU EH IPv4 */ +extern enum rte_flow_item_type pattern_eth_ipv6_gtpu_eh_ipv4[]; +extern enum rte_flow_item_type pattern_eth_ipv6_gtpu_eh_ipv4_udp[]; +extern enum rte_flow_item_type pattern_eth_ipv6_gtpu_eh_ipv4_tcp[]; +extern enum rte_flow_item_type pattern_eth_ipv6_gtpu_eh_ipv4_icmp[]; + +/* IPv6 GTPU EH IPv6 */ +extern enum rte_flow_item_type pattern_eth_ipv6_gtpu_eh_ipv6[]; +extern enum rte_flow_item_type pattern_eth_ipv6_gtpu_eh_ipv6_udp[]; +extern enum rte_flow_item_type pattern_eth_ipv6_gtpu_eh_ipv6_tcp[]; +extern enum rte_flow_item_type pattern_eth_ipv6_gtpu_eh_ipv6_icmp[]; + /* PPPoE */ extern enum rte_flow_item_type pattern_eth_pppoed[]; extern enum rte_flow_item_type pattern_eth_vlan_pppoed[]; extern enum rte_flow_item_type pattern_eth_qinq_pppoed[]; extern enum rte_flow_item_type pattern_eth_pppoes[]; +extern enum rte_flow_item_type pattern_eth_pppoes_proto[]; extern enum rte_flow_item_type pattern_eth_vlan_pppoes[]; +extern enum rte_flow_item_type pattern_eth_vlan_pppoes_proto[]; extern enum rte_flow_item_type pattern_eth_qinq_pppoes[]; +extern enum rte_flow_item_type pattern_eth_qinq_pppoes_proto[]; extern enum rte_flow_item_type pattern_eth_pppoes_ipv4[]; extern enum rte_flow_item_type pattern_eth_vlan_pppoes_ipv4[]; extern enum rte_flow_item_type pattern_eth_qinq_pppoes_ipv4[]; @@ -382,6 +378,25 @@ extern enum rte_flow_item_type pattern_eth_pppoes_ipv6_icmp6[]; extern enum rte_flow_item_type pattern_eth_vlan_pppoes_ipv6_icmp6[]; extern enum rte_flow_item_type pattern_eth_qinq_pppoes_ipv6_icmp6[]; +/* ESP */ +extern enum rte_flow_item_type pattern_eth_ipv4_esp[]; +extern enum rte_flow_item_type pattern_eth_ipv4_udp_esp[]; +extern enum rte_flow_item_type pattern_eth_ipv6_esp[]; +extern enum rte_flow_item_type pattern_eth_ipv6_udp_esp[]; + +/* AH */ +extern enum rte_flow_item_type pattern_eth_ipv4_ah[]; +extern enum rte_flow_item_type pattern_eth_ipv6_ah[]; +extern enum rte_flow_item_type pattern_eth_ipv6_udp_ah[]; + +/* L2TP */ +extern enum rte_flow_item_type pattern_eth_ipv4_l2tp[]; +extern enum rte_flow_item_type pattern_eth_ipv6_l2tp[]; + +/* PFCP */ +extern enum rte_flow_item_type pattern_eth_ipv4_pfcp[]; +extern enum rte_flow_item_type pattern_eth_ipv6_pfcp[]; + struct ice_adapter; extern const struct rte_flow_ops ice_flow_ops; @@ -413,10 +428,25 @@ enum ice_flow_classification_stage { struct ice_pattern_match_item { enum rte_flow_item_type *pattern_list; /* pattern_list must end with RTE_FLOW_ITEM_TYPE_END */ - uint64_t input_set_mask; + uint64_t input_set_mask_o; /* used for tunnel outer or non tunnel fields */ + uint64_t input_set_mask_i; /* only used for tunnel inner fields */ void *meta; }; +enum ice_flow_redirect_type { + ICE_FLOW_REDIRECT_VSI, +}; + +struct ice_flow_redirect { + enum ice_flow_redirect_type type; + union { + struct { + uint16_t vsi_handle; + uint16_t new_vsi_num; + }; + }; +}; + typedef int (*engine_init_t)(struct ice_adapter *ad); typedef void (*engine_uninit_t)(struct ice_adapter *ad); typedef int (*engine_create_t)(struct ice_adapter *ad, @@ -430,12 +460,16 @@ typedef int (*engine_query_t)(struct ice_adapter *ad, struct rte_flow *flow, struct rte_flow_query_count *count, struct rte_flow_error *error); +typedef int(*engine_redirect_t)(struct ice_adapter *ad, + struct rte_flow *flow, + struct ice_flow_redirect *redirect); typedef void (*engine_free_t) (struct rte_flow *flow); typedef int (*parse_pattern_action_t)(struct ice_adapter *ad, struct ice_pattern_match_item *array, uint32_t array_len, const struct rte_flow_item pattern[], const struct rte_flow_action actions[], + uint32_t priority, void **meta, struct rte_flow_error *error); @@ -447,6 +481,7 @@ struct ice_flow_engine { engine_create_t create; engine_destroy_t destroy; engine_query_t query_count; + engine_redirect_t redirect; engine_free_t free; enum ice_flow_engine_type type; }; @@ -481,8 +516,12 @@ int ice_register_parser(struct ice_flow_parser *parser, void ice_unregister_parser(struct ice_flow_parser *parser, struct ice_adapter *ad); struct ice_pattern_match_item * -ice_search_pattern_match_item(const struct rte_flow_item pattern[], - struct ice_pattern_match_item *array, - uint32_t array_len, - struct rte_flow_error *error); +ice_search_pattern_match_item(struct ice_adapter *ad, + const struct rte_flow_item pattern[], + struct ice_pattern_match_item *array, + uint32_t array_len, + struct rte_flow_error *error); +int +ice_flow_redirect(struct ice_adapter *ad, + struct ice_flow_redirect *rd); #endif