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 <[email protected]>
> Acked-by: Andrew Rybchenko <[email protected]>
> Cc: Xueming Li <[email protected]>
> Cc: Ferruh Yigit <[email protected]>
> Cc: Thomas Monjalon <[email protected]>
> Cc: Wenzhuo Lu <[email protected]>
> Cc: Jingjing Wu <[email protected]>
> Cc: Beilei Xing <[email protected]>
> Cc: Qi Zhang <[email protected]>
> Cc: Konstantin Ananyev <[email protected]>
> Cc: Nelio Laranjeiro <[email protected]>
> Cc: Yongseok Koh <[email protected]>
> Cc: Andrew Rybchenko <[email protected]>
> Cc: Pascal Mazon <[email protected]>
> Cc: Radu Nicolau <[email protected]>
> Cc: Akhil Goyal <[email protected]>
> 
> ---
> 
> 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