Add support for IPv4/IPv6 SCTP RSS offload.

Signed-off-by: Jiawen Wu <jiawe...@trustnetic.com>
---
 drivers/net/ngbe/base/ngbe_regs.h | 2 ++
 drivers/net/ngbe/ngbe_ethdev.h    | 2 ++
 drivers/net/ngbe/ngbe_rxtx.c      | 8 ++++++++
 3 files changed, 12 insertions(+)

diff --git a/drivers/net/ngbe/base/ngbe_regs.h 
b/drivers/net/ngbe/base/ngbe_regs.h
index b1295280a7..3c123049b7 100644
--- a/drivers/net/ngbe/base/ngbe_regs.h
+++ b/drivers/net/ngbe/base/ngbe_regs.h
@@ -452,6 +452,8 @@
 #define   NGBE_RACTL_RSSMASK           MS(16, 0xFFFF)
 #define   NGBE_RACTL_RSSIPV4TCP                MS(16, 0x1)
 #define   NGBE_RACTL_RSSIPV4           MS(17, 0x1)
+#define   NGBE_RACTL_RSSIPV4SCTP       MS(18, 0x1)
+#define   NGBE_RACTL_RSSIPV6SCTP       MS(19, 0x1)
 #define   NGBE_RACTL_RSSIPV6           MS(20, 0x1)
 #define   NGBE_RACTL_RSSIPV6TCP                MS(21, 0x1)
 #define   NGBE_RACTL_RSSIPV4UDP                MS(22, 0x1)
diff --git a/drivers/net/ngbe/ngbe_ethdev.h b/drivers/net/ngbe/ngbe_ethdev.h
index 37c6459f51..faff57ef34 100644
--- a/drivers/net/ngbe/ngbe_ethdev.h
+++ b/drivers/net/ngbe/ngbe_ethdev.h
@@ -40,9 +40,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/ngbe/ngbe_rxtx.c b/drivers/net/ngbe/ngbe_rxtx.c
index a372bf2963..3dd268e5bc 100644
--- a/drivers/net/ngbe/ngbe_rxtx.c
+++ b/drivers/net/ngbe/ngbe_rxtx.c
@@ -2652,6 +2652,10 @@ ngbe_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 |= NGBE_RACTL_RSSIPV6UDP;
+       if (rss_hf & RTE_ETH_RSS_NONFRAG_IPV4_SCTP)
+               mrqc |= NGBE_RACTL_RSSIPV4SCTP;
+       if (rss_hf & RTE_ETH_RSS_NONFRAG_IPV6_SCTP)
+               mrqc |= NGBE_RACTL_RSSIPV6SCTP;
 
        if (rss_hf)
                mrqc |= NGBE_RACTL_RSSENA;
@@ -2704,6 +2708,10 @@ ngbe_dev_rss_hash_conf_get(struct rte_eth_dev *dev,
        if (mrqc & NGBE_RACTL_RSSIPV6UDP)
                rss_hf |= RTE_ETH_RSS_NONFRAG_IPV6_UDP |
                          RTE_ETH_RSS_IPV6_UDP_EX;
+       if (mrqc & NGBE_RACTL_RSSIPV4SCTP)
+               rss_hf |= RTE_ETH_RSS_NONFRAG_IPV4_SCTP;
+       if (mrqc & NGBE_RACTL_RSSIPV6SCTP)
+               rss_hf |= RTE_ETH_RSS_NONFRAG_IPV6_SCTP;
        if (!(mrqc & NGBE_RACTL_RSSENA))
                rss_hf = 0;
 
-- 
2.48.1

Reply via email to