summaryrefslogtreecommitdiffstats
path: root/src/plugins/dpdk
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/dpdk')
-rw-r--r--src/plugins/dpdk/device/dpdk.h53
-rw-r--r--src/plugins/dpdk/device/flow.c8
2 files changed, 35 insertions, 26 deletions
diff --git a/src/plugins/dpdk/device/dpdk.h b/src/plugins/dpdk/device/dpdk.h
index 66794a4e67c..9df7f398ee6 100644
--- a/src/plugins/dpdk/device/dpdk.h
+++ b/src/plugins/dpdk/device/dpdk.h
@@ -443,32 +443,33 @@ typedef enum
void dpdk_update_link_state (dpdk_device_t * xd, f64 now);
-#define foreach_dpdk_rss_hf \
- _(0, ETH_RSS_FRAG_IPV4, "ipv4-frag") \
- _(1, ETH_RSS_NONFRAG_IPV4_TCP, "ipv4-tcp") \
- _(2, ETH_RSS_NONFRAG_IPV4_UDP, "ipv4-udp") \
- _(3, ETH_RSS_NONFRAG_IPV4_SCTP, "ipv4-sctp") \
- _(4, ETH_RSS_NONFRAG_IPV4_OTHER, "ipv4-other") \
- _(5, ETH_RSS_IPV4, "ipv4") \
- _(6, ETH_RSS_IPV6_TCP_EX, "ipv6-tcp-ex") \
- _(7, ETH_RSS_IPV6_UDP_EX, "ipv6-udp-ex") \
- _(8, ETH_RSS_FRAG_IPV6, "ipv6-frag") \
- _(9, ETH_RSS_NONFRAG_IPV6_TCP, "ipv6-tcp") \
- _(10, ETH_RSS_NONFRAG_IPV6_UDP, "ipv6-udp") \
- _(11, ETH_RSS_NONFRAG_IPV6_SCTP, "ipv6-sctp") \
- _(12, ETH_RSS_NONFRAG_IPV6_OTHER, "ipv6-other") \
- _(13, ETH_RSS_IPV6_EX, "ipv6-ex") \
- _(14, ETH_RSS_IPV6, "ipv6") \
- _(15, ETH_RSS_L2_PAYLOAD, "l2-payload") \
- _(16, ETH_RSS_PORT, "port") \
- _(17, ETH_RSS_VXLAN, "vxlan") \
- _(18, ETH_RSS_GENEVE, "geneve") \
- _(19, ETH_RSS_NVGRE, "nvgre") \
- _(20, ETH_RSS_GTPU, "gtpu") \
- _(60, ETH_RSS_L4_DST_ONLY, "l4-dst-only") \
- _(61, ETH_RSS_L4_SRC_ONLY, "l4-src-only") \
- _(62, ETH_RSS_L3_DST_ONLY, "l3-dst-only") \
- _(63, ETH_RSS_L3_SRC_ONLY, "l3-src-only")
+#define foreach_dpdk_rss_hf \
+ _ (0, ETH_RSS_FRAG_IPV4, "ipv4-frag") \
+ _ (1, ETH_RSS_NONFRAG_IPV4_TCP, "ipv4-tcp") \
+ _ (2, ETH_RSS_NONFRAG_IPV4_UDP, "ipv4-udp") \
+ _ (3, ETH_RSS_NONFRAG_IPV4_SCTP, "ipv4-sctp") \
+ _ (4, ETH_RSS_NONFRAG_IPV4_OTHER, "ipv4-other") \
+ _ (5, ETH_RSS_IPV4, "ipv4") \
+ _ (6, ETH_RSS_IPV6_TCP_EX, "ipv6-tcp-ex") \
+ _ (7, ETH_RSS_IPV6_UDP_EX, "ipv6-udp-ex") \
+ _ (8, ETH_RSS_FRAG_IPV6, "ipv6-frag") \
+ _ (9, ETH_RSS_NONFRAG_IPV6_TCP, "ipv6-tcp") \
+ _ (10, ETH_RSS_NONFRAG_IPV6_UDP, "ipv6-udp") \
+ _ (11, ETH_RSS_NONFRAG_IPV6_SCTP, "ipv6-sctp") \
+ _ (12, ETH_RSS_NONFRAG_IPV6_OTHER, "ipv6-other") \
+ _ (13, ETH_RSS_IPV6_EX, "ipv6-ex") \
+ _ (14, ETH_RSS_IPV6, "ipv6") \
+ _ (15, ETH_RSS_L2_PAYLOAD, "l2-payload") \
+ _ (16, ETH_RSS_PORT, "port") \
+ _ (17, ETH_RSS_VXLAN, "vxlan") \
+ _ (18, ETH_RSS_GENEVE, "geneve") \
+ _ (19, ETH_RSS_NVGRE, "nvgre") \
+ _ (20, ETH_RSS_GTPU, "gtpu") \
+ _ (21, ETH_RSS_ESP, "esp") \
+ _ (60, ETH_RSS_L4_DST_ONLY, "l4-dst-only") \
+ _ (61, ETH_RSS_L4_SRC_ONLY, "l4-src-only") \
+ _ (62, ETH_RSS_L3_DST_ONLY, "l3-dst-only") \
+ _ (63, ETH_RSS_L3_SRC_ONLY, "l3-src-only")
format_function_t format_dpdk_device_name;
format_function_t format_dpdk_device;
diff --git a/src/plugins/dpdk/device/flow.c b/src/plugins/dpdk/device/flow.c
index a090ec0e930..850476b87c1 100644
--- a/src/plugins/dpdk/device/flow.c
+++ b/src/plugins/dpdk/device/flow.c
@@ -444,6 +444,14 @@ dpdk_flow_add (dpdk_device_t * xd, vnet_flow_t * f, dpdk_flow_entry_t * fe)
}
pattern_end:
+ if ((f->actions & VNET_FLOW_ACTION_RSS) &&
+ (f->rss_types & (1ULL << VNET_FLOW_RSS_TYPES_ESP)))
+ {
+
+ vec_add2 (items, item, 1);
+ item->type = RTE_FLOW_ITEM_TYPE_ESP;
+ }
+
vec_add2 (items, item, 1);
item->type = RTE_FLOW_ITEM_TYPE_END;