* [dpdk-dev] [PATCH v1] net/iavf: support default RSS for IP fragment packet
@ 2021-07-12 2:39 Wenjun Wu
2021-07-12 8:27 ` [dpdk-dev] [PATCH v2] " Wenjun Wu
0 siblings, 1 reply; 3+ messages in thread
From: Wenjun Wu @ 2021-07-12 2:39 UTC (permalink / raw)
To: dev, jingjing.wu, beilei.xing, qi.z.zhang; +Cc: Wenjun Wu
This patch adds default RSS support for IPv4 and IPv6 fragment packet.
Signed-off-by: Wenjun Wu <wenjun1.wu@intel.com>
---
drivers/net/iavf/iavf_hash.c | 60 +++++++++++++++++++++---------------
1 file changed, 36 insertions(+), 24 deletions(-)
diff --git a/drivers/net/iavf/iavf_hash.c b/drivers/net/iavf/iavf_hash.c
index 03dae5d999..e76d094aae 100644
--- a/drivers/net/iavf/iavf_hash.c
+++ b/drivers/net/iavf/iavf_hash.c
@@ -566,6 +566,29 @@ static struct iavf_flow_parser iavf_hash_parser = {
.stage = IAVF_FLOW_STAGE_RSS,
};
+static void
+iavf_hash_add_fragment_hdr(struct virtchnl_proto_hdrs *hdrs, int layer)
+{
+ struct virtchnl_proto_hdr *hdr1;
+ struct virtchnl_proto_hdr *hdr2;
+ int i;
+
+ if (layer < 0 || layer > hdrs->count)
+ return;
+
+ /* shift headers layer */
+ for (i = hdrs->count; i >= layer; i--) {
+ hdr1 = &hdrs->proto_hdr[i];
+ hdr2 = &hdrs->proto_hdr[i - 1];
+ *hdr1 = *hdr2;
+ }
+
+ /* adding dummy fragment header */
+ hdr1 = &hdrs->proto_hdr[layer];
+ VIRTCHNL_SET_PROTO_HDR_TYPE(hdr1, IPV4_FRAG);
+ hdrs->count = ++layer;
+}
+
int
iavf_rss_hash_set(struct iavf_adapter *ad, uint64_t rss_hf, bool add)
{
@@ -580,7 +603,9 @@ iavf_rss_hash_set(struct iavf_adapter *ad, uint64_t rss_hf, bool add)
ETH_RSS_NONFRAG_IPV4_TCP | \
ETH_RSS_NONFRAG_IPV6_TCP | \
ETH_RSS_NONFRAG_IPV4_SCTP | \
- ETH_RSS_NONFRAG_IPV6_SCTP)
+ ETH_RSS_NONFRAG_IPV6_SCTP | \
+ ETH_RSS_FRAG_IPV4 | \
+ ETH_RSS_FRAG_IPV6)
rss_cfg.rss_algorithm = VIRTCHNL_RSS_ALG_TOEPLITZ_ASYMMETRIC;
if (rss_hf & ETH_RSS_IPV4) {
@@ -606,6 +631,10 @@ iavf_rss_hash_set(struct iavf_adapter *ad, uint64_t rss_hf, bool add)
if (rss_hf & ETH_RSS_IPV6) {
rss_cfg.proto_hdrs = inner_ipv6_tmplt;
iavf_add_del_rss_cfg(ad, &rss_cfg, add);
+ if (rss_hf & ETH_RSS_FRAG_IPV6) {
+ rss_cfg.proto_hdrs = outer_ipv6_frag_tmplt;
+ iavf_add_del_rss_cfg(ad, &rss_cfg, add);
+ }
}
if (rss_hf & ETH_RSS_NONFRAG_IPV6_UDP) {
@@ -623,6 +652,12 @@ iavf_rss_hash_set(struct iavf_adapter *ad, uint64_t rss_hf, bool add)
iavf_add_del_rss_cfg(ad, &rss_cfg, add);
}
+ if (rss_hf & ETH_RSS_FRAG_IPV4) {
+ rss_cfg.proto_hdrs = outer_ipv4_tmplt;
+ iavf_hash_add_fragment_hdr(&rss_cfg.proto_hdrs, 1);
+ iavf_add_del_rss_cfg(ad, &rss_cfg, add);
+ }
+
vf->rss_hf = rss_hf & IAVF_RSS_HF_ALL;
return 0;
}
@@ -737,29 +772,6 @@ do { \
REFINE_PROTO_FLD(ADD, fld_2); \
} while (0)
-static void
-iavf_hash_add_fragment_hdr(struct virtchnl_proto_hdrs *hdrs, int layer)
-{
- struct virtchnl_proto_hdr *hdr1;
- struct virtchnl_proto_hdr *hdr2;
- int i;
-
- if (layer < 0 || layer > hdrs->count)
- return;
-
- /* shift headers layer */
- for (i = hdrs->count; i >= layer; i--) {
- hdr1 = &hdrs->proto_hdr[i];
- hdr2 = &hdrs->proto_hdr[i - 1];
- *hdr1 = *hdr2;
- }
-
- /* adding dummy fragment header */
- hdr1 = &hdrs->proto_hdr[layer];
- VIRTCHNL_SET_PROTO_HDR_TYPE(hdr1, IPV4_FRAG);
- hdrs->count = ++layer;
-}
-
/* refine proto hdrs base on l2, l3, l4 rss type */
static void
iavf_refine_proto_hdrs_l234(struct virtchnl_proto_hdrs *proto_hdrs,
--
2.25.1
^ permalink raw reply [flat|nested] 3+ messages in thread
* [dpdk-dev] [PATCH v2] net/iavf: support default RSS for IP fragment packet
2021-07-12 2:39 [dpdk-dev] [PATCH v1] net/iavf: support default RSS for IP fragment packet Wenjun Wu
@ 2021-07-12 8:27 ` Wenjun Wu
2021-07-13 0:44 ` Zhang, Qi Z
0 siblings, 1 reply; 3+ messages in thread
From: Wenjun Wu @ 2021-07-12 8:27 UTC (permalink / raw)
To: dev, jingjing.wu, beilei.xing, qi.z.zhang; +Cc: Wenjun Wu
This patch adds default RSS support for IPv4 and IPv6 fragment packet.
Signed-off-by: Wenjun Wu <wenjun1.wu@intel.com>
---
v2: modify error implementation
---
drivers/net/iavf/iavf_hash.c | 32 ++++++++++++++++++++++++++++++++
1 file changed, 32 insertions(+)
diff --git a/drivers/net/iavf/iavf_hash.c b/drivers/net/iavf/iavf_hash.c
index 03dae5d999..2b03dad858 100644
--- a/drivers/net/iavf/iavf_hash.c
+++ b/drivers/net/iavf/iavf_hash.c
@@ -623,6 +623,38 @@ iavf_rss_hash_set(struct iavf_adapter *ad, uint64_t rss_hf, bool add)
iavf_add_del_rss_cfg(ad, &rss_cfg, add);
}
+ if (rss_hf & ETH_RSS_FRAG_IPV4) {
+ struct virtchnl_proto_hdrs hdr = {
+ .tunnel_level = TUNNEL_LEVEL_OUTER,
+ .count = 3,
+ .proto_hdr = {
+ proto_hdr_eth,
+ proto_hdr_ipv4,
+ {
+ VIRTCHNL_PROTO_HDR_IPV4_FRAG,
+ FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV4_FRAG_PKID),
+ {BUFF_NOUSED},
+ },
+ },
+ };
+ rss_cfg.proto_hdrs = hdr;
+ iavf_add_del_rss_cfg(ad, &rss_cfg, add);
+ }
+
+ if (rss_hf & ETH_RSS_FRAG_IPV6) {
+ struct virtchnl_proto_hdrs hdr = {
+ .tunnel_level = TUNNEL_LEVEL_OUTER,
+ .count = 3,
+ .proto_hdr = {
+ proto_hdr_eth,
+ proto_hdr_ipv6,
+ proto_hdr_ipv6_frag,
+ },
+ };
+ rss_cfg.proto_hdrs = hdr;
+ iavf_add_del_rss_cfg(ad, &rss_cfg, add);
+ }
+
vf->rss_hf = rss_hf & IAVF_RSS_HF_ALL;
return 0;
}
--
2.25.1
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [dpdk-dev] [PATCH v2] net/iavf: support default RSS for IP fragment packet
2021-07-12 8:27 ` [dpdk-dev] [PATCH v2] " Wenjun Wu
@ 2021-07-13 0:44 ` Zhang, Qi Z
0 siblings, 0 replies; 3+ messages in thread
From: Zhang, Qi Z @ 2021-07-13 0:44 UTC (permalink / raw)
To: Wu, Wenjun1, dev, Wu, Jingjing, Xing, Beilei
> -----Original Message-----
> From: Wu, Wenjun1 <wenjun1.wu@intel.com>
> Sent: Monday, July 12, 2021 4:28 PM
> To: dev@dpdk.org; Wu, Jingjing <jingjing.wu@intel.com>; Xing, Beilei
> <beilei.xing@intel.com>; Zhang, Qi Z <qi.z.zhang@intel.com>
> Cc: Wu, Wenjun1 <wenjun1.wu@intel.com>
> Subject: [PATCH v2] net/iavf: support default RSS for IP fragment packet
>
> This patch adds default RSS support for IPv4 and IPv6 fragment packet.
>
> Signed-off-by: Wenjun Wu <wenjun1.wu@intel.com>
Acked-by: Qi Zhang <qi.z.zhang@intel.com>
Applied to dpdk-next-net-intel.
Thanks
Qi
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2021-07-13 0:45 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-07-12 2:39 [dpdk-dev] [PATCH v1] net/iavf: support default RSS for IP fragment packet Wenjun Wu
2021-07-12 8:27 ` [dpdk-dev] [PATCH v2] " Wenjun Wu
2021-07-13 0:44 ` Zhang, Qi Z
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).