DPDK patches and discussions
 help / color / mirror / Atom feed
From: Shahaf Shuler <shahafs@mellanox.com>
To: Ophir Munk <ophirmu@mellanox.com>, "dev@dpdk.org" <dev@dpdk.org>,
	"Adrien Mazarguil" <adrien.mazarguil@6wind.com>
Cc: Thomas Monjalon <thomas@monjalon.net>, Olga Shern <olgas@mellanox.com>
Subject: Re: [dpdk-dev] [PATCH v2 1/2] net/mlx4: advertise supported RSS hash functions
Date: Thu, 10 May 2018 05:20:06 +0000	[thread overview]
Message-ID: <DB7PR05MB44266DA6C54BC68C423AD04BC3980@DB7PR05MB4426.eurprd05.prod.outlook.com> (raw)
In-Reply-To: <1525904821-17728-1-git-send-email-ophirmu@mellanox.com>

Hi Ophir, 

Thursday, May 10, 2018 1:27 AM, Ophir Munk:
> Subject: [PATCH v2 1/2] net/mlx4: advertise supported RSS hash functions
> 
> Advertise 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>
> ---
> v1:
> Initial release
> v2:
> Split into 2 commits following reviews
> 
>  drivers/net/mlx4/mlx4_ethdev.c |  3 +++
>  drivers/net/mlx4/mlx4_flow.c   | 49
> ++++++++++++++++++++++++++++++++++++++++++
>  drivers/net/mlx4/mlx4_flow.h   |  1 +
>  3 files changed, 53 insertions(+)
> 
> diff --git a/drivers/net/mlx4/mlx4_ethdev.c
> b/drivers/net/mlx4/mlx4_ethdev.c index 9a76670..8fbb781 100644
> --- a/drivers/net/mlx4/mlx4_ethdev.c
> +++ b/drivers/net/mlx4/mlx4_ethdev.c
> @@ -544,6 +544,7 @@ mlx4_mac_addr_set(struct rte_eth_dev *dev, struct
> ether_addr *mac_addr)
>  	return mlx4_mac_addr_add(dev, mac_addr, 0, 0);  }
> 
> +

Remove this extra line. 

>  /**
>   * DPDK callback to get information about the device.
>   *
> @@ -587,6 +588,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(

I think better to ident mlx4_ibv_to_dpdk_rss_types to the line below along with hw_rss_sup 

> +			priv->hw_rss_sup);


>  }
> 
>  /**
> diff --git a/drivers/net/mlx4/mlx4_flow.c b/drivers/net/mlx4/mlx4_flow.c
> index 397a150..41dac16 100644
> --- a/drivers/net/mlx4/mlx4_flow.c
> +++ b/drivers/net/mlx4/mlx4_flow.c
> @@ -134,6 +134,55 @@ mlx4_conv_rss_types(struct priv *priv, uint64_t
> types)  }
> 
>  /**
> + * 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

Missing period

> + *
> + * @return
> + *   A valid dpdk RSS hash fields supported by mlx4 (may return 0)

DPDK RSS hash fields supported by mlx4.  is enough. 

> + */
> +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])

There is an issue with this logic. Sorry for not noticing in the previous version. 

Let's say the caps report support for only UDP, no IP. On the logic above it will report both 
ETH_RSS_NONFRAG_IPV4_UDP
ETH_RSS_NONFRAG_IPV6_UDP

It looks like for the L4 to be valid RSS hash it needs the l3 to be valid. 

> +			conv |= out[i];
> +	return conv;
> +}
> +
> +/**
>   * Merge Ethernet pattern item into flow rule handle.
>   *
>   * Additional mlx4-specific constraints on supported fields:
> diff --git a/drivers/net/mlx4/mlx4_flow.h b/drivers/net/mlx4/mlx4_flow.h
> index 2c8dff3..ec990df 100644
> --- a/drivers/net/mlx4/mlx4_flow.h
> +++ b/drivers/net/mlx4/mlx4_flow.h
> @@ -49,6 +49,7 @@ struct rte_flow {
>  /* mlx4_flow.c */
> 
>  uint64_t mlx4_conv_rss_types(struct priv *priv, uint64_t rss_hf);
> +uint64_t mlx4_ibv_to_dpdk_rss_types(uint64_t ibv_rss_types);
>  int mlx4_flow_sync(struct priv *priv, struct rte_flow_error *error);  void
> mlx4_flow_clean(struct priv *priv);  int mlx4_filter_ctrl(struct rte_eth_dev
> *dev,
> --
> 2.7.4

  parent reply	other threads:[~2018-05-10  5:20 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-05-08 15:43 [dpdk-dev] [PATCH v1] net/mlx4: report on " 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 ` [dpdk-dev] [PATCH v2 1/2] net/mlx4: advertise " Ophir Munk
2018-05-09 22:27   ` [dpdk-dev] [PATCH v2 2/2] net/mlx4: avoid constant recreations in functions Ophir Munk
2018-05-10  5:20   ` Shahaf Shuler [this message]
2018-05-10 14:25     ` [dpdk-dev] [PATCH v2 1/2] net/mlx4: advertise supported RSS hash functions Ophir Munk
2018-05-10 14:21   ` [dpdk-dev] [PATCH v3 " Ophir Munk
2018-05-10 14:21     ` [dpdk-dev] [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     ` [dpdk-dev] [PATCH v3 1/2] net/mlx4: advertise supported RSS hash functions Shahaf Shuler
2018-05-13 15:36     ` [dpdk-dev] [PATCH v4 1/2] net/mlx4: avoid constant recreations in function Ophir Munk
2018-05-13 15:36       ` [dpdk-dev] [PATCH v4 2/2] net/mlx4: advertise supported RSS hash functions Ophir Munk
2018-05-13 15:39     ` [dpdk-dev] [PATCH v4 1/2] net/mlx4: avoid constant recreations in function Ophir Munk
2018-05-13 15:39       ` [dpdk-dev] [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       ` [dpdk-dev] [PATCH v5 1/2] net/mlx4: avoid constant recreations in function Ophir Munk
2018-05-13 16:50         ` [dpdk-dev] [PATCH v5 2/2] net/mlx4: advertise supported RSS hash functions Ophir Munk
2018-05-14 10:07         ` [dpdk-dev] [PATCH v6 1/2] net/mlx4: avoid constant recreations in function Ophir Munk
2018-05-14 10:07           ` [dpdk-dev] [PATCH v6 2/2] net/mlx4: advertise supported RSS hash functions Ophir Munk
2018-05-14 10:14           ` [dpdk-dev] [PATCH v6 1/2] net/mlx4: avoid constant recreations in function Shahaf Shuler

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=DB7PR05MB44266DA6C54BC68C423AD04BC3980@DB7PR05MB4426.eurprd05.prod.outlook.com \
    --to=shahafs@mellanox.com \
    --cc=adrien.mazarguil@6wind.com \
    --cc=dev@dpdk.org \
    --cc=olgas@mellanox.com \
    --cc=ophirmu@mellanox.com \
    --cc=thomas@monjalon.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).