Add support for IPv4/IPv6 SCTP RSS offload. Signed-off-by: Jiawen Wu <jiawe...@trustnetic.com> --- drivers/net/txgbe/base/txgbe_regs.h | 4 ++++ drivers/net/txgbe/txgbe_ethdev.h | 2 ++ drivers/net/txgbe/txgbe_rxtx.c | 16 ++++++++++++++++ 3 files changed, 22 insertions(+)
diff --git a/drivers/net/txgbe/base/txgbe_regs.h b/drivers/net/txgbe/base/txgbe_regs.h index 7a9ba6976f..346c23b5da 100644 --- a/drivers/net/txgbe/base/txgbe_regs.h +++ b/drivers/net/txgbe/base/txgbe_regs.h @@ -580,6 +580,8 @@ #define TXGBE_RACTL_RSSMASK MS(16, 0xFFFF) #define TXGBE_RACTL_RSSIPV4TCP MS(16, 0x1) #define TXGBE_RACTL_RSSIPV4 MS(17, 0x1) +#define TXGBE_RACTL_RSSIPV4SCTP MS(18, 0x1) +#define TXGBE_RACTL_RSSIPV6SCTP MS(19, 0x1) #define TXGBE_RACTL_RSSIPV6 MS(20, 0x1) #define TXGBE_RACTL_RSSIPV6TCP MS(21, 0x1) #define TXGBE_RACTL_RSSIPV4UDP MS(22, 0x1) @@ -1287,6 +1289,8 @@ enum txgbe_5tuple_protocol { #define TXGBE_VFPLCFG_RSSMASK MS(16, 0xFF) #define TXGBE_VFPLCFG_RSSIPV4TCP MS(16, 0x1) #define TXGBE_VFPLCFG_RSSIPV4 MS(17, 0x1) +#define TXGBE_VFPLCFG_RSSIPV4SCTP MS(18, 0x1) +#define TXGBE_VFPLCFG_RSSIPV6SCTP MS(19, 0x1) #define TXGBE_VFPLCFG_RSSIPV6 MS(20, 0x1) #define TXGBE_VFPLCFG_RSSIPV6TCP MS(21, 0x1) #define TXGBE_VFPLCFG_RSSIPV4UDP MS(22, 0x1) diff --git a/drivers/net/txgbe/txgbe_ethdev.h b/drivers/net/txgbe/txgbe_ethdev.h index c2d0950d2c..9295d8fbd0 100644 --- a/drivers/net/txgbe/txgbe_ethdev.h +++ b/drivers/net/txgbe/txgbe_ethdev.h @@ -65,9 +65,11 @@ 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_SCTP | \ RTE_ETH_RSS_IPV6_EX | \ RTE_ETH_RSS_IPV6_TCP_EX | \ RTE_ETH_RSS_IPV6_UDP_EX) diff --git a/drivers/net/txgbe/txgbe_rxtx.c b/drivers/net/txgbe/txgbe_rxtx.c index 4e4b78fb43..a85d417ff6 100644 --- a/drivers/net/txgbe/txgbe_rxtx.c +++ b/drivers/net/txgbe/txgbe_rxtx.c @@ -3090,6 +3090,10 @@ txgbe_dev_rss_hash_update(struct rte_eth_dev *dev, if (rss_hf & RTE_ETH_RSS_NONFRAG_IPV6_UDP || rss_hf & RTE_ETH_RSS_IPV6_UDP_EX) mrqc |= TXGBE_VFPLCFG_RSSIPV6UDP; + if (rss_hf & RTE_ETH_RSS_NONFRAG_IPV4_SCTP) + mrqc |= TXGBE_VFPLCFG_RSSIPV4SCTP; + if (rss_hf & RTE_ETH_RSS_NONFRAG_IPV6_SCTP) + mrqc |= TXGBE_VFPLCFG_RSSIPV6SCTP; if (rss_hf) mrqc |= TXGBE_VFPLCFG_RSSENA; @@ -3120,6 +3124,10 @@ txgbe_dev_rss_hash_update(struct rte_eth_dev *dev, if (rss_hf & RTE_ETH_RSS_NONFRAG_IPV6_UDP || rss_hf & RTE_ETH_RSS_IPV6_UDP_EX) mrqc |= TXGBE_RACTL_RSSIPV6UDP; + if (rss_hf & RTE_ETH_RSS_NONFRAG_IPV4_SCTP) + mrqc |= TXGBE_RACTL_RSSIPV4SCTP; + if (rss_hf & RTE_ETH_RSS_NONFRAG_IPV6_SCTP) + mrqc |= TXGBE_RACTL_RSSIPV6SCTP; if (rss_hf) mrqc |= TXGBE_RACTL_RSSENA; @@ -3173,6 +3181,10 @@ txgbe_dev_rss_hash_conf_get(struct rte_eth_dev *dev, if (mrqc & TXGBE_VFPLCFG_RSSIPV6UDP) rss_hf |= RTE_ETH_RSS_NONFRAG_IPV6_UDP | RTE_ETH_RSS_IPV6_UDP_EX; + if (mrqc & TXGBE_VFPLCFG_RSSIPV4SCTP) + rss_hf |= RTE_ETH_RSS_NONFRAG_IPV4_SCTP; + if (mrqc & TXGBE_VFPLCFG_RSSIPV6SCTP) + rss_hf |= RTE_ETH_RSS_NONFRAG_IPV6_SCTP; if (!(mrqc & TXGBE_VFPLCFG_RSSENA)) rss_hf = 0; } else { @@ -3192,6 +3204,10 @@ txgbe_dev_rss_hash_conf_get(struct rte_eth_dev *dev, if (mrqc & TXGBE_RACTL_RSSIPV6UDP) rss_hf |= RTE_ETH_RSS_NONFRAG_IPV6_UDP | RTE_ETH_RSS_IPV6_UDP_EX; + if (mrqc & TXGBE_RACTL_RSSIPV4SCTP) + rss_hf |= RTE_ETH_RSS_NONFRAG_IPV4_SCTP; + if (mrqc & TXGBE_RACTL_RSSIPV6SCTP) + rss_hf |= RTE_ETH_RSS_NONFRAG_IPV6_SCTP; if (!(mrqc & TXGBE_RACTL_RSSENA)) rss_hf = 0; } -- 2.48.1