From patchwork Mon Aug 3 10:28:13 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Junfeng Guo X-Patchwork-Id: 75127 X-Patchwork-Delegate: qi.z.zhang@intel.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 01D69A0518; Mon, 3 Aug 2020 04:31:16 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 4DA011C023; Mon, 3 Aug 2020 04:31:08 +0200 (CEST) Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by dpdk.org (Postfix) with ESMTP id EA000F64 for ; Mon, 3 Aug 2020 04:31:05 +0200 (CEST) IronPort-SDR: IrTVvxa57sOhViluQE5LfbOkFGGB/U4yu7bwDdKCOrpPy8/3SrG5N7cVyOBDcuZzvXLg/mvKlb Y0wLMJWd4QPg== X-IronPort-AV: E=McAfee;i="6000,8403,9701"; a="149837931" X-IronPort-AV: E=Sophos;i="5.75,428,1589266800"; d="scan'208";a="149837931" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 Aug 2020 19:31:05 -0700 IronPort-SDR: DbKrN3u24ObnL/gqKpPfjyoDeDC7+v/VNdYx2+0DBBtEBoWn1Zx0TIsoOS6mHX6QGfNozidUzu q2sogCm73w1w== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.75,428,1589266800"; d="scan'208";a="492175858" Received: from dpdk-junfengguo-v1.sh.intel.com ([10.67.119.59]) by fmsmga005.fm.intel.com with ESMTP; 02 Aug 2020 19:31:04 -0700 From: Junfeng Guo To: qi.z.zhang@intel.com, jingjing.wu@intel.com, beilei.xing@intel.com Cc: dev@dpdk.org, junfeng.guo@intel.com Date: Mon, 3 Aug 2020 10:28:13 +0000 Message-Id: <20200803102814.3081903-2-junfeng.guo@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200803102814.3081903-1-junfeng.guo@intel.com> References: <20200803102814.3081903-1-junfeng.guo@intel.com> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH 1/2] common/iavf: support virtual channel for IPv6 prefix X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Some IPv6 prefix related protocol header fields are defined in this patch, so that we can use prefix instead of full IPv6 address for RSS. Ref https://tools.ietf.org/html/rfc6052. Signed-off-by: Junfeng Guo --- drivers/common/iavf/virtchnl.h | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/drivers/common/iavf/virtchnl.h b/drivers/common/iavf/virtchnl.h index 79515ee8b..424e18a11 100644 --- a/drivers/common/iavf/virtchnl.h +++ b/drivers/common/iavf/virtchnl.h @@ -881,6 +881,19 @@ enum virtchnl_proto_hdr_field { VIRTCHNL_PROTO_HDR_IPV6_TC, VIRTCHNL_PROTO_HDR_IPV6_HOP_LIMIT, VIRTCHNL_PROTO_HDR_IPV6_PROT, + /* IPV6 Prefix */ + VIRTCHNL_PROTO_HDR_IPV6_PREFIX32_SRC, + VIRTCHNL_PROTO_HDR_IPV6_PREFIX32_DST, + VIRTCHNL_PROTO_HDR_IPV6_PREFIX40_SRC, + VIRTCHNL_PROTO_HDR_IPV6_PREFIX40_DST, + VIRTCHNL_PROTO_HDR_IPV6_PREFIX48_SRC, + VIRTCHNL_PROTO_HDR_IPV6_PREFIX48_DST, + VIRTCHNL_PROTO_HDR_IPV6_PREFIX56_SRC, + VIRTCHNL_PROTO_HDR_IPV6_PREFIX56_DST, + VIRTCHNL_PROTO_HDR_IPV6_PREFIX64_SRC, + VIRTCHNL_PROTO_HDR_IPV6_PREFIX64_DST, + VIRTCHNL_PROTO_HDR_IPV6_PREFIX96_SRC, + VIRTCHNL_PROTO_HDR_IPV6_PREFIX96_DST, /* TCP */ VIRTCHNL_PROTO_HDR_TCP_SRC_PORT = PROTO_HDR_FIELD_START(VIRTCHNL_PROTO_HDR_TCP), From patchwork Mon Aug 3 10:28:14 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Junfeng Guo X-Patchwork-Id: 75128 X-Patchwork-Delegate: qi.z.zhang@intel.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 8A185A0518; Mon, 3 Aug 2020 04:31:24 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id EEFF81C031; Mon, 3 Aug 2020 04:31:09 +0200 (CEST) Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by dpdk.org (Postfix) with ESMTP id 51EC91C025 for ; Mon, 3 Aug 2020 04:31:08 +0200 (CEST) IronPort-SDR: VO4MU/kVQSoENwESYPXol+5+eIFWBwGeV/xcuSxi/5GZIzBOc6vFxPdmJIq0PAKdxQ9nqF4C2D J/GtKjFt7WXw== X-IronPort-AV: E=McAfee;i="6000,8403,9701"; a="149837935" X-IronPort-AV: E=Sophos;i="5.75,428,1589266800"; d="scan'208";a="149837935" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 Aug 2020 19:31:07 -0700 IronPort-SDR: SF/L0uwnG/EKiitv0u9E5evIrWPZTbaXo+BDmVMFS9qvelomsPZXRK03KeBDFMakUnDF8vFcxV lgf3ZjPldVmA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.75,428,1589266800"; d="scan'208";a="492175866" Received: from dpdk-junfengguo-v1.sh.intel.com ([10.67.119.59]) by fmsmga005.fm.intel.com with ESMTP; 02 Aug 2020 19:31:05 -0700 From: Junfeng Guo To: qi.z.zhang@intel.com, jingjing.wu@intel.com, beilei.xing@intel.com Cc: dev@dpdk.org, junfeng.guo@intel.com Date: Mon, 3 Aug 2020 10:28:14 +0000 Message-Id: <20200803102814.3081903-3-junfeng.guo@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200803102814.3081903-1-junfeng.guo@intel.com> References: <20200803102814.3081903-1-junfeng.guo@intel.com> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH 2/2] net/iavf: support RSS for IPv6 prefix 64bit X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" 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 --- drivers/net/iavf/iavf_hash.c | 232 +++++++++++++++++++++++++++++++++++ 1 file changed, 232 insertions(+) diff --git a/drivers/net/iavf/iavf_hash.c b/drivers/net/iavf/iavf_hash.c index e2eebd2d3..3dc96d0f6 100644 --- a/drivers/net/iavf/iavf_hash.c +++ b/drivers/net/iavf/iavf_hash.c @@ -445,6 +445,41 @@ static struct iavf_pattern_match_item iavf_hash_pattern_list[] = { FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV6_DST) | \ FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV6_PROT), {BUFF_NOUSED } } +/* IPV6 Prefix 64 for L3 */ +#define proto_hint_ipv6_pre64 { \ + VIRTCHNL_PROTO_HDR_IPV6, \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV6_PREFIX64_SRC) | \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV6_PREFIX64_DST), {BUFF_NOUSED } } + +#define proto_hint_ipv6_pre64_src { \ + VIRTCHNL_PROTO_HDR_IPV6, \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV6_PREFIX64_SRC), {BUFF_NOUSED } } + +#define proto_hint_ipv6_pre64_dst { \ + VIRTCHNL_PROTO_HDR_IPV6, \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV6_PREFIX64_DST), {BUFF_NOUSED } } + +/* IPV6 Prefix 64 for L4 */ +#define proto_hint_ipv6_pre64_prot { \ + VIRTCHNL_PROTO_HDR_IPV6, \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV6_PREFIX64_SRC) | \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV6_PREFIX64_DST) | \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV6_PROT), {BUFF_NOUSED } } + +#define proto_hint_ipv6_pre64_src_prot { \ + VIRTCHNL_PROTO_HDR_IPV6, \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV6_PREFIX64_SRC) | \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV6_PROT), {BUFF_NOUSED } } + +#define proto_hint_ipv6_pre64_dst_prot { \ + VIRTCHNL_PROTO_HDR_IPV6, \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV6_PREFIX64_DST) | \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV6_PROT), {BUFF_NOUSED } } + +#define proto_hint_ipv6_pre64_only_prot { \ + VIRTCHNL_PROTO_HDR_IPV6, \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV6_PROT), {BUFF_NOUSED } } + #define proto_hint_gtpu_ip_teid { \ VIRTCHNL_PROTO_HDR_GTPU_IP, \ FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_GTPU_IP_TEID), {BUFF_NOUSED } } @@ -1999,6 +2034,139 @@ struct virtchnl_proto_hdrs hdrs_hint_ipv6_udp_esp = { proto_hint_udp_only, proto_hint_esp } }; +/* IPV6 Prefix 64 */ +struct virtchnl_proto_hdrs hdrs_hint_ipv6_pre64 = { + TUNNEL_LEVEL_OUTER, PROTO_COUNT_ONE, {proto_hint_ipv6_pre64 } +}; + +struct virtchnl_proto_hdrs hdrs_hint_ipv6_pre64_src = { + TUNNEL_LEVEL_OUTER, PROTO_COUNT_ONE, {proto_hint_ipv6_pre64_src } +}; + +struct virtchnl_proto_hdrs hdrs_hint_ipv6_pre64_dst = { + TUNNEL_LEVEL_OUTER, PROTO_COUNT_ONE, {proto_hint_ipv6_pre64_dst } +}; + +struct virtchnl_proto_hdrs hdrs_hint_ipv6_pre64_prot = { + TUNNEL_LEVEL_OUTER, PROTO_COUNT_ONE, {proto_hint_ipv6_pre64_prot } +}; + +struct virtchnl_proto_hdrs hdrs_hint_ipv6_pre64_src_prot = { + TUNNEL_LEVEL_OUTER, PROTO_COUNT_ONE, {proto_hint_ipv6_pre64_src_prot } +}; + +struct virtchnl_proto_hdrs hdrs_hint_ipv6_pre64_dst_prot = { + TUNNEL_LEVEL_OUTER, PROTO_COUNT_ONE, {proto_hint_ipv6_pre64_dst_prot } +}; + +/* IPV6 Prefix 64 UDP */ +struct virtchnl_proto_hdrs hdrs_hint_ipv6_pre64_udp = { + TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_pre64_prot, + proto_hint_udp } +}; + +struct virtchnl_proto_hdrs hdrs_hint_ipv6_pre64_src_udp_src_port = { + TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_pre64_src_prot, + proto_hint_udp_src_port } +}; + +struct virtchnl_proto_hdrs hdrs_hint_ipv6_pre64_src_udp_dst_port = { + TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_pre64_src_prot, + proto_hint_udp_dst_port } +}; + +struct virtchnl_proto_hdrs hdrs_hint_ipv6_pre64_dst_udp_src_port = { + TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_pre64_dst_prot, + proto_hint_udp_src_port } +}; + +struct virtchnl_proto_hdrs hdrs_hint_ipv6_pre64_dst_udp_dst_port = { + TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_pre64_dst_prot, + proto_hint_udp_dst_port } +}; + +struct virtchnl_proto_hdrs hdrs_hint_ipv6_pre64_udp_src_port = { + TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_pre64_only_prot, + proto_hint_udp_src_port } +}; + +struct virtchnl_proto_hdrs hdrs_hint_ipv6_pre64_udp_dst_port = { + TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_pre64_only_prot, + proto_hint_udp_dst_port } +}; + +/* IPV6 Prefix 64 TCP */ +struct virtchnl_proto_hdrs hdrs_hint_ipv6_pre64_tcp = { + TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_pre64_prot, + proto_hint_tcp } +}; + +struct virtchnl_proto_hdrs hdrs_hint_ipv6_pre64_src_tcp_src_port = { + TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_pre64_src_prot, + proto_hint_tcp_src_port } +}; + +struct virtchnl_proto_hdrs hdrs_hint_ipv6_pre64_src_tcp_dst_port = { + TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_pre64_src_prot, + proto_hint_tcp_dst_port } +}; + +struct virtchnl_proto_hdrs hdrs_hint_ipv6_pre64_dst_tcp_src_port = { + TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_pre64_dst_prot, + proto_hint_tcp_src_port } +}; + +struct virtchnl_proto_hdrs hdrs_hint_ipv6_pre64_dst_tcp_dst_port = { + TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_pre64_dst_prot, + proto_hint_tcp_dst_port } +}; + +struct virtchnl_proto_hdrs hdrs_hint_ipv6_pre64_tcp_src_port = { + TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_pre64_only_prot, + proto_hint_tcp_src_port } +}; + +struct virtchnl_proto_hdrs hdrs_hint_ipv6_pre64_tcp_dst_port = { + TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_pre64_only_prot, + proto_hint_tcp_dst_port } +}; + +/* IPV6 Prefix 64 SCTP */ +struct virtchnl_proto_hdrs hdrs_hint_ipv6_pre64_sctp = { + TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_pre64_prot, + proto_hint_sctp } +}; + +struct virtchnl_proto_hdrs hdrs_hint_ipv6_pre64_src_sctp_src_port = { + TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_pre64_src_prot, + proto_hint_sctp_src_port } +}; + +struct virtchnl_proto_hdrs hdrs_hint_ipv6_pre64_src_sctp_dst_port = { + TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_pre64_src_prot, + proto_hint_sctp_dst_port } +}; + +struct virtchnl_proto_hdrs hdrs_hint_ipv6_pre64_dst_sctp_src_port = { + TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_pre64_dst_prot, + proto_hint_sctp_src_port } +}; + +struct virtchnl_proto_hdrs hdrs_hint_ipv6_pre64_dst_sctp_dst_port = { + TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_pre64_dst_prot, + proto_hint_sctp_dst_port } +}; + +struct virtchnl_proto_hdrs hdrs_hint_ipv6_pre64_sctp_src_port = { + TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_pre64_only_prot, + proto_hint_sctp_src_port } +}; + +struct virtchnl_proto_hdrs hdrs_hint_ipv6_pre64_sctp_dst_port = { + TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_pre64_only_prot, + proto_hint_sctp_dst_port } +}; + struct iavf_hash_match_type iavf_hash_map_list[] = { /* IPV4 */ {ETH_RSS_L2_SRC_ONLY, @@ -2151,6 +2319,13 @@ struct iavf_hash_match_type iavf_hash_map_list[] = { &hdrs_hint_ipv6_ah, IAVF_PHINT_IPV6}, {ETH_RSS_L2TPV3, &hdrs_hint_ipv6_l2tpv3, IAVF_PHINT_IPV6}, + /* IPV6 Prefix 64 */ + {ETH_RSS_IPV6_PRE64, + &hdrs_hint_ipv6_pre64, IAVF_PHINT_IPV6}, + {ETH_RSS_IPV6_PRE64 | ETH_RSS_L3_SRC_ONLY, + &hdrs_hint_ipv6_pre64_src, IAVF_PHINT_IPV6}, + {ETH_RSS_IPV6_PRE64 | ETH_RSS_L3_DST_ONLY, + &hdrs_hint_ipv6_pre64_dst, IAVF_PHINT_IPV6}, /* IPV6 UDP */ {ETH_RSS_L2_SRC_ONLY, &hdrs_hint_eth_src_ipv6_udp, IAVF_PHINT_IPV6_UDP}, @@ -2186,6 +2361,25 @@ struct iavf_hash_match_type iavf_hash_map_list[] = { &hdrs_hint_ipv6_udp_esp, IAVF_PHINT_IPV6_UDP}, {ETH_RSS_NONFRAG_IPV6_UDP, &hdrs_hint_ipv6_udp, IAVF_PHINT_IPV6_UDP}, + /* IPV6 Prefix 64 UDP */ + {ETH_RSS_IPV6_PRE64_UDP, + &hdrs_hint_ipv6_pre64_udp, IAVF_PHINT_IPV6_UDP}, + {ETH_RSS_IPV6_PRE64_UDP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY, + &hdrs_hint_ipv6_pre64_src_udp_src_port, IAVF_PHINT_IPV6_UDP}, + {ETH_RSS_IPV6_PRE64_UDP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY, + &hdrs_hint_ipv6_pre64_src_udp_dst_port, IAVF_PHINT_IPV6_UDP}, + {ETH_RSS_IPV6_PRE64_UDP | ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY, + &hdrs_hint_ipv6_pre64_dst_udp_src_port, IAVF_PHINT_IPV6_UDP}, + {ETH_RSS_IPV6_PRE64_UDP | ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY, + &hdrs_hint_ipv6_pre64_dst_udp_dst_port, IAVF_PHINT_IPV6_UDP}, + {ETH_RSS_IPV6_PRE64_UDP | ETH_RSS_L3_SRC_ONLY, + &hdrs_hint_ipv6_pre64_src_prot, IAVF_PHINT_IPV6_UDP}, + {ETH_RSS_IPV6_PRE64_UDP | ETH_RSS_L3_DST_ONLY, + &hdrs_hint_ipv6_pre64_dst_prot, IAVF_PHINT_IPV6_UDP}, + {ETH_RSS_IPV6_PRE64_UDP | ETH_RSS_L4_SRC_ONLY, + &hdrs_hint_ipv6_pre64_udp_src_port, IAVF_PHINT_IPV6_UDP}, + {ETH_RSS_IPV6_PRE64_UDP | ETH_RSS_L4_DST_ONLY, + &hdrs_hint_ipv6_pre64_udp_dst_port, IAVF_PHINT_IPV6_UDP}, /* IPV6 TCP */ {ETH_RSS_L2_SRC_ONLY, &hdrs_hint_eth_src_ipv6_tcp, IAVF_PHINT_IPV6_TCP}, @@ -2217,6 +2411,25 @@ struct iavf_hash_match_type iavf_hash_map_list[] = { &hdrs_hint_ipv6_tcp_dst_port, IAVF_PHINT_IPV6_TCP}, {ETH_RSS_NONFRAG_IPV6_TCP, &hdrs_hint_ipv6_tcp, IAVF_PHINT_IPV6_TCP}, + /* IPV6 Prefix 64 TCP */ + {ETH_RSS_IPV6_PRE64_TCP, + &hdrs_hint_ipv6_pre64_tcp, IAVF_PHINT_IPV6_TCP}, + {ETH_RSS_IPV6_PRE64_TCP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY, + &hdrs_hint_ipv6_pre64_src_tcp_src_port, IAVF_PHINT_IPV6_TCP}, + {ETH_RSS_IPV6_PRE64_TCP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY, + &hdrs_hint_ipv6_pre64_src_tcp_dst_port, IAVF_PHINT_IPV6_TCP}, + {ETH_RSS_IPV6_PRE64_TCP | ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY, + &hdrs_hint_ipv6_pre64_dst_tcp_src_port, IAVF_PHINT_IPV6_TCP}, + {ETH_RSS_IPV6_PRE64_TCP | ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY, + &hdrs_hint_ipv6_pre64_dst_tcp_dst_port, IAVF_PHINT_IPV6_TCP}, + {ETH_RSS_IPV6_PRE64_TCP | ETH_RSS_L3_SRC_ONLY, + &hdrs_hint_ipv6_pre64_src_prot, IAVF_PHINT_IPV6_TCP}, + {ETH_RSS_IPV6_PRE64_TCP | ETH_RSS_L3_DST_ONLY, + &hdrs_hint_ipv6_pre64_dst_prot, IAVF_PHINT_IPV6_TCP}, + {ETH_RSS_IPV6_PRE64_TCP | ETH_RSS_L4_SRC_ONLY, + &hdrs_hint_ipv6_pre64_tcp_src_port, IAVF_PHINT_IPV6_TCP}, + {ETH_RSS_IPV6_PRE64_TCP | ETH_RSS_L4_DST_ONLY, + &hdrs_hint_ipv6_pre64_tcp_dst_port, IAVF_PHINT_IPV6_TCP}, /* IPV6 SCTP */ {ETH_RSS_L2_SRC_ONLY, &hdrs_hint_eth_src_ipv6_sctp, IAVF_PHINT_IPV6_SCTP}, @@ -2264,6 +2477,25 @@ struct iavf_hash_match_type iavf_hash_map_list[] = { &hdrs_hint_cvlan_ipv6_tcp, IAVF_PHINT_IPV6_TCP}, {ETH_RSS_C_VLAN, &hdrs_hint_cvlan_ipv6_sctp, IAVF_PHINT_IPV6_SCTP}, + /* IPV6 Prefix 64 SCTP */ + {ETH_RSS_IPV6_PRE64_SCTP, + &hdrs_hint_ipv6_pre64_sctp, IAVF_PHINT_IPV6_SCTP}, + {ETH_RSS_IPV6_PRE64_SCTP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY, + &hdrs_hint_ipv6_pre64_src_sctp_src_port, IAVF_PHINT_IPV6_SCTP}, + {ETH_RSS_IPV6_PRE64_SCTP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY, + &hdrs_hint_ipv6_pre64_src_sctp_dst_port, IAVF_PHINT_IPV6_SCTP}, + {ETH_RSS_IPV6_PRE64_SCTP | ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY, + &hdrs_hint_ipv6_pre64_dst_sctp_src_port, IAVF_PHINT_IPV6_SCTP}, + {ETH_RSS_IPV6_PRE64_SCTP | ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY, + &hdrs_hint_ipv6_pre64_dst_sctp_dst_port, IAVF_PHINT_IPV6_SCTP}, + {ETH_RSS_IPV6_PRE64_SCTP | ETH_RSS_L3_SRC_ONLY, + &hdrs_hint_ipv6_pre64_src_prot, IAVF_PHINT_IPV6_SCTP}, + {ETH_RSS_IPV6_PRE64_SCTP | ETH_RSS_L3_DST_ONLY, + &hdrs_hint_ipv6_pre64_dst_prot, IAVF_PHINT_IPV6_SCTP}, + {ETH_RSS_IPV6_PRE64_SCTP | ETH_RSS_L4_SRC_ONLY, + &hdrs_hint_ipv6_pre64_sctp_src_port, IAVF_PHINT_IPV6_SCTP}, + {ETH_RSS_IPV6_PRE64_SCTP | ETH_RSS_L4_DST_ONLY, + &hdrs_hint_ipv6_pre64_sctp_dst_port, IAVF_PHINT_IPV6_SCTP}, }; struct iavf_hash_match_type iavf_gtpu_hash_map_list[] = {