Hi Simei,


> -----Original Message-----
> From: dev <dev-boun...@dpdk.org> On Behalf Of simei
> Sent: Monday, July 29, 2019 5:44 AM
> To: qi.z.zh...@intel.com; jingjing...@intel.com; ferruh.yi...@intel.com;
> Adrien Mazarguil <adrien.mazarg...@6wind.com>
> Cc: dev@dpdk.org; simei...@intel.com
> Subject: [dpdk-dev] [RFC,v3] ethdev: extend RSS offload types
> 
> From: Simei Su <simei...@intel.com>
> 
> Make it easier to represent to define macro values as (1ULL << ###).
> 
> This RFC reserves several bits as input set selection from bottom
> of the 64 bits. The flow type is combined with input set to
> represent rss types.
> 


Why reserve from the bottom? and not from the first available space?

> for example:
>     ETH_RSS_IPV4 | ETH_RSS_INSET_L3_SRC: hash on src ip address only
>     ETH_RSS_IPV4_UDP | ETH_RSS_INSET_L4_DST: hash on src/dst IP and
>                                           dst UDP port
>     ETH_RSS_L2_PAYLOAD | ETH_RSS_INSET_L2_DST: hash on dst mac address
> 

What happens when the user set ETH_RSS_IPV4? From what I understand from your 
RFC this will do nothing
since no bits where enabled, am I correct? 
If I'm correct this may break applications.

> Signed-off-by: Simei Su <simei...@intel.com>
> ---
>  lib/librte_ethdev/rte_ethdev.h | 13 +++++++++++++
>  1 file changed, 13 insertions(+)
> 
> diff --git a/lib/librte_ethdev/rte_ethdev.h b/lib/librte_ethdev/rte_ethdev.h
> index dc6596b..8af6355 100644
> --- a/lib/librte_ethdev/rte_ethdev.h
> +++ b/lib/librte_ethdev/rte_ethdev.h
> @@ -508,6 +508,19 @@ struct rte_eth_rss_conf {
>  #define ETH_RSS_GENEVE             (1ULL << RTE_ETH_FLOW_GENEVE)
>  #define ETH_RSS_NVGRE              (1ULL << RTE_ETH_FLOW_NVGRE)
> 
> +/*
> + * The following six macros are used combined with ETH_RSS_* to
> + * represent rss types. The structure rte_flow_action_rss.types is
> + * 64-bit wide and we reserve couple bits here for input set selection
> + * from bottom of the 64 bits.
> + */
> +#define      ETH_RSS_INSET_L2_SRC       (1ULL << 63)
> +#define      ETH_RSS_INSET_L2_DST       (1ULL << 62)
> +#define      ETH_RSS_INSET_L3_SRC       (1ULL << 61)
> +#define      ETH_RSS_INSET_L3_DST       (1ULL << 60)
> +#define      ETH_RSS_INSET_L4_SRC       (1ULL << 59)
> +#define      ETH_RSS_INSET_L4_DST       (1ULL << 58)
> +
>  #define ETH_RSS_IP ( \
>       ETH_RSS_IPV4 | \
>       ETH_RSS_FRAG_IPV4 | \
> --
> 1.8.3.1

Thanks,
Ori Kam

Reply via email to