Currently PMD implementations default RSS on either tunnel outer or
inner fields. This patch introduced RSS level to allow user to specify
RSS hash field level of tunneled packets.
0: outer RSS.
1: inner RSS.
2-255: deep RSS level.
Please note that tunnels that tightly nested without IP/UDP/TCP layer
interlaced are deemed as one level. For example the following packet can
only use level 0 or 1:
eth / ipv4 / GRE / MPLS / ipv4 / udp
Signed-off-by: Xueming Li <[email protected]>
---
lib/librte_ether/rte_ethdev.h | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/lib/librte_ether/rte_ethdev.h b/lib/librte_ether/rte_ethdev.h
index 0361533..baaeb3c 100644
--- a/lib/librte_ether/rte_ethdev.h
+++ b/lib/librte_ether/rte_ethdev.h
@@ -398,6 +398,15 @@ struct rte_eth_rss_conf {
uint8_t *rss_key; /**< If not NULL, 40-byte hash key. */
uint8_t rss_key_len; /**< hash key length in bytes. */
uint64_t rss_hf; /**< Hash functions to apply - see below. */
+ /**
+ * RSS hash calculation on tunnel level:
+ * 0: outer RSS, default.
+ * 1: inner RSS.
+ * 2-255: deep RSS level.
+ * Please note that tunnels not interlaced with [IP|TCP|UDP] are
+ * deemed as one level, such as MPLS over GRE.
+ */
+ uint8_t rss_level;
};
/*
--
1.8.3.1