#include <rte_debug.h>
#include <rte_ether.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_log.h>
#include <rte_malloc.h>
#include <rte_eth_ctrl.h>
#define ICE_GTPU_EH_DWNLINK 0
#define ICE_GTPU_EH_UPLINK 1
-#define ICE_IPV4_PROT BIT_ULL(ICE_FLOW_FIELD_IDX_IPV4_PROT)
-#define ICE_IPV6_PROT BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PROT)
+#define ICE_IPV4_PROT BIT_ULL(ICE_FLOW_FIELD_IDX_IPV4_PROT)
+#define ICE_IPV6_PROT BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PROT)
#define VALID_RSS_IPV4_L4 (ETH_RSS_NONFRAG_IPV4_UDP | \
ETH_RSS_NONFRAG_IPV4_TCP | \
0
};
-struct ice_rss_hash_cfg eth_inner_ipv4_tmplt = {
+struct ice_rss_hash_cfg outer_ipv4_inner_ipv4_tmplt = {
ICE_FLOW_SEG_HDR_IPV4 | ICE_FLOW_SEG_HDR_IPV_OTHER,
ICE_FLOW_HASH_IPV4,
ICE_RSS_INNER_HEADERS_W_OUTER_IPV4,
0
};
-struct ice_rss_hash_cfg eth_inner_ipv4_udp_tmplt = {
+struct ice_rss_hash_cfg outer_ipv4_inner_ipv4_udp_tmplt = {
ICE_FLOW_SEG_HDR_IPV4 | ICE_FLOW_SEG_HDR_IPV_OTHER |
ICE_FLOW_SEG_HDR_UDP,
ICE_HASH_UDP_IPV4 | ICE_IPV4_PROT,
0
};
-struct ice_rss_hash_cfg eth_inner_ipv4_tcp_tmplt = {
+struct ice_rss_hash_cfg outer_ipv4_inner_ipv4_tcp_tmplt = {
ICE_FLOW_SEG_HDR_IPV4 | ICE_FLOW_SEG_HDR_IPV_OTHER |
ICE_FLOW_SEG_HDR_TCP,
ICE_HASH_TCP_IPV4 | ICE_IPV4_PROT,
0
};
-struct ice_rss_hash_cfg eth_inner_ipv6_tmplt = {
+struct ice_rss_hash_cfg outer_ipv6_inner_ipv4_tmplt = {
+ ICE_FLOW_SEG_HDR_IPV4 | ICE_FLOW_SEG_HDR_IPV_OTHER,
+ ICE_FLOW_HASH_IPV4,
+ ICE_RSS_INNER_HEADERS_W_OUTER_IPV6,
+ 0
+};
+struct ice_rss_hash_cfg outer_ipv6_inner_ipv4_udp_tmplt = {
+ ICE_FLOW_SEG_HDR_IPV4 | ICE_FLOW_SEG_HDR_IPV_OTHER |
+ ICE_FLOW_SEG_HDR_UDP,
+ ICE_HASH_UDP_IPV4 | ICE_IPV4_PROT,
+ ICE_RSS_INNER_HEADERS_W_OUTER_IPV6,
+ 0
+};
+
+struct ice_rss_hash_cfg outer_ipv6_inner_ipv4_tcp_tmplt = {
+ ICE_FLOW_SEG_HDR_IPV4 | ICE_FLOW_SEG_HDR_IPV_OTHER |
+ ICE_FLOW_SEG_HDR_TCP,
+ ICE_HASH_TCP_IPV4 | ICE_IPV4_PROT,
+ ICE_RSS_INNER_HEADERS_W_OUTER_IPV6,
+ 0
+};
+
+struct ice_rss_hash_cfg outer_ipv4_inner_ipv6_tmplt = {
+ ICE_FLOW_SEG_HDR_IPV6 | ICE_FLOW_SEG_HDR_IPV_OTHER,
+ ICE_FLOW_HASH_IPV6,
+ ICE_RSS_INNER_HEADERS_W_OUTER_IPV4,
+ 0
+};
+struct ice_rss_hash_cfg outer_ipv4_inner_ipv6_udp_tmplt = {
+ ICE_FLOW_SEG_HDR_IPV6 | ICE_FLOW_SEG_HDR_IPV_OTHER |
+ ICE_FLOW_SEG_HDR_UDP,
+ ICE_HASH_UDP_IPV6 | ICE_IPV6_PROT,
+ ICE_RSS_INNER_HEADERS_W_OUTER_IPV4,
+ 0
+};
+
+struct ice_rss_hash_cfg outer_ipv4_inner_ipv6_tcp_tmplt = {
+ ICE_FLOW_SEG_HDR_IPV6 | ICE_FLOW_SEG_HDR_IPV_OTHER |
+ ICE_FLOW_SEG_HDR_TCP,
+ ICE_HASH_TCP_IPV6 | ICE_IPV6_PROT,
+ ICE_RSS_INNER_HEADERS_W_OUTER_IPV4,
+ 0
+};
+
+struct ice_rss_hash_cfg outer_ipv6_inner_ipv6_tmplt = {
ICE_FLOW_SEG_HDR_IPV6 | ICE_FLOW_SEG_HDR_IPV_OTHER,
ICE_FLOW_HASH_IPV6,
ICE_RSS_INNER_HEADERS_W_OUTER_IPV6,
0
};
-struct ice_rss_hash_cfg eth_inner_ipv6_udp_tmplt = {
+struct ice_rss_hash_cfg outer_ipv6_inner_ipv6_udp_tmplt = {
ICE_FLOW_SEG_HDR_IPV6 | ICE_FLOW_SEG_HDR_IPV_OTHER |
ICE_FLOW_SEG_HDR_UDP,
ICE_HASH_UDP_IPV6 | ICE_IPV6_PROT,
0
};
-struct ice_rss_hash_cfg eth_inner_ipv6_tcp_tmplt = {
+struct ice_rss_hash_cfg outer_ipv6_inner_ipv6_tcp_tmplt = {
ICE_FLOW_SEG_HDR_IPV6 | ICE_FLOW_SEG_HDR_IPV_OTHER |
ICE_FLOW_SEG_HDR_TCP,
ICE_HASH_TCP_IPV6 | ICE_IPV6_PROT,
/* Empty rss type to support simple_xor. */
#define ICE_RSS_TYPE_EMPTY 0ULL
-/* IPv4 outer*/
+/* IPv4 outer */
#define ICE_RSS_TYPE_OUTER_IPV4 (ETH_RSS_ETH | ETH_RSS_IPV4)
#define ICE_RSS_TYPE_OUTER_IPV4_UDP (ICE_RSS_TYPE_OUTER_IPV4 | \
- ETH_RSS_NONFRAG_IPV4_UDP)
+ ETH_RSS_NONFRAG_IPV4_UDP)
#define ICE_RSS_TYPE_OUTER_IPV4_TCP (ICE_RSS_TYPE_OUTER_IPV4 | \
- ETH_RSS_NONFRAG_IPV4_TCP)
+ ETH_RSS_NONFRAG_IPV4_TCP)
#define ICE_RSS_TYPE_OUTER_IPV4_SCTP (ICE_RSS_TYPE_OUTER_IPV4 | \
- ETH_RSS_NONFRAG_IPV4_SCTP)
-/* IPv6 */
+ ETH_RSS_NONFRAG_IPV4_SCTP)
+/* IPv6 outer */
#define ICE_RSS_TYPE_OUTER_IPV6 (ETH_RSS_ETH | ETH_RSS_IPV6)
#define ICE_RSS_TYPE_OUTER_IPV6_UDP (ICE_RSS_TYPE_OUTER_IPV6 | \
- ETH_RSS_NONFRAG_IPV6_UDP)
+ ETH_RSS_NONFRAG_IPV6_UDP)
#define ICE_RSS_TYPE_OUTER_IPV6_TCP (ICE_RSS_TYPE_OUTER_IPV6 | \
- ETH_RSS_NONFRAG_IPV6_TCP)
+ ETH_RSS_NONFRAG_IPV6_TCP)
#define ICE_RSS_TYPE_OUTER_IPV6_SCTP (ICE_RSS_TYPE_OUTER_IPV6 | \
- ETH_RSS_NONFRAG_IPV6_SCTP)
+ ETH_RSS_NONFRAG_IPV6_SCTP)
/* VLAN IPV4 */
#define ICE_RSS_TYPE_VLAN_IPV4 (ICE_RSS_TYPE_OUTER_IPV4 | \
ETH_RSS_S_VLAN | ETH_RSS_C_VLAN)
/* IPv4 inner */
-#define ICE_RSS_TYPE_INNER_IPV4 ETH_RSS_IPV4
+#define ICE_RSS_TYPE_INNER_IPV4 ETH_RSS_IPV4
#define ICE_RSS_TYPE_INNER_IPV4_UDP (ETH_RSS_IPV4 | \
ETH_RSS_NONFRAG_IPV4_UDP)
#define ICE_RSS_TYPE_INNER_IPV4_TCP (ETH_RSS_IPV4 | \
#define ICE_RSS_TYPE_INNER_IPV4_SCTP (ETH_RSS_IPV4 | \
ETH_RSS_NONFRAG_IPV4_SCTP)
/* IPv6 inner */
-#define ICE_RSS_TYPE_INNER_IPV6 ETH_RSS_IPV6
+#define ICE_RSS_TYPE_INNER_IPV6 ETH_RSS_IPV6
#define ICE_RSS_TYPE_INNER_IPV6_UDP (ETH_RSS_IPV6 | \
ETH_RSS_NONFRAG_IPV6_UDP)
#define ICE_RSS_TYPE_INNER_IPV6_TCP (ETH_RSS_IPV6 | \
#define ICE_RSS_TYPE_GTPU_IPV6_TCP (ICE_RSS_TYPE_INNER_IPV6_TCP | \
ETH_RSS_GTPU)
-/* ESP, AH, L2TPV3, PFCP and PPPOE */
+/* PPPOE */
+#define ICE_RSS_TYPE_PPPOE (ETH_RSS_ETH | ETH_RSS_PPPOE)
+
+/* PPPOE IPv4 */
+#define ICE_RSS_TYPE_PPPOE_IPV4 (ICE_RSS_TYPE_INNER_IPV4 | \
+ ICE_RSS_TYPE_PPPOE)
+#define ICE_RSS_TYPE_PPPOE_IPV4_UDP (ICE_RSS_TYPE_INNER_IPV4_UDP | \
+ ICE_RSS_TYPE_PPPOE)
+#define ICE_RSS_TYPE_PPPOE_IPV4_TCP (ICE_RSS_TYPE_INNER_IPV4_TCP | \
+ ICE_RSS_TYPE_PPPOE)
+
+/* PPPOE IPv6 */
+#define ICE_RSS_TYPE_PPPOE_IPV6 (ICE_RSS_TYPE_INNER_IPV6 | \
+ ICE_RSS_TYPE_PPPOE)
+#define ICE_RSS_TYPE_PPPOE_IPV6_UDP (ICE_RSS_TYPE_INNER_IPV6_UDP | \
+ ICE_RSS_TYPE_PPPOE)
+#define ICE_RSS_TYPE_PPPOE_IPV6_TCP (ICE_RSS_TYPE_INNER_IPV6_TCP | \
+ ICE_RSS_TYPE_PPPOE)
+
+/* ESP, AH, L2TPV3 and PFCP */
#define ICE_RSS_TYPE_IPV4_ESP (ETH_RSS_ESP | ETH_RSS_IPV4)
-#define ICE_RSS_TYPE_IPV4_AH (ETH_RSS_AH | ETH_RSS_IPV4)
#define ICE_RSS_TYPE_IPV6_ESP (ETH_RSS_ESP | ETH_RSS_IPV6)
+#define ICE_RSS_TYPE_IPV4_AH (ETH_RSS_AH | ETH_RSS_IPV4)
#define ICE_RSS_TYPE_IPV6_AH (ETH_RSS_AH | ETH_RSS_IPV6)
#define ICE_RSS_TYPE_IPV4_L2TPV3 (ETH_RSS_L2TPV3 | ETH_RSS_IPV4)
#define ICE_RSS_TYPE_IPV6_L2TPV3 (ETH_RSS_L2TPV3 | ETH_RSS_IPV6)
#define ICE_RSS_TYPE_IPV4_PFCP (ETH_RSS_PFCP | ETH_RSS_IPV4)
#define ICE_RSS_TYPE_IPV6_PFCP (ETH_RSS_PFCP | ETH_RSS_IPV6)
-#define ICE_RSS_TYPE_PPPOE (ETH_RSS_ETH | ETH_RSS_PPPOE)
/**
* Supported pattern for hash.
{pattern_eth_vlan_ipv4_udp, ICE_RSS_TYPE_VLAN_IPV4_UDP, &ipv4_udp_tmplt},
{pattern_eth_vlan_ipv4_tcp, ICE_RSS_TYPE_VLAN_IPV4_TCP, &ipv4_tcp_tmplt},
{pattern_eth_vlan_ipv4_sctp, ICE_RSS_TYPE_VLAN_IPV4_SCTP, &ipv4_sctp_tmplt},
- {pattern_eth_ipv4_gtpu_ipv4, ICE_RSS_TYPE_GTPU_IPV4, ð_inner_ipv4_tmplt},
- {pattern_eth_ipv4_gtpu_ipv4_udp, ICE_RSS_TYPE_GTPU_IPV4_UDP, ð_inner_ipv4_udp_tmplt},
- {pattern_eth_ipv4_gtpu_ipv4_tcp, ICE_RSS_TYPE_GTPU_IPV4_TCP, ð_inner_ipv4_tcp_tmplt},
- {pattern_eth_ipv6_gtpu_ipv4, ICE_RSS_TYPE_GTPU_IPV4, ð_inner_ipv4_tmplt},
- {pattern_eth_ipv6_gtpu_ipv4_udp, ICE_RSS_TYPE_GTPU_IPV4_UDP, ð_inner_ipv4_udp_tmplt},
- {pattern_eth_ipv6_gtpu_ipv4_tcp, ICE_RSS_TYPE_GTPU_IPV4_TCP, ð_inner_ipv4_tcp_tmplt},
- {pattern_eth_ipv4_gtpu_eh_ipv4, ICE_RSS_TYPE_GTPU_IPV4, ð_inner_ipv4_tmplt},
- {pattern_eth_ipv4_gtpu_eh_ipv4_udp, ICE_RSS_TYPE_GTPU_IPV4_UDP, ð_inner_ipv4_udp_tmplt},
- {pattern_eth_ipv4_gtpu_eh_ipv4_tcp, ICE_RSS_TYPE_GTPU_IPV4_TCP, ð_inner_ipv4_tcp_tmplt},
- {pattern_eth_ipv6_gtpu_eh_ipv4, ICE_RSS_TYPE_GTPU_IPV4, ð_inner_ipv4_tmplt},
- {pattern_eth_ipv6_gtpu_eh_ipv4_udp, ICE_RSS_TYPE_GTPU_IPV4_UDP, ð_inner_ipv4_udp_tmplt},
- {pattern_eth_ipv6_gtpu_eh_ipv4_tcp, ICE_RSS_TYPE_GTPU_IPV4_TCP, ð_inner_ipv4_tcp_tmplt},
- {pattern_eth_pppoes_ipv4, ICE_RSS_TYPE_OUTER_IPV4, &ipv4_tmplt},
- {pattern_eth_pppoes_ipv4_udp, ICE_RSS_TYPE_OUTER_IPV4_UDP, &ipv4_udp_tmplt},
- {pattern_eth_pppoes_ipv4_tcp, ICE_RSS_TYPE_OUTER_IPV4_TCP, &ipv4_tcp_tmplt},
+ {pattern_eth_ipv4_gtpu_ipv4, ICE_RSS_TYPE_GTPU_IPV4, &outer_ipv4_inner_ipv4_tmplt},
+ {pattern_eth_ipv4_gtpu_ipv4_udp, ICE_RSS_TYPE_GTPU_IPV4_UDP, &outer_ipv4_inner_ipv4_udp_tmplt},
+ {pattern_eth_ipv4_gtpu_ipv4_tcp, ICE_RSS_TYPE_GTPU_IPV4_TCP, &outer_ipv4_inner_ipv4_tcp_tmplt},
+ {pattern_eth_ipv6_gtpu_ipv4, ICE_RSS_TYPE_GTPU_IPV4, &outer_ipv6_inner_ipv4_tmplt},
+ {pattern_eth_ipv6_gtpu_ipv4_udp, ICE_RSS_TYPE_GTPU_IPV4_UDP, &outer_ipv6_inner_ipv4_udp_tmplt},
+ {pattern_eth_ipv6_gtpu_ipv4_tcp, ICE_RSS_TYPE_GTPU_IPV4_TCP, &outer_ipv6_inner_ipv4_tcp_tmplt},
+ {pattern_eth_ipv4_gtpu_eh_ipv4, ICE_RSS_TYPE_GTPU_IPV4, &outer_ipv4_inner_ipv4_tmplt},
+ {pattern_eth_ipv4_gtpu_eh_ipv4_udp, ICE_RSS_TYPE_GTPU_IPV4_UDP, &outer_ipv4_inner_ipv4_udp_tmplt},
+ {pattern_eth_ipv4_gtpu_eh_ipv4_tcp, ICE_RSS_TYPE_GTPU_IPV4_TCP, &outer_ipv4_inner_ipv4_tcp_tmplt},
+ {pattern_eth_ipv6_gtpu_eh_ipv4, ICE_RSS_TYPE_GTPU_IPV4, &outer_ipv6_inner_ipv4_tmplt},
+ {pattern_eth_ipv6_gtpu_eh_ipv4_udp, ICE_RSS_TYPE_GTPU_IPV4_UDP, &outer_ipv6_inner_ipv4_udp_tmplt},
+ {pattern_eth_ipv6_gtpu_eh_ipv4_tcp, ICE_RSS_TYPE_GTPU_IPV4_TCP, &outer_ipv6_inner_ipv4_tcp_tmplt},
+ {pattern_eth_pppoes_ipv4, ICE_RSS_TYPE_PPPOE_IPV4, &ipv4_tmplt},
+ {pattern_eth_pppoes_ipv4_udp, ICE_RSS_TYPE_PPPOE_IPV4_UDP, &ipv4_udp_tmplt},
+ {pattern_eth_pppoes_ipv4_tcp, ICE_RSS_TYPE_PPPOE_IPV4_TCP, &ipv4_tcp_tmplt},
{pattern_eth_ipv4_esp, ICE_RSS_TYPE_IPV4_ESP, ð_ipv4_esp_tmplt},
{pattern_eth_ipv4_udp_esp, ICE_RSS_TYPE_IPV4_ESP, ð_ipv4_udp_esp_tmplt},
{pattern_eth_ipv4_ah, ICE_RSS_TYPE_IPV4_AH, ð_ipv4_ah_tmplt},
{pattern_eth_vlan_ipv6_udp, ICE_RSS_TYPE_VLAN_IPV6_UDP, &ipv6_udp_tmplt},
{pattern_eth_vlan_ipv6_tcp, ICE_RSS_TYPE_VLAN_IPV6_TCP, &ipv6_tcp_tmplt},
{pattern_eth_vlan_ipv6_sctp, ICE_RSS_TYPE_VLAN_IPV6_SCTP, &ipv6_sctp_tmplt},
- {pattern_eth_ipv4_gtpu_ipv6, ICE_RSS_TYPE_GTPU_IPV6, ð_inner_ipv6_tmplt},
- {pattern_eth_ipv4_gtpu_ipv6_udp, ICE_RSS_TYPE_GTPU_IPV6_UDP, ð_inner_ipv6_udp_tmplt},
- {pattern_eth_ipv4_gtpu_ipv6_tcp, ICE_RSS_TYPE_GTPU_IPV6_TCP, ð_inner_ipv6_tcp_tmplt},
- {pattern_eth_ipv6_gtpu_ipv6, ICE_RSS_TYPE_GTPU_IPV6, ð_inner_ipv6_tmplt},
- {pattern_eth_ipv6_gtpu_ipv6_udp, ICE_RSS_TYPE_GTPU_IPV6_UDP, ð_inner_ipv6_udp_tmplt},
- {pattern_eth_ipv6_gtpu_ipv6_tcp, ICE_RSS_TYPE_GTPU_IPV6_TCP, ð_inner_ipv6_tcp_tmplt},
- {pattern_eth_ipv4_gtpu_eh_ipv6, ICE_RSS_TYPE_GTPU_IPV6, ð_inner_ipv6_tmplt},
- {pattern_eth_ipv4_gtpu_eh_ipv6_udp, ICE_RSS_TYPE_GTPU_IPV6_UDP, ð_inner_ipv6_udp_tmplt},
- {pattern_eth_ipv4_gtpu_eh_ipv6_tcp, ICE_RSS_TYPE_GTPU_IPV6_TCP, ð_inner_ipv6_tcp_tmplt},
- {pattern_eth_ipv6_gtpu_eh_ipv6, ICE_RSS_TYPE_GTPU_IPV6, ð_inner_ipv6_tmplt},
- {pattern_eth_ipv6_gtpu_eh_ipv6_udp, ICE_RSS_TYPE_GTPU_IPV6_UDP, ð_inner_ipv6_udp_tmplt},
- {pattern_eth_ipv6_gtpu_eh_ipv6_tcp, ICE_RSS_TYPE_GTPU_IPV6_TCP, ð_inner_ipv6_tcp_tmplt},
- {pattern_eth_pppoes_ipv6, ICE_RSS_TYPE_OUTER_IPV6, &ipv6_tmplt},
- {pattern_eth_pppoes_ipv6_udp, ICE_RSS_TYPE_OUTER_IPV6_UDP, &ipv6_udp_tmplt},
- {pattern_eth_pppoes_ipv6_tcp, ICE_RSS_TYPE_OUTER_IPV6_TCP, &ipv6_tcp_tmplt},
+ {pattern_eth_ipv4_gtpu_ipv6, ICE_RSS_TYPE_GTPU_IPV6, &outer_ipv4_inner_ipv6_tmplt},
+ {pattern_eth_ipv4_gtpu_ipv6_udp, ICE_RSS_TYPE_GTPU_IPV6_UDP, &outer_ipv4_inner_ipv6_udp_tmplt},
+ {pattern_eth_ipv4_gtpu_ipv6_tcp, ICE_RSS_TYPE_GTPU_IPV6_TCP, &outer_ipv4_inner_ipv6_tcp_tmplt},
+ {pattern_eth_ipv6_gtpu_ipv6, ICE_RSS_TYPE_GTPU_IPV6, &outer_ipv6_inner_ipv6_tmplt},
+ {pattern_eth_ipv6_gtpu_ipv6_udp, ICE_RSS_TYPE_GTPU_IPV6_UDP, &outer_ipv6_inner_ipv6_udp_tmplt},
+ {pattern_eth_ipv6_gtpu_ipv6_tcp, ICE_RSS_TYPE_GTPU_IPV6_TCP, &outer_ipv6_inner_ipv6_tcp_tmplt},
+ {pattern_eth_ipv4_gtpu_eh_ipv6, ICE_RSS_TYPE_GTPU_IPV6, &outer_ipv4_inner_ipv6_tmplt},
+ {pattern_eth_ipv4_gtpu_eh_ipv6_udp, ICE_RSS_TYPE_GTPU_IPV6_UDP, &outer_ipv4_inner_ipv6_udp_tmplt},
+ {pattern_eth_ipv4_gtpu_eh_ipv6_tcp, ICE_RSS_TYPE_GTPU_IPV6_TCP, &outer_ipv4_inner_ipv6_tcp_tmplt},
+ {pattern_eth_ipv6_gtpu_eh_ipv6, ICE_RSS_TYPE_GTPU_IPV6, &outer_ipv6_inner_ipv6_tmplt},
+ {pattern_eth_ipv6_gtpu_eh_ipv6_udp, ICE_RSS_TYPE_GTPU_IPV6_UDP, &outer_ipv6_inner_ipv6_udp_tmplt},
+ {pattern_eth_ipv6_gtpu_eh_ipv6_tcp, ICE_RSS_TYPE_GTPU_IPV6_TCP, &outer_ipv6_inner_ipv6_tcp_tmplt},
+ {pattern_eth_pppoes_ipv6, ICE_RSS_TYPE_PPPOE_IPV6, &ipv6_tmplt},
+ {pattern_eth_pppoes_ipv6_udp, ICE_RSS_TYPE_PPPOE_IPV6_UDP, &ipv6_udp_tmplt},
+ {pattern_eth_pppoes_ipv6_tcp, ICE_RSS_TYPE_PPPOE_IPV6_TCP, &ipv6_tcp_tmplt},
{pattern_eth_ipv6_esp, ICE_RSS_TYPE_IPV6_ESP, ð_ipv6_esp_tmplt},
{pattern_eth_ipv6_udp_esp, ICE_RSS_TYPE_IPV6_ESP, ð_ipv6_udp_esp_tmplt},
{pattern_eth_ipv6_ah, ICE_RSS_TYPE_IPV6_AH, ð_ipv6_ah_tmplt},
if (rss_type & (ETH_RSS_L3_SRC_ONLY | ETH_RSS_L3_DST_ONLY |
ETH_RSS_L4_SRC_ONLY | ETH_RSS_L4_DST_ONLY))
return true;
+
+ if (!(rss_type &
+ (ETH_RSS_IPV4 | ETH_RSS_IPV6 |
+ ETH_RSS_NONFRAG_IPV4_UDP | ETH_RSS_NONFRAG_IPV6_UDP |
+ ETH_RSS_NONFRAG_IPV4_TCP | ETH_RSS_NONFRAG_IPV6_TCP |
+ ETH_RSS_NONFRAG_IPV4_SCTP | ETH_RSS_NONFRAG_IPV6_SCTP)))
+ return true;
}
/* check invalid combination */
rss_meta->cfg = *cfg;
ice_refine_hash_cfg(&rss_meta->cfg,
rss_type, pattern_hint);
-
break;
case RTE_FLOW_ACTION_TYPE_END:
break;