All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v1] net/mlx4: report on supported RSS hash functions
@ 2018-05-08 15:43 Ophir Munk
  2018-05-09  9:38 ` Shahaf Shuler
  2018-05-09 22:27 ` [PATCH v2 1/2] net/mlx4: advertise " Ophir Munk
  0 siblings, 2 replies; 25+ messages in thread
From: Ophir Munk @ 2018-05-08 15:43 UTC (permalink / raw)
  To: dev, Adrien Mazarguil
  Cc: Thomas Monjalon, Olga Shern, Ophir Munk, Shahaf Shuler

Report on mlx4 supported RSS functions as part of dev_infos_get
callback.
Previous to this commit RSS support was reported as none. Since the
introduction of [1] it is required that all RSS configurations will be
verified.

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

Signed-off-by: Ophir Munk <ophirmu@mellanox.com>
---
 drivers/net/mlx4/mlx4_ethdev.c | 51 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 51 insertions(+)

diff --git a/drivers/net/mlx4/mlx4_ethdev.c b/drivers/net/mlx4/mlx4_ethdev.c
index 9a76670..2a1533c 100644
--- a/drivers/net/mlx4/mlx4_ethdev.c
+++ b/drivers/net/mlx4/mlx4_ethdev.c
@@ -545,6 +545,55 @@ mlx4_mac_addr_set(struct rte_eth_dev *dev, struct ether_addr *mac_addr)
 }
 
 /**
+ * Convert verbs RSS types to their DPDK equivalents.
+ *
+ * This function returns a group of RSS dpdk types given their equivalent group
+ * of verbs types.
+ * For example both source IPv4 and destination IPv4 verbs types are converted
+ * into their equivalent RSS group types. If each of these verbs types existed
+ * exclusively - no conversion would take place.
+ *
+ * @param types
+ *   RSS hash types in verbs format
+ *
+ * @return
+ *   A valid dpdk RSS hash fields supported by mlx4 (may return 0)
+ */
+static uint64_t
+mlx4_ibv_to_dpdk_rss_types(uint64_t types)
+{
+	enum { IPV4, IPV6, TCP, UDP, };
+	const uint64_t in[] = {
+		[IPV4] = IBV_RX_HASH_SRC_IPV4 | IBV_RX_HASH_DST_IPV4,
+		[IPV6] = IBV_RX_HASH_SRC_IPV6 | IBV_RX_HASH_DST_IPV6,
+		[TCP] = IBV_RX_HASH_SRC_PORT_TCP | IBV_RX_HASH_DST_PORT_TCP,
+		[UDP] = IBV_RX_HASH_SRC_PORT_UDP | IBV_RX_HASH_DST_PORT_UDP,
+	};
+	const uint64_t out[RTE_DIM(in)] = {
+		[IPV4] = (ETH_RSS_IPV4 |
+			  ETH_RSS_FRAG_IPV4 |
+			  ETH_RSS_NONFRAG_IPV4_OTHER),
+		[IPV6] = (ETH_RSS_IPV6 |
+			  ETH_RSS_FRAG_IPV6 |
+			  ETH_RSS_NONFRAG_IPV6_OTHER |
+			  ETH_RSS_IPV6_EX),
+		[TCP] = (ETH_RSS_NONFRAG_IPV4_TCP |
+			 ETH_RSS_NONFRAG_IPV6_TCP |
+			 ETH_RSS_IPV6_TCP_EX),
+		[UDP] = (ETH_RSS_NONFRAG_IPV4_UDP |
+			 ETH_RSS_NONFRAG_IPV6_UDP |
+			 ETH_RSS_IPV6_UDP_EX),
+	};
+	uint64_t conv = 0;
+	unsigned int i;
+
+	for (i = 0; i != RTE_DIM(in); ++i)
+		if ((types & in[i]) == in[i])
+			conv |= out[i];
+	return conv;
+}
+
+/**
  * DPDK callback to get information about the device.
  *
  * @param dev
@@ -587,6 +636,8 @@ mlx4_dev_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *info)
 			ETH_LINK_SPEED_20G |
 			ETH_LINK_SPEED_40G |
 			ETH_LINK_SPEED_56G;
+	info->flow_type_rss_offloads = mlx4_ibv_to_dpdk_rss_types(
+			priv->hw_rss_sup);
 }
 
 /**
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 25+ messages in thread

end of thread, other threads:[~2018-05-14 10:14 UTC | newest]

Thread overview: 25+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-05-08 15:43 [PATCH v1] net/mlx4: report on supported RSS hash functions Ophir Munk
2018-05-09  9:38 ` Shahaf Shuler
2018-05-09 11:54   ` Ophir Munk
2018-05-09 14:01     ` Shahaf Shuler
2018-05-09 22:42       ` Ophir Munk
2018-05-09 22:27 ` [PATCH v2 1/2] net/mlx4: advertise " Ophir Munk
2018-05-09 22:27   ` [PATCH v2 2/2] net/mlx4: avoid constant recreations in functions Ophir Munk
2018-05-10  5:20   ` [PATCH v2 1/2] net/mlx4: advertise supported RSS hash functions Shahaf Shuler
2018-05-10 14:25     ` Ophir Munk
2018-05-10 14:21   ` [PATCH v3 " Ophir Munk
2018-05-10 14:21     ` [PATCH v3 2/2] net/mlx4: avoid constant recreations in functions Ophir Munk
2018-05-13  6:05       ` Shahaf Shuler
2018-05-13  6:05     ` [PATCH v3 1/2] net/mlx4: advertise supported RSS hash functions Shahaf Shuler
2018-05-13 15:36     ` [PATCH v4 1/2] net/mlx4: avoid constant recreations in function Ophir Munk
2018-05-13 15:36       ` [PATCH v4 2/2] net/mlx4: advertise supported RSS hash functions Ophir Munk
2018-05-13 15:39     ` [PATCH v4 1/2] net/mlx4: avoid constant recreations in function Ophir Munk
2018-05-13 15:39       ` [PATCH v4 2/2] net/mlx4: advertise supported RSS hash functions Ophir Munk
2018-05-13 16:12         ` Thomas Monjalon
2018-05-13 16:13           ` Ophir Munk
2018-05-13 16:23             ` Ophir Munk
2018-05-13 16:50       ` [PATCH v5 1/2] net/mlx4: avoid constant recreations in function Ophir Munk
2018-05-13 16:50         ` [PATCH v5 2/2] net/mlx4: advertise supported RSS hash functions Ophir Munk
2018-05-14 10:07         ` [PATCH v6 1/2] net/mlx4: avoid constant recreations in function Ophir Munk
2018-05-14 10:07           ` [PATCH v6 2/2] net/mlx4: advertise supported RSS hash functions Ophir Munk
2018-05-14 10:14           ` [PATCH v6 1/2] net/mlx4: avoid constant recreations in function Shahaf Shuler

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.