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

Message ID 4d1616b2f7dd81859b3c88d974c2ab8aade396b1.1520720053.git.rahul.lakkireddy@chelsio.com (mailing list archive)
State Accepted, archived
Delegated to: Ferruh Yigit
Headers

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK

Commit Message

Rahul Lakkireddy March 10, 2018, 10:48 p.m. UTC
  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@chelsio.com>
Signed-off-by: Kumar Sanghvi <kumaras@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(-)
  

Comments

Ferruh Yigit March 28, 2018, 5:25 p.m. UTC | #1
On 3/10/2018 10:48 PM, Rahul Lakkireddy wrote:
> 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@chelsio.com>
> Signed-off-by: Kumar Sanghvi <kumaras@chelsio.com>

Squashed into relevant commit in next-net, thanks.
  

Patch

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;