* [dpdk-dev] [RFC] ethdev: extend RSS offload types @ 2019-07-25 11:37 simei 2019-07-26 0:35 ` [dpdk-dev] [RFC,v2] " simei 0 siblings, 1 reply; 10+ messages in thread From: simei @ 2019-07-25 11:37 UTC (permalink / raw) To: qi.z.zhang, jingjing.wu, adrien.mazarguil; +Cc: dev, simei.su From: Simei Su <simei.su@intel.com> 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. for example: ETH_RSS_IPV4 | ETH_RSS_L3_SRC_ONLY: hash on src ip address only ETH_RSS_IPV4_UDP | ETH_RSS_L4_DST_ONLY: hash on src/dst IP and dst UDP port ETH_RSS_L2_PAYLOAD | ETH_RSS_L2_DST_ONLY: hash on dst mac address Signed-off-by: Simei Su <simei.su@intel.com> --- lib/librte_ethdev/rte_ethdev.h | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/lib/librte_ethdev/rte_ethdev.h b/lib/librte_ethdev/rte_ethdev.h index dc6596b..452d29f 100644 --- a/lib/librte_ethdev/rte_ethdev.h +++ b/lib/librte_ethdev/rte_ethdev.h @@ -508,6 +508,18 @@ 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. + */ +#define ETH_RSS_INSET_L2_SRC 0x0400000000000000 +#define ETH_RSS_INSET_L2_DST 0x0800000000000000 +#define ETH_RSS_INSET_L3_SRC 0x1000000000000000 +#define ETH_RSS_INSET_L3_DST 0x2000000000000000 +#define ETH_RSS_INSET_L4_SRC 0x4000000000000000 +#define ETH_RSS_INSET_L4_DST 0x8000000000000000 + #define ETH_RSS_IP ( \ ETH_RSS_IPV4 | \ ETH_RSS_FRAG_IPV4 | \ -- 1.8.3.1 ^ permalink raw reply [flat|nested] 10+ messages in thread
* [dpdk-dev] [RFC,v2] ethdev: extend RSS offload types 2019-07-25 11:37 [dpdk-dev] [RFC] ethdev: extend RSS offload types simei @ 2019-07-26 0:35 ` simei 2019-07-26 10:21 ` Ferruh Yigit ` (3 more replies) 0 siblings, 4 replies; 10+ messages in thread From: simei @ 2019-07-26 0:35 UTC (permalink / raw) To: qi.z.zhang, jingjing.wu, adrien.mazarguil; +Cc: dev, simei.su From: Simei Su <simei.su@intel.com> 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. Correct the input set mask to align with the definition in rte_ethdev.h. 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 Signed-off-by: Simei Su <simei.su@intel.com> --- lib/librte_ethdev/rte_ethdev.h | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/lib/librte_ethdev/rte_ethdev.h b/lib/librte_ethdev/rte_ethdev.h index dc6596b..452d29f 100644 --- a/lib/librte_ethdev/rte_ethdev.h +++ b/lib/librte_ethdev/rte_ethdev.h @@ -508,6 +508,18 @@ 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. + */ +#define ETH_RSS_INSET_L2_SRC 0x0400000000000000 +#define ETH_RSS_INSET_L2_DST 0x0800000000000000 +#define ETH_RSS_INSET_L3_SRC 0x1000000000000000 +#define ETH_RSS_INSET_L3_DST 0x2000000000000000 +#define ETH_RSS_INSET_L4_SRC 0x4000000000000000 +#define ETH_RSS_INSET_L4_DST 0x8000000000000000 + #define ETH_RSS_IP ( \ ETH_RSS_IPV4 | \ ETH_RSS_FRAG_IPV4 | \ -- 1.8.3.1 ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [dpdk-dev] [RFC,v2] ethdev: extend RSS offload types 2019-07-26 0:35 ` [dpdk-dev] [RFC,v2] " simei @ 2019-07-26 10:21 ` Ferruh Yigit 2019-07-29 2:44 ` [dpdk-dev] [RFC,v3] " simei ` (2 subsequent siblings) 3 siblings, 0 replies; 10+ messages in thread From: Ferruh Yigit @ 2019-07-26 10:21 UTC (permalink / raw) To: simei, qi.z.zhang, jingjing.wu, adrien.mazarguil; +Cc: dev On 7/26/2019 1:35 AM, simei wrote: > From: Simei Su <simei.su@intel.com> > > 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. > > Correct the input set mask to align with the definition in rte_ethdev.h. > 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 > > Signed-off-by: Simei Su <simei.su@intel.com> > --- > lib/librte_ethdev/rte_ethdev.h | 12 ++++++++++++ > 1 file changed, 12 insertions(+) > > diff --git a/lib/librte_ethdev/rte_ethdev.h b/lib/librte_ethdev/rte_ethdev.h > index dc6596b..452d29f 100644 > --- a/lib/librte_ethdev/rte_ethdev.h > +++ b/lib/librte_ethdev/rte_ethdev.h > @@ -508,6 +508,18 @@ 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. > + */ > +#define ETH_RSS_INSET_L2_SRC 0x0400000000000000 > +#define ETH_RSS_INSET_L2_DST 0x0800000000000000 > +#define ETH_RSS_INSET_L3_SRC 0x1000000000000000 > +#define ETH_RSS_INSET_L3_DST 0x2000000000000000 > +#define ETH_RSS_INSET_L4_SRC 0x4000000000000000 > +#define ETH_RSS_INSET_L4_DST 0x8000000000000000 A question, will it easier to represent/comprehend if we replace these as (1ULL << ###) instead of too many zeros ? > + > #define ETH_RSS_IP ( \ > ETH_RSS_IPV4 | \ > ETH_RSS_FRAG_IPV4 | \ > ^ permalink raw reply [flat|nested] 10+ messages in thread
* [dpdk-dev] [RFC,v3] ethdev: extend RSS offload types 2019-07-26 0:35 ` [dpdk-dev] [RFC,v2] " simei 2019-07-26 10:21 ` Ferruh Yigit @ 2019-07-29 2:44 ` simei 2019-07-30 6:06 ` Ori Kam 2019-08-01 4:54 ` [dpdk-dev] [RFC,v4] " simei 2019-07-29 15:30 ` [dpdk-dev] [RFC,v2] " Stephen Hemminger 2019-07-30 15:50 ` Stephen Hemminger 3 siblings, 2 replies; 10+ messages in thread From: simei @ 2019-07-29 2:44 UTC (permalink / raw) To: qi.z.zhang, jingjing.wu, ferruh.yigit, adrien.mazarguil; +Cc: dev, simei.su From: Simei Su <simei.su@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. 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 Signed-off-by: Simei Su <simei.su@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 ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [dpdk-dev] [RFC,v3] ethdev: extend RSS offload types 2019-07-29 2:44 ` [dpdk-dev] [RFC,v3] " simei @ 2019-07-30 6:06 ` Ori Kam 2019-07-30 7:42 ` Adrien Mazarguil 2019-08-01 4:54 ` [dpdk-dev] [RFC,v4] " simei 1 sibling, 1 reply; 10+ messages in thread From: Ori Kam @ 2019-07-30 6:06 UTC (permalink / raw) To: simei, qi.z.zhang, jingjing.wu, ferruh.yigit, Adrien Mazarguil; +Cc: dev Hi Simei, > -----Original Message----- > From: dev <dev-bounces@dpdk.org> On Behalf Of simei > Sent: Monday, July 29, 2019 5:44 AM > To: qi.z.zhang@intel.com; jingjing.wu@intel.com; ferruh.yigit@intel.com; > Adrien Mazarguil <adrien.mazarguil@6wind.com> > Cc: dev@dpdk.org; simei.su@intel.com > Subject: [dpdk-dev] [RFC,v3] ethdev: extend RSS offload types > > From: Simei Su <simei.su@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.su@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 ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [dpdk-dev] [RFC,v3] ethdev: extend RSS offload types 2019-07-30 6:06 ` Ori Kam @ 2019-07-30 7:42 ` Adrien Mazarguil 0 siblings, 0 replies; 10+ messages in thread From: Adrien Mazarguil @ 2019-07-30 7:42 UTC (permalink / raw) To: Ori Kam; +Cc: simei, qi.z.zhang, jingjing.wu, ferruh.yigit, dev On Tue, Jul 30, 2019 at 06:06:56AM +0000, Ori Kam wrote: > Hi Simei, > > > > > -----Original Message----- > > From: dev <dev-bounces@dpdk.org> On Behalf Of simei > > Sent: Monday, July 29, 2019 5:44 AM > > To: qi.z.zhang@intel.com; jingjing.wu@intel.com; ferruh.yigit@intel.com; > > Adrien Mazarguil <adrien.mazarguil@6wind.com> > > Cc: dev@dpdk.org; simei.su@intel.com > > Subject: [dpdk-dev] [RFC,v3] ethdev: extend RSS offload types > > > > From: Simei Su <simei.su@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? I assume the reason is that maintaining the existing model with RTE_ETH_FLOW_* sibling macros doesn't make sense for these, so this approach doesn't impact future ETH_RSS_* definitions... > > 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. Also my thought, again I assume that ETH_RSS_INSET_* flags only act as modifiers to ETH_RSS_IPV4 and friends, if none are provided, then both source and destination are taken into account. If that's the design, it must be properly documented still. Looks like it's time to end the relationship between RTE_ETH_FLOW_* and ETH_RSS_* seeing both serve different purposes, and these new macros only make sense for RSS. I suggest a prior patch that converts all those definitions: #define ETH_RSS_IPV4 (1ULL << RTE_ETH_FLOW_IPV4) [...] To their numerical counterparts directly, in which case we have two options: Without breaking ABI, e.g.: #define ETH_RSS_IPV4 (1ULL << 2) [...] Or going further if we're ready to break ABI a tiny little bit, starting over from zero and use unique flags for IPv4, IPv6, TCP and UDP without distinguishing between NONFRAG, FRAG and IPV6_EX, which never made sense for RSS, and separating L4 from L3 to save even more, that is: #define ETH_RSS_ETH (1ULL << 0) #define ETH_RSS_IPV4 (1ULL << 1) #define ETH_RSS_IPV6 (1ULL << 2) #define ETH_RSS_UDP (1ULL << 3) #define ETH_RSS_TCP (1ULL << 4) #define ETH_RSS_SCTP (1ULL << 5) [...] Then the flags you would like to add would have to be more explicit. I think Qi's original suggestion with "ONLY" was better in this regard than "INSET": #define ETH_RSS_L2_SRC_ONLY (1ULL << 6) #define ETH_RSS_L2_DST_ONLY (1ULL << 7) [...] Otherwise there's still the negative approach: #define ETH_RSS_L2_NO_SRC (1ULL << 6) #define ETH_RSS_L2_NO_DST (1ULL << 7) [...] Not sure which is better. Thoughts? -- Adrien Mazarguil 6WIND ^ permalink raw reply [flat|nested] 10+ messages in thread
* [dpdk-dev] [RFC,v4] ethdev: extend RSS offload types 2019-07-29 2:44 ` [dpdk-dev] [RFC,v3] " simei 2019-07-30 6:06 ` Ori Kam @ 2019-08-01 4:54 ` simei 1 sibling, 0 replies; 10+ messages in thread From: simei @ 2019-08-01 4:54 UTC (permalink / raw) To: qi.z.zhang, jingjing.wu, adrien.mazarguil, ferruh.yigit; +Cc: dev, simei.su From: Simei Su <simei.su@intel.com> This RFC cover two aspects: (1)decouple RTE_ETH_FLOW_* and ETH_RSS_*. Because both serve different purposes. (2)reserve several bits as input set selection from bottom of the 64 bits.It is combined with exisiting ETH_RSS_* to represent rss types. for example: ETH_RSS_IPV4 | ETH_RSS_L3_SRC_ONLY: hash on src ip address only ETH_RSS_IPV4_UDP | ETH_RSS_L4_DST_ONLY: hash on src/dst IP and dst UDP port ETH_RSS_L2_PAYLOAD | ETH_RSS_L2_DST_ONLY: hash on dst mac address Testpmd modification part will be send out in later formal patch. Signed-off-by: Simei Su <simei.su@intel.com> --- lib/librte_ethdev/rte_ethdev.h | 61 +++++++++++++++++++++++++----------------- 1 file changed, 36 insertions(+), 25 deletions(-) diff --git a/lib/librte_ethdev/rte_ethdev.h b/lib/librte_ethdev/rte_ethdev.h index dc6596b..9caf2bb 100644 --- a/lib/librte_ethdev/rte_ethdev.h +++ b/lib/librte_ethdev/rte_ethdev.h @@ -482,31 +482,42 @@ struct rte_eth_rss_conf { #define RTE_ETH_FLOW_MAX 23 /* - * The RSS offload types are defined based on flow types. - * Different NIC hardware may support different RSS offload - * types. The supported flow types or RSS offload types can be queried by - * rte_eth_dev_info_get(). - */ -#define ETH_RSS_IPV4 (1ULL << RTE_ETH_FLOW_IPV4) -#define ETH_RSS_FRAG_IPV4 (1ULL << RTE_ETH_FLOW_FRAG_IPV4) -#define ETH_RSS_NONFRAG_IPV4_TCP (1ULL << RTE_ETH_FLOW_NONFRAG_IPV4_TCP) -#define ETH_RSS_NONFRAG_IPV4_UDP (1ULL << RTE_ETH_FLOW_NONFRAG_IPV4_UDP) -#define ETH_RSS_NONFRAG_IPV4_SCTP (1ULL << RTE_ETH_FLOW_NONFRAG_IPV4_SCTP) -#define ETH_RSS_NONFRAG_IPV4_OTHER (1ULL << RTE_ETH_FLOW_NONFRAG_IPV4_OTHER) -#define ETH_RSS_IPV6 (1ULL << RTE_ETH_FLOW_IPV6) -#define ETH_RSS_FRAG_IPV6 (1ULL << RTE_ETH_FLOW_FRAG_IPV6) -#define ETH_RSS_NONFRAG_IPV6_TCP (1ULL << RTE_ETH_FLOW_NONFRAG_IPV6_TCP) -#define ETH_RSS_NONFRAG_IPV6_UDP (1ULL << RTE_ETH_FLOW_NONFRAG_IPV6_UDP) -#define ETH_RSS_NONFRAG_IPV6_SCTP (1ULL << RTE_ETH_FLOW_NONFRAG_IPV6_SCTP) -#define ETH_RSS_NONFRAG_IPV6_OTHER (1ULL << RTE_ETH_FLOW_NONFRAG_IPV6_OTHER) -#define ETH_RSS_L2_PAYLOAD (1ULL << RTE_ETH_FLOW_L2_PAYLOAD) -#define ETH_RSS_IPV6_EX (1ULL << RTE_ETH_FLOW_IPV6_EX) -#define ETH_RSS_IPV6_TCP_EX (1ULL << RTE_ETH_FLOW_IPV6_TCP_EX) -#define ETH_RSS_IPV6_UDP_EX (1ULL << RTE_ETH_FLOW_IPV6_UDP_EX) -#define ETH_RSS_PORT (1ULL << RTE_ETH_FLOW_PORT) -#define ETH_RSS_VXLAN (1ULL << RTE_ETH_FLOW_VXLAN) -#define ETH_RSS_GENEVE (1ULL << RTE_ETH_FLOW_GENEVE) -#define ETH_RSS_NVGRE (1ULL << RTE_ETH_FLOW_NVGRE) + * Here, we decouple RTE_ETH_FLOW_* and ETH_RSS_*. The following macros only + * make sense for RSS. + */ +#define ETH_RSS_IPV4 (1ULL << 2) +#define ETH_RSS_FRAG_IPV4 (1ULL << 3) +#define ETH_RSS_NONFRAG_IPV4_TCP (1ULL << 4) +#define ETH_RSS_NONFRAG_IPV4_UDP (1ULL << 5) +#define ETH_RSS_NONFRAG_IPV4_SCTP (1ULL << 6) +#define ETH_RSS_NONFRAG_IPV4_OTHER (1ULL << 7) +#define ETH_RSS_IPV6 (1ULL << 8) +#define ETH_RSS_FRAG_IPV6 (1ULL << 9) +#define ETH_RSS_NONFRAG_IPV6_TCP (1ULL << 10) +#define ETH_RSS_NONFRAG_IPV6_UDP (1ULL << 11) +#define ETH_RSS_NONFRAG_IPV6_SCTP (1ULL << 12) +#define ETH_RSS_NONFRAG_IPV6_OTHER (1ULL << 13) +#define ETH_RSS_L2_PAYLOAD (1ULL << 14) +#define ETH_RSS_IPV6_EX (1ULL << 15) +#define ETH_RSS_IPV6_TCP_EX (1ULL << 16) +#define ETH_RSS_IPV6_UDP_EX (1ULL << 17) +#define ETH_RSS_PORT (1ULL << 18) +#define ETH_RSS_VXLAN (1ULL << 19) +#define ETH_RSS_GENEVE (1ULL << 20) +#define ETH_RSS_NVGRE (1ULL << 21) + +/* 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 so that it doesn't impact future + * ETH_RSS_* definitions. + */ +#define ETH_RSS_L2_SRC_ONLY (1ULL << 63) +#define ETH_RSS_L2_DST_ONLY (1ULL << 62) +#define ETH_RSS_L3_SRC_ONLY (1ULL << 61) +#define ETH_RSS_L3_DST_ONLY (1ULL << 60) +#define ETH_RSS_L4_SRC_ONLY (1ULL << 59) +#define ETH_RSS_L4_DST_ONLY (1ULL << 58) #define ETH_RSS_IP ( \ ETH_RSS_IPV4 | \ -- 1.8.3.1 ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [dpdk-dev] [RFC,v2] ethdev: extend RSS offload types 2019-07-26 0:35 ` [dpdk-dev] [RFC,v2] " simei 2019-07-26 10:21 ` Ferruh Yigit 2019-07-29 2:44 ` [dpdk-dev] [RFC,v3] " simei @ 2019-07-29 15:30 ` Stephen Hemminger 2019-07-30 15:50 ` Stephen Hemminger 3 siblings, 0 replies; 10+ messages in thread From: Stephen Hemminger @ 2019-07-29 15:30 UTC (permalink / raw) To: simei; +Cc: qi.z.zhang, jingjing.wu, adrien.mazarguil, dev On Fri, 26 Jul 2019 08:35:50 +0800 simei <simei.su@intel.com> wrote: > +#define ETH_RSS_INSET_L2_SRC 0x0400000000000000 This won't work on 32 bit systems you need to cast it or add a unsigned long long modifier (ull or ULL) ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [dpdk-dev] [RFC,v2] ethdev: extend RSS offload types 2019-07-26 0:35 ` [dpdk-dev] [RFC,v2] " simei ` (2 preceding siblings ...) 2019-07-29 15:30 ` [dpdk-dev] [RFC,v2] " Stephen Hemminger @ 2019-07-30 15:50 ` Stephen Hemminger 2019-07-31 2:57 ` Su, Simei 3 siblings, 1 reply; 10+ messages in thread From: Stephen Hemminger @ 2019-07-30 15:50 UTC (permalink / raw) To: simei; +Cc: qi.z.zhang, jingjing.wu, adrien.mazarguil, dev On Fri, 26 Jul 2019 08:35:50 +0800 simei <simei.su@intel.com> wrote: > From: Simei Su <simei.su@intel.com> > > 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. > > Correct the input set mask to align with the definition in rte_ethdev.h. > 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 > > Signed-off-by: Simei Su <simei.su@intel.com> NAK to any patch that "reserves" bits for future use. Please include the patch as part of a set of patches that actually implements the functionality on a device. ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [dpdk-dev] [RFC,v2] ethdev: extend RSS offload types 2019-07-30 15:50 ` Stephen Hemminger @ 2019-07-31 2:57 ` Su, Simei 0 siblings, 0 replies; 10+ messages in thread From: Su, Simei @ 2019-07-31 2:57 UTC (permalink / raw) To: Stephen Hemminger; +Cc: Zhang, Qi Z, Wu, Jingjing, adrien.mazarguil, dev > -----Original Message----- > From: Stephen Hemminger [mailto:stephen@networkplumber.org] > Sent: Tuesday, July 30, 2019 11:50 PM > To: Su, Simei <simei.su@intel.com> > Cc: Zhang, Qi Z <qi.z.zhang@intel.com>; Wu, Jingjing <jingjing.wu@intel.com>; > adrien.mazarguil@6wind.com; dev@dpdk.org > Subject: Re: [dpdk-dev] [RFC,v2] ethdev: extend RSS offload types > > On Fri, 26 Jul 2019 08:35:50 +0800 > simei <simei.su@intel.com> wrote: > > > From: Simei Su <simei.su@intel.com> > > > > 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. > > > > Correct the input set mask to align with the definition in rte_ethdev.h. > > 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 > > > > Signed-off-by: Simei Su <simei.su@intel.com> > > NAK to any patch that "reserves" bits for future use. > > Please include the patch as part of a set of patches that actually implements the > functionality on a device. Ok. Later, I will add the implementation functionality as a set of patches. ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2019-08-01 5:37 UTC | newest] Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2019-07-25 11:37 [dpdk-dev] [RFC] ethdev: extend RSS offload types simei 2019-07-26 0:35 ` [dpdk-dev] [RFC,v2] " simei 2019-07-26 10:21 ` Ferruh Yigit 2019-07-29 2:44 ` [dpdk-dev] [RFC,v3] " simei 2019-07-30 6:06 ` Ori Kam 2019-07-30 7:42 ` Adrien Mazarguil 2019-08-01 4:54 ` [dpdk-dev] [RFC,v4] " simei 2019-07-29 15:30 ` [dpdk-dev] [RFC,v2] " Stephen Hemminger 2019-07-30 15:50 ` Stephen Hemminger 2019-07-31 2:57 ` Su, Simei
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).