From: Long Wu <long...@corigine.com> Add support for RSS parsing SCTP packets, including ipv4/ipv6 SCTP and ipv4/ipv6 tunnel SCTP packets.
Signed-off-by: Long Wu <long...@corigine.com> Reviewed-by: Chaoyong He <chaoyong...@corigine.com> Reviewed-by: Niklas Söderlund <niklas.soderl...@corigine.com> --- drivers/net/nfp/nfp_common.c | 16 +++++++++++++++- drivers/net/nfp/nfp_ctrl.h | 4 ++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/drivers/net/nfp/nfp_common.c b/drivers/net/nfp/nfp_common.c index a1e37ada11..cfc38db65a 100644 --- a/drivers/net/nfp/nfp_common.c +++ b/drivers/net/nfp/nfp_common.c @@ -930,9 +930,11 @@ nfp_net_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info) dev_info->flow_type_rss_offloads = RTE_ETH_RSS_IPV4 | RTE_ETH_RSS_NONFRAG_IPV4_TCP | RTE_ETH_RSS_NONFRAG_IPV4_UDP | + RTE_ETH_RSS_NONFRAG_IPV4_SCTP | RTE_ETH_RSS_IPV6 | RTE_ETH_RSS_NONFRAG_IPV6_TCP | - RTE_ETH_RSS_NONFRAG_IPV6_UDP; + RTE_ETH_RSS_NONFRAG_IPV6_UDP | + RTE_ETH_RSS_NONFRAG_IPV6_SCTP; dev_info->reta_size = NFP_NET_CFG_RSS_ITBL_SZ; dev_info->hash_key_size = NFP_NET_CFG_RSS_KEY_SZ; @@ -1336,6 +1338,9 @@ nfp_net_rss_hash_write(struct rte_eth_dev *dev, if (rss_hf & RTE_ETH_RSS_NONFRAG_IPV4_UDP) cfg_rss_ctrl |= NFP_NET_CFG_RSS_IPV4_UDP; + if (rss_hf & RTE_ETH_RSS_NONFRAG_IPV4_SCTP) + cfg_rss_ctrl |= NFP_NET_CFG_RSS_IPV4_SCTP; + if (rss_hf & RTE_ETH_RSS_IPV6) cfg_rss_ctrl |= NFP_NET_CFG_RSS_IPV6; @@ -1345,6 +1350,9 @@ nfp_net_rss_hash_write(struct rte_eth_dev *dev, if (rss_hf & RTE_ETH_RSS_NONFRAG_IPV6_UDP) cfg_rss_ctrl |= NFP_NET_CFG_RSS_IPV6_UDP; + if (rss_hf & RTE_ETH_RSS_NONFRAG_IPV6_SCTP) + cfg_rss_ctrl |= NFP_NET_CFG_RSS_IPV6_SCTP; + cfg_rss_ctrl |= NFP_NET_CFG_RSS_MASK; cfg_rss_ctrl |= NFP_NET_CFG_RSS_TOEPLITZ; @@ -1429,6 +1437,12 @@ nfp_net_rss_hash_conf_get(struct rte_eth_dev *dev, if (cfg_rss_ctrl & NFP_NET_CFG_RSS_IPV6) rss_hf |= RTE_ETH_RSS_NONFRAG_IPV4_UDP | RTE_ETH_RSS_NONFRAG_IPV6_UDP; + if (cfg_rss_ctrl & NFP_NET_CFG_RSS_IPV4_SCTP) + rss_hf |= RTE_ETH_RSS_NONFRAG_IPV4_SCTP; + + if (cfg_rss_ctrl & NFP_NET_CFG_RSS_IPV6_SCTP) + rss_hf |= RTE_ETH_RSS_NONFRAG_IPV6_SCTP; + /* Propagate current RSS hash functions to caller */ rss_conf->rss_hf = rss_hf; diff --git a/drivers/net/nfp/nfp_ctrl.h b/drivers/net/nfp/nfp_ctrl.h index bdc39f8974..75e4458a1b 100644 --- a/drivers/net/nfp/nfp_ctrl.h +++ b/drivers/net/nfp/nfp_ctrl.h @@ -56,6 +56,8 @@ #define NFP_NET_RSS_IPV4_UDP 7 #define NFP_NET_RSS_IPV6_UDP 8 #define NFP_NET_RSS_IPV6_EX_UDP 9 +#define NFP_NET_RSS_IPV4_SCTP 10 +#define NFP_NET_RSS_IPV6_SCTP 11 /* * @NFP_NET_TXR_MAX: Maximum number of TX rings @@ -236,6 +238,8 @@ #define NFP_NET_CFG_RSS_IPV4_UDP (1 << 11) /* RSS for IPv4/UDP */ #define NFP_NET_CFG_RSS_IPV6_TCP (1 << 12) /* RSS for IPv6/TCP */ #define NFP_NET_CFG_RSS_IPV6_UDP (1 << 13) /* RSS for IPv6/UDP */ +#define NFP_NET_CFG_RSS_IPV4_SCTP (1 << 14) /* RSS for IPv4/SCTP */ +#define NFP_NET_CFG_RSS_IPV6_SCTP (1 << 15) /* RSS for IPv6/SCTP */ #define NFP_NET_CFG_RSS_TOEPLITZ (1 << 24) /* Use Toeplitz hash */ #define NFP_NET_CFG_RSS_KEY (NFP_NET_CFG_RSS_BASE + 0x4) #define NFP_NET_CFG_RSS_KEY_SZ 0x28 -- 2.29.3