[dpdk-dev,v2] net/failsafe: advertise supported RSS functions

Message ID 1525873601-24453-1-git-send-email-ophirmu@mellanox.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

Ophir Munk May 9, 2018, 1:46 p.m. UTC
  Advertise failsafe supported RSS functions as part of dev_infos_get
callback. Set failsafe default RSS hash functions to be:
ETH_RSS_IP, ETH_RSS_UDP, and ETH_RSS_TCP.
The result of failsafe RSS hash functions is the logical AND of the
RSS hash functions among all failsafe sub_devices and failsafe own
defaults.

Previous to this commit RSS support was reported as none. Since the
introduction of [1] it is required that all RSS configurations be
verified.

[1] commit 8863a1fbfc66 ("ethdev: add supported hash function check")

Signed-off-by: Ophir Munk <ophirmu@mellanox.com>
---
v1:
Initial release
v2:
Changes based on review comments (mainly commit message update)

 drivers/net/failsafe/failsafe_ops.c | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)
  

Comments

Gaëtan Rivet May 9, 2018, 2:04 p.m. UTC | #1
thanks Ophir,

On Wed, May 09, 2018 at 01:46:41PM +0000, Ophir Munk wrote:
> Advertise failsafe supported RSS functions as part of dev_infos_get
> callback. Set failsafe default RSS hash functions to be:
> ETH_RSS_IP, ETH_RSS_UDP, and ETH_RSS_TCP.
> The result of failsafe RSS hash functions is the logical AND of the
> RSS hash functions among all failsafe sub_devices and failsafe own
> defaults.
> 
> Previous to this commit RSS support was reported as none. Since the
> introduction of [1] it is required that all RSS configurations be
> verified.
> 
> [1] commit 8863a1fbfc66 ("ethdev: add supported hash function check")
> 
> Signed-off-by: Ophir Munk <ophirmu@mellanox.com>

I made a slight mistake in my earlier naming suggestion, but it's not
important.

Acked-by: Gaetan Rivet <gaetan.rivet@6wind.com>
  
Ferruh Yigit May 9, 2018, 10:46 p.m. UTC | #2
On 5/9/2018 3:04 PM, Gaëtan Rivet wrote:
> thanks Ophir,
> 
> On Wed, May 09, 2018 at 01:46:41PM +0000, Ophir Munk wrote:
>> Advertise failsafe supported RSS functions as part of dev_infos_get
>> callback. Set failsafe default RSS hash functions to be:
>> ETH_RSS_IP, ETH_RSS_UDP, and ETH_RSS_TCP.
>> The result of failsafe RSS hash functions is the logical AND of the
>> RSS hash functions among all failsafe sub_devices and failsafe own
>> defaults.
>>
>> Previous to this commit RSS support was reported as none. Since the
>> introduction of [1] it is required that all RSS configurations be
>> verified.
>>
>> [1] commit 8863a1fbfc66 ("ethdev: add supported hash function check")
>>
>> Signed-off-by: Ophir Munk <ophirmu@mellanox.com>
> 
> I made a slight mistake in my earlier naming suggestion, but it's not
> important.
> 
> Acked-by: Gaetan Rivet <gaetan.rivet@6wind.com>

Applied to dpdk-next-net/master, thanks.
  

Patch

diff --git a/drivers/net/failsafe/failsafe_ops.c b/drivers/net/failsafe/failsafe_ops.c
index 6d44884..6f85a63 100644
--- a/drivers/net/failsafe/failsafe_ops.c
+++ b/drivers/net/failsafe/failsafe_ops.c
@@ -83,7 +83,10 @@  static struct rte_eth_dev_info default_infos = {
 		DEV_TX_OFFLOAD_UDP_CKSUM |
 		DEV_TX_OFFLOAD_TCP_CKSUM |
 		DEV_TX_OFFLOAD_TCP_TSO,
-	.flow_type_rss_offloads = 0x0,
+	.flow_type_rss_offloads =
+			ETH_RSS_IP |
+			ETH_RSS_UDP |
+			ETH_RSS_TCP,
 };
 
 static int
@@ -805,26 +808,29 @@  fs_dev_infos_get(struct rte_eth_dev *dev,
 	} else {
 		uint64_t rx_offload_capa;
 		uint64_t rxq_offload_capa;
+		uint64_t rss_hf_offload_capa;
 
 		rx_offload_capa = default_infos.rx_offload_capa;
 		rxq_offload_capa = default_infos.rx_queue_offload_capa;
+		rss_hf_offload_capa = default_infos.flow_type_rss_offloads;
 		FOREACH_SUBDEV_STATE(sdev, i, dev, DEV_PROBED) {
 			rte_eth_dev_info_get(PORT_ID(sdev),
 					&PRIV(dev)->infos);
 			rx_offload_capa &= PRIV(dev)->infos.rx_offload_capa;
 			rxq_offload_capa &=
 					PRIV(dev)->infos.rx_queue_offload_capa;
+			rss_hf_offload_capa &=
+					PRIV(dev)->infos.flow_type_rss_offloads;
 		}
 		sdev = TX_SUBDEV(dev);
 		rte_eth_dev_info_get(PORT_ID(sdev), &PRIV(dev)->infos);
 		PRIV(dev)->infos.rx_offload_capa = rx_offload_capa;
 		PRIV(dev)->infos.rx_queue_offload_capa = rxq_offload_capa;
+		PRIV(dev)->infos.flow_type_rss_offloads = rss_hf_offload_capa;
 		PRIV(dev)->infos.tx_offload_capa &=
 					default_infos.tx_offload_capa;
 		PRIV(dev)->infos.tx_queue_offload_capa &=
 					default_infos.tx_queue_offload_capa;
-		PRIV(dev)->infos.flow_type_rss_offloads &=
-					default_infos.flow_type_rss_offloads;
 	}
 	rte_memcpy(infos, &PRIV(dev)->infos, sizeof(*infos));
 }