[dpdk-dev] [PATCH 11/13] cxgbe: export supported RSS hash functions

Rahul Lakkireddy rahul.lakkireddy at chelsio.com
Sat Mar 10 23:48:29 CET 2018


Export supported RSS hash functions in device info.  Also add check to
prevent configuring unsupported RSS hash functions.

Fixes: 58c5a23c1c4f ("net/cxgbe: support updating RSS hash configuration and key")
Signed-off-by: Rahul Lakkireddy <rahul.lakkireddy at chelsio.com>
Signed-off-by: Kumar Sanghvi <kumaras at chelsio.com>
---
 drivers/net/cxgbe/cxgbe.h        | 5 +++++
 drivers/net/cxgbe/cxgbe_ethdev.c | 1 +
 drivers/net/cxgbe/cxgbe_main.c   | 6 +++++-
 3 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/drivers/net/cxgbe/cxgbe.h b/drivers/net/cxgbe/cxgbe.h
index da8bdd03c..9438239bc 100644
--- a/drivers/net/cxgbe/cxgbe.h
+++ b/drivers/net/cxgbe/cxgbe.h
@@ -47,6 +47,11 @@
 #define CXGBE_MAX_RX_PKTLEN (9000 + ETHER_HDR_LEN + ETHER_CRC_LEN) /* max pkt */
 
 #define CXGBE_DEFAULT_RSS_KEY_LEN     40 /* 320-bits */
+#define CXGBE_RSS_HF_ALL (ETH_RSS_IPV4 | ETH_RSS_IPV6 | \
+			  ETH_RSS_NONFRAG_IPV4_TCP | \
+			  ETH_RSS_NONFRAG_IPV4_UDP | \
+			  ETH_RSS_NONFRAG_IPV6_TCP | \
+			  ETH_RSS_NONFRAG_IPV6_UDP)
 
 int cxgbe_probe(struct adapter *adapter);
 int cxgbevf_probe(struct adapter *adapter);
diff --git a/drivers/net/cxgbe/cxgbe_ethdev.c b/drivers/net/cxgbe/cxgbe_ethdev.c
index fdea65ba6..2610d62ef 100644
--- a/drivers/net/cxgbe/cxgbe_ethdev.c
+++ b/drivers/net/cxgbe/cxgbe_ethdev.c
@@ -173,6 +173,7 @@ void cxgbe_dev_info_get(struct rte_eth_dev *eth_dev,
 
 	device_info->reta_size = pi->rss_size;
 	device_info->hash_key_size = CXGBE_DEFAULT_RSS_KEY_LEN;
+	device_info->flow_type_rss_offloads = CXGBE_RSS_HF_ALL;
 
 	device_info->rx_desc_lim = cxgbe_desc_lim;
 	device_info->tx_desc_lim = cxgbe_desc_lim;
diff --git a/drivers/net/cxgbe/cxgbe_main.c b/drivers/net/cxgbe/cxgbe_main.c
index b3b2b006a..138e1c159 100644
--- a/drivers/net/cxgbe/cxgbe_main.c
+++ b/drivers/net/cxgbe/cxgbe_main.c
@@ -365,7 +365,7 @@ int init_rss(struct adapter *adap)
 		if (!pi->rss)
 			return -ENOMEM;
 
-		pi->rss_hf = ETH_RSS_TCP | ETH_RSS_UDP;
+		pi->rss_hf = CXGBE_RSS_HF_ALL;
 	}
 	return 0;
 }
@@ -957,6 +957,10 @@ int cxgbe_write_rss_conf(const struct port_info *pi, uint64_t rss_hf)
 		return -EINVAL;
 	}
 
+	/* Don't allow unsupported hash functions */
+	if (rss_hf & ~CXGBE_RSS_HF_ALL)
+		return -EINVAL;
+
 	if (rss_hf & ETH_RSS_IPV4)
 		flags |= F_FW_RSS_VI_CONFIG_CMD_IP4TWOTUPEN;
 
-- 
2.14.1



More information about the dev mailing list