On Thu, Apr 19, 2018 at 12:16:39PM +0200, Adrien Mazarguil wrote:
> Since its inception, the rte_flow RSS action has been relying in part on
> external struct rte_eth_rss_conf for compatibility with the legacy RSS API.
> This structure lacks parameters such as the hash algorithm to use, and more
> recently, a method to tell which layer RSS should be performed on [1].
> 
> Given struct rte_eth_rss_conf will never be flexible enough to represent a
> complete RSS configuration (e.g. RETA table), this patch supersedes it by
> extending the rte_flow RSS action directly.
> 
> A subsequent patch will add a field to use a non-default RSS hash
> algorithm. To that end, a field named "types" replaces the field formerly
> known as "rss_hf" and standing for "RSS hash functions" as it was
> confusing. Actual RSS hash function types are defined by enum
> rte_eth_hash_function.
> 
> This patch updates all PMDs and example applications accordingly.
> 
> It breaks ABI compatibility for the following public functions:
> 
> - rte_flow_copy()
> - rte_flow_create()
> - rte_flow_query()
> - rte_flow_validate()
> 
> [1] commit 676b605182a5 ("doc: announce ethdev API change for RSS
>     configuration")
> 
> Signed-off-by: Adrien Mazarguil <adrien.mazarg...@6wind.com>
> Acked-by: Andrew Rybchenko <arybche...@solarflare.com>
> Cc: Xueming Li <xuemi...@mellanox.com>
> Cc: Ferruh Yigit <ferruh.yi...@intel.com>
> Cc: Thomas Monjalon <tho...@monjalon.net>
> Cc: Wenzhuo Lu <wenzhuo...@intel.com>
> Cc: Jingjing Wu <jingjing...@intel.com>
> Cc: Beilei Xing <beilei.x...@intel.com>
> Cc: Qi Zhang <qi.z.zh...@intel.com>
> Cc: Konstantin Ananyev <konstantin.anan...@intel.com>
> Cc: Nelio Laranjeiro <nelio.laranje...@6wind.com>
> Cc: Yongseok Koh <ys...@mellanox.com>
> Cc: Andrew Rybchenko <arybche...@solarflare.com>
> Cc: Pascal Mazon <pascal.ma...@6wind.com>
> Cc: Radu Nicolau <radu.nico...@intel.com>
> Cc: Akhil Goyal <akhil.go...@nxp.com>
> 
> ---
> 
> v3 changes:
> 
> Documentation update regarding the meaning of a 0 value for RSS types in
> flow rules.
> 
> It used to implicitly mean "no RSS" but is redefined as requesting a kind
> of "best-effort" mode from PMDs, i.e. anything ranging from empty to
> all-inclusive RSS; what matters is it provides safe defaults that will work
> regardless of PMD capabilities.
> ---
>[...]
> diff --git a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c
> @@ -642,17 +599,7 @@ mlx5_flow_convert_actions(struct rte_eth_dev *dev,
>       enum { FATE = 1, MARK = 2, COUNT = 4, };
>       uint32_t overlap = 0;
>       struct priv *priv = dev->data->dev_private;
> -     int ret;
>  
> -     /*
> -      * Add default RSS configuration necessary for Verbs to create QP even
> -      * if no RSS is necessary.
> -      */
> -     ret = mlx5_flow_convert_rss_conf(parser,
> -                                      (const struct rte_eth_rss_conf *)
> -                                      &priv->rss_conf);

This is still needed for QUEUE action, Verbs refuses to create an hash
Rx queue if no RSS key is provided even if the hash field is 0.

This can be fully moved to mlx5_hrxq_new() who can use the default key
when the rss_key is not provided.

Regards,

-- 
Nélio Laranjeiro
6WIND

Reply via email to