[v3,2/2] net/iavf: support RSS for IPv6 prefix 64bit

Message ID 20200915062609.3786061-3-junfeng.guo@intel.com (mailing list archive)
State Superseded, archived
Delegated to: Qi Zhang
Headers
Series add AVF RSS support for IPv6 prefix |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation fail apply issues

Commit Message

Junfeng Guo Sept. 15, 2020, 6:26 a.m. UTC
  RSS for IPv6 prefix 64bit fields are supported in this patch, so that
we can use prefix instead of full IPv6 address for RSS. The prefix
here only includes the first 64 bits of both SRC and DST IPv6 address.

Signed-off-by: Junfeng Guo <junfeng.guo@intel.com>
---
 drivers/net/iavf/iavf_hash.c | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)
  

Patch

diff --git a/drivers/net/iavf/iavf_hash.c b/drivers/net/iavf/iavf_hash.c
index d8a4dc8bf..c270daf5f 100644
--- a/drivers/net/iavf/iavf_hash.c
+++ b/drivers/net/iavf/iavf_hash.c
@@ -580,7 +580,28 @@  iavf_refine_proto_hdrs_l234(struct virtchnl_proto_hdrs *proto_hdrs,
 			}
 			break;
 		case VIRTCHNL_PROTO_HDR_IPV6:
+			if (rss_type & RTE_ETH_RSS_L3_PRE64) {
+				REFINE_PROTO_FLD(DEL, IPV6_SRC);
+				REFINE_PROTO_FLD(DEL, IPV6_DST);
+				REFINE_PROTO_FLD(ADD, IPV6_PREFIX64_SRC);
+				REFINE_PROTO_FLD(ADD, IPV6_PREFIX64_DST);
+			}
 			if (rss_type &
+			    (ETH_RSS_IPV6_PRE64 |
+			     ETH_RSS_IPV6_PRE64_UDP |
+			     ETH_RSS_IPV6_PRE64_TCP |
+			     ETH_RSS_IPV6_PRE64_SCTP)) {
+				if (rss_type & ETH_RSS_L3_SRC_ONLY)
+					REFINE_PROTO_FLD(DEL,
+							 IPV6_PREFIX64_DST);
+				else if (rss_type & ETH_RSS_L3_DST_ONLY)
+					REFINE_PROTO_FLD(DEL,
+							 IPV6_PREFIX64_SRC);
+				else if (rss_type &
+					 (ETH_RSS_L4_SRC_ONLY |
+					  ETH_RSS_L4_DST_ONLY))
+					hdr->field_selector = 0;
+			} else if (rss_type &
 			    (ETH_RSS_IPV6 |
 			     ETH_RSS_NONFRAG_IPV6_UDP |
 			     ETH_RSS_NONFRAG_IPV6_TCP |