patches for DPDK stable branches
 help / color / Atom feed
* [dpdk-stable] [PATCH] ethdev: fix RSS flow expansion in case of mismatch
@ 2020-07-27 12:57 Dekel Peled
  2020-07-27 13:25 ` Dekel Peled
  0 siblings, 1 reply; 4+ messages in thread
From: Dekel Peled @ 2020-07-27 12:57 UTC (permalink / raw)
  To: matan, viacheslavo, rasland; +Cc: dev, stable

Function rte_flow_expand_rss() is used to expand a flow rule with
partial pattern into several rules, to ensure all relevant packets
are matched.
It uses utility function rte_flow_expand_rss_item_complete(), to check
if the last valid item in the flow rule pattern needs to be completed.
For example the pattern "eth / ipv4 proto is 17 / end" will be completed
with a "udp" item.
This function returns "void" item in two cases:
1) The last item has empty spec, for example "eth / ipv4 / end".
2) The last itme has spec that can't be expanded for RSS.
   For example the pattern "eth / ipv4 proto is 47 / end" ends with IPv4
   item that has next protocol GRE.

In both cases the flow rule may be expanded, but in the second case such
expansion may create rules with invalid pattern.
For example "eth / ipv4 proto is 47 / udp / end".
In such a case the flow rule should not be expanded.

This patch updates function rte_flow_expand_rss_item_complete().
Return value RTE_FLOW_ITEM_TYPE_END is used to indicate the flow rule
should not be expanded.
In such a case, rte_flow_expand_rss() will return with the original flow
rule only, without any expansion.

Fixes: fc2dd8dd492f ("ethdev: fix expand RSS flows")
Cc: stable@dpdk.org

Signed-off-by: Dekel Peled <dekelp@mellanox.com>
Acked-by: Xiaoyu Min <jackmin@mellanox.com>
Acked-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
---
 lib/librte_ethdev/rte_flow.c | 16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)

diff --git a/lib/librte_ethdev/rte_flow.c b/lib/librte_ethdev/rte_flow.c
index f8fdd68..59a386d 100644
--- a/lib/librte_ethdev/rte_flow.c
+++ b/lib/librte_ethdev/rte_flow.c
@@ -247,6 +247,8 @@ struct rte_flow_desc_data {
 			ret = RTE_FLOW_ITEM_TYPE_IPV6;
 		else if (rte_be_to_cpu_16(ether_type) == RTE_ETHER_TYPE_VLAN)
 			ret = RTE_FLOW_ITEM_TYPE_VLAN;
+		else
+			ret = RTE_FLOW_ITEM_TYPE_END;
 		break;
 	case RTE_FLOW_ITEM_TYPE_VLAN:
 		if (item->mask)
@@ -264,6 +266,8 @@ struct rte_flow_desc_data {
 			ret = RTE_FLOW_ITEM_TYPE_IPV6;
 		else if (rte_be_to_cpu_16(ether_type) == RTE_ETHER_TYPE_VLAN)
 			ret = RTE_FLOW_ITEM_TYPE_VLAN;
+		else
+			ret = RTE_FLOW_ITEM_TYPE_END;
 		break;
 	case RTE_FLOW_ITEM_TYPE_IPV4:
 		if (item->mask)
@@ -284,6 +288,8 @@ struct rte_flow_desc_data {
 			ret = RTE_FLOW_ITEM_TYPE_IPV4;
 		else if (ip_next_proto == IPPROTO_IPV6)
 			ret = RTE_FLOW_ITEM_TYPE_IPV6;
+		else
+			ret = RTE_FLOW_ITEM_TYPE_END;
 		break;
 	case RTE_FLOW_ITEM_TYPE_IPV6:
 		if (item->mask)
@@ -304,6 +310,8 @@ struct rte_flow_desc_data {
 			ret = RTE_FLOW_ITEM_TYPE_IPV4;
 		else if (ip_next_proto == IPPROTO_IPV6)
 			ret = RTE_FLOW_ITEM_TYPE_IPV6;
+		else
+			ret = RTE_FLOW_ITEM_TYPE_END;
 		break;
 	default:
 		ret = RTE_FLOW_ITEM_TYPE_VOID;
@@ -1110,10 +1118,14 @@ enum rte_flow_conv_item_spec_type {
 	memset(flow_items, 0, sizeof(flow_items));
 	user_pattern_size -= sizeof(*item);
 	/*
-	 * Check if the last valid item has spec set
-	 * and need complete pattern.
+	 * Check if the last valid item has spec set, need complete pattern,
+	 * and the pattern can be used for expansion.
 	 */
 	missed_item.type = rte_flow_expand_rss_item_complete(last_item);
+	if (missed_item.type == RTE_FLOW_ITEM_TYPE_END) {
+		/* Item type END indicates expansion is not required. */
+		return lsize;
+	}
 	if (missed_item.type != RTE_FLOW_ITEM_TYPE_VOID) {
 		next = NULL;
 		missed = 1;
-- 
1.8.3.1


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [dpdk-stable] [PATCH] ethdev: fix RSS flow expansion in case of mismatch
  2020-07-27 12:57 [dpdk-stable] [PATCH] ethdev: fix RSS flow expansion in case of mismatch Dekel Peled
@ 2020-07-27 13:25 ` Dekel Peled
  2020-07-27 16:21   ` Ori Kam
  0 siblings, 1 reply; 4+ messages in thread
From: Dekel Peled @ 2020-07-27 13:25 UTC (permalink / raw)
  To: Raslan Darawsheh, Ori Kam, Thomas Monjalon, ferruh.yigit,
	Andrew Rybchenko
  Cc: dev, stable, Matan Azrad, Slava Ovsiienko

Resending To: maintaners.

> -----Original Message-----
> From: Dekel Peled <dekelp@mellanox.com>
> Sent: Monday, July 27, 2020 3:58 PM
> To: Matan Azrad <matan@mellanox.com>; Slava Ovsiienko
> <viacheslavo@mellanox.com>; Raslan Darawsheh <rasland@mellanox.com>
> Cc: dev@dpdk.org; stable@dpdk.org
> Subject: [PATCH] ethdev: fix RSS flow expansion in case of mismatch
> 
> Function rte_flow_expand_rss() is used to expand a flow rule with partial
> pattern into several rules, to ensure all relevant packets are matched.
> It uses utility function rte_flow_expand_rss_item_complete(), to check if
> the last valid item in the flow rule pattern needs to be completed.
> For example the pattern "eth / ipv4 proto is 17 / end" will be completed with
> a "udp" item.
> This function returns "void" item in two cases:
> 1) The last item has empty spec, for example "eth / ipv4 / end".
> 2) The last itme has spec that can't be expanded for RSS.
>    For example the pattern "eth / ipv4 proto is 47 / end" ends with IPv4
>    item that has next protocol GRE.
> 
> In both cases the flow rule may be expanded, but in the second case such
> expansion may create rules with invalid pattern.
> For example "eth / ipv4 proto is 47 / udp / end".
> In such a case the flow rule should not be expanded.
> 
> This patch updates function rte_flow_expand_rss_item_complete().
> Return value RTE_FLOW_ITEM_TYPE_END is used to indicate the flow rule
> should not be expanded.
> In such a case, rte_flow_expand_rss() will return with the original flow rule
> only, without any expansion.
> 
> Fixes: fc2dd8dd492f ("ethdev: fix expand RSS flows")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Dekel Peled <dekelp@mellanox.com>
> Acked-by: Xiaoyu Min <jackmin@mellanox.com>
> Acked-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
> ---
>  lib/librte_ethdev/rte_flow.c | 16 ++++++++++++++--
>  1 file changed, 14 insertions(+), 2 deletions(-)
> 
> diff --git a/lib/librte_ethdev/rte_flow.c b/lib/librte_ethdev/rte_flow.c index
> f8fdd68..59a386d 100644
> --- a/lib/librte_ethdev/rte_flow.c
> +++ b/lib/librte_ethdev/rte_flow.c
> @@ -247,6 +247,8 @@ struct rte_flow_desc_data {
>  			ret = RTE_FLOW_ITEM_TYPE_IPV6;
>  		else if (rte_be_to_cpu_16(ether_type) ==
> RTE_ETHER_TYPE_VLAN)
>  			ret = RTE_FLOW_ITEM_TYPE_VLAN;
> +		else
> +			ret = RTE_FLOW_ITEM_TYPE_END;
>  		break;
>  	case RTE_FLOW_ITEM_TYPE_VLAN:
>  		if (item->mask)
> @@ -264,6 +266,8 @@ struct rte_flow_desc_data {
>  			ret = RTE_FLOW_ITEM_TYPE_IPV6;
>  		else if (rte_be_to_cpu_16(ether_type) ==
> RTE_ETHER_TYPE_VLAN)
>  			ret = RTE_FLOW_ITEM_TYPE_VLAN;
> +		else
> +			ret = RTE_FLOW_ITEM_TYPE_END;
>  		break;
>  	case RTE_FLOW_ITEM_TYPE_IPV4:
>  		if (item->mask)
> @@ -284,6 +288,8 @@ struct rte_flow_desc_data {
>  			ret = RTE_FLOW_ITEM_TYPE_IPV4;
>  		else if (ip_next_proto == IPPROTO_IPV6)
>  			ret = RTE_FLOW_ITEM_TYPE_IPV6;
> +		else
> +			ret = RTE_FLOW_ITEM_TYPE_END;
>  		break;
>  	case RTE_FLOW_ITEM_TYPE_IPV6:
>  		if (item->mask)
> @@ -304,6 +310,8 @@ struct rte_flow_desc_data {
>  			ret = RTE_FLOW_ITEM_TYPE_IPV4;
>  		else if (ip_next_proto == IPPROTO_IPV6)
>  			ret = RTE_FLOW_ITEM_TYPE_IPV6;
> +		else
> +			ret = RTE_FLOW_ITEM_TYPE_END;
>  		break;
>  	default:
>  		ret = RTE_FLOW_ITEM_TYPE_VOID;
> @@ -1110,10 +1118,14 @@ enum rte_flow_conv_item_spec_type {
>  	memset(flow_items, 0, sizeof(flow_items));
>  	user_pattern_size -= sizeof(*item);
>  	/*
> -	 * Check if the last valid item has spec set
> -	 * and need complete pattern.
> +	 * Check if the last valid item has spec set, need complete pattern,
> +	 * and the pattern can be used for expansion.
>  	 */
>  	missed_item.type =
> rte_flow_expand_rss_item_complete(last_item);
> +	if (missed_item.type == RTE_FLOW_ITEM_TYPE_END) {
> +		/* Item type END indicates expansion is not required. */
> +		return lsize;
> +	}
>  	if (missed_item.type != RTE_FLOW_ITEM_TYPE_VOID) {
>  		next = NULL;
>  		missed = 1;
> --
> 1.8.3.1


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [dpdk-stable] [PATCH] ethdev: fix RSS flow expansion in case of mismatch
  2020-07-27 13:25 ` Dekel Peled
@ 2020-07-27 16:21   ` Ori Kam
  2020-07-28  9:14     ` Dekel Peled
  0 siblings, 1 reply; 4+ messages in thread
From: Ori Kam @ 2020-07-27 16:21 UTC (permalink / raw)
  To: Dekel Peled, Raslan Darawsheh, Thomas Monjalon, ferruh.yigit,
	Andrew Rybchenko
  Cc: dev, stable, Matan Azrad, Slava Ovsiienko

Hi Dekel,

> -----Original Message-----
> From: Dekel Peled <dekelp@mellanox.com>
> 
> Resending To: maintaners.
> 
> > -----Original Message-----
> > From: Dekel Peled <dekelp@mellanox.com>
> >
> > Function rte_flow_expand_rss() is used to expand a flow rule with partial
> > pattern into several rules, to ensure all relevant packets are matched.
> > It uses utility function rte_flow_expand_rss_item_complete(), to check if
> > the last valid item in the flow rule pattern needs to be completed.

Which is also based on the requested RSS type. Right? If no RSS type is set then
the issue will not appear.

> > For example the pattern "eth / ipv4 proto is 17 / end" will be completed with
> > a "udp" item.

Only if UDP rss type is selected, if TCP is selected then it will be TCP right?

> > This function returns "void" item in two cases:
> > 1) The last item has empty spec, for example "eth / ipv4 / end".
> > 2) The last itme has spec that can't be expanded for RSS.
> >    For example the pattern "eth / ipv4 proto is 47 / end" ends with IPv4
> >    item that has next protocol GRE.
> >
Typo in itme -> item?

> > In both cases the flow rule may be expanded, but in the second case such
> > expansion may create rules with invalid pattern.

You mean that in both cases the flow will be expanded, that is the issue.
That in the second case the flow shouldn't be expended.

> > For example "eth / ipv4 proto is 47 / udp / end".
> > In such a case the flow rule should not be expanded.
> >
> > This patch updates function rte_flow_expand_rss_item_complete().
> > Return value RTE_FLOW_ITEM_TYPE_END is used to indicate the flow rule
> > should not be expanded.
> > In such a case, rte_flow_expand_rss() will return with the original flow rule
> > only, without any expansion.
> >


> > Fixes: fc2dd8dd492f ("ethdev: fix expand RSS flows")
> > Cc: stable@dpdk.org
> >
> > Signed-off-by: Dekel Peled <dekelp@mellanox.com>
> > Acked-by: Xiaoyu Min <jackmin@mellanox.com>
> > Acked-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
> > ---
> >  lib/librte_ethdev/rte_flow.c | 16 ++++++++++++++--
> >  1 file changed, 14 insertions(+), 2 deletions(-)
> >
> > diff --git a/lib/librte_ethdev/rte_flow.c b/lib/librte_ethdev/rte_flow.c index
> > f8fdd68..59a386d 100644
> > --- a/lib/librte_ethdev/rte_flow.c
> > +++ b/lib/librte_ethdev/rte_flow.c
> > @@ -247,6 +247,8 @@ struct rte_flow_desc_data {
> >  			ret = RTE_FLOW_ITEM_TYPE_IPV6;
> >  		else if (rte_be_to_cpu_16(ether_type) ==
> > RTE_ETHER_TYPE_VLAN)
> >  			ret = RTE_FLOW_ITEM_TYPE_VLAN;
> > +		else
> > +			ret = RTE_FLOW_ITEM_TYPE_END;
> >  		break;
> >  	case RTE_FLOW_ITEM_TYPE_VLAN:
> >  		if (item->mask)
> > @@ -264,6 +266,8 @@ struct rte_flow_desc_data {
> >  			ret = RTE_FLOW_ITEM_TYPE_IPV6;
> >  		else if (rte_be_to_cpu_16(ether_type) ==
> > RTE_ETHER_TYPE_VLAN)
> >  			ret = RTE_FLOW_ITEM_TYPE_VLAN;
> > +		else
> > +			ret = RTE_FLOW_ITEM_TYPE_END;
> >  		break;
> >  	case RTE_FLOW_ITEM_TYPE_IPV4:
> >  		if (item->mask)
> > @@ -284,6 +288,8 @@ struct rte_flow_desc_data {
> >  			ret = RTE_FLOW_ITEM_TYPE_IPV4;
> >  		else if (ip_next_proto == IPPROTO_IPV6)
> >  			ret = RTE_FLOW_ITEM_TYPE_IPV6;
> > +		else
> > +			ret = RTE_FLOW_ITEM_TYPE_END;
> >  		break;
> >  	case RTE_FLOW_ITEM_TYPE_IPV6:
> >  		if (item->mask)
> > @@ -304,6 +310,8 @@ struct rte_flow_desc_data {
> >  			ret = RTE_FLOW_ITEM_TYPE_IPV4;
> >  		else if (ip_next_proto == IPPROTO_IPV6)
> >  			ret = RTE_FLOW_ITEM_TYPE_IPV6;
> > +		else
> > +			ret = RTE_FLOW_ITEM_TYPE_END;
> >  		break;
> >  	default:
> >  		ret = RTE_FLOW_ITEM_TYPE_VOID;
> > @@ -1110,10 +1118,14 @@ enum rte_flow_conv_item_spec_type {
> >  	memset(flow_items, 0, sizeof(flow_items));
> >  	user_pattern_size -= sizeof(*item);
> >  	/*
> > -	 * Check if the last valid item has spec set
> > -	 * and need complete pattern.
> > +	 * Check if the last valid item has spec set, need complete pattern,
> > +	 * and the pattern can be used for expansion.
> >  	 */
> >  	missed_item.type =
> > rte_flow_expand_rss_item_complete(last_item);
> > +	if (missed_item.type == RTE_FLOW_ITEM_TYPE_END) {
> > +		/* Item type END indicates expansion is not required. */
> > +		return lsize;
> > +	}
> >  	if (missed_item.type != RTE_FLOW_ITEM_TYPE_VOID) {
> >  		next = NULL;
> >  		missed = 1;
> > --
> > 1.8.3.1

I don't think this is the correct solution.
The idea of the rte_flow_expand_rss_item_complete function is to add
the last item so later the parsing will be based on items regardless of spec.
This mean the function already support pattern with the following format:
Eth / ipv4 / gre. What the result will be? Will it be expended? 

I think the solution should be that the function will return the correct item. Assuming there
is such an item.

Best,
Ori


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [dpdk-stable] [PATCH] ethdev: fix RSS flow expansion in case of mismatch
  2020-07-27 16:21   ` Ori Kam
@ 2020-07-28  9:14     ` Dekel Peled
  0 siblings, 0 replies; 4+ messages in thread
From: Dekel Peled @ 2020-07-28  9:14 UTC (permalink / raw)
  To: Ori Kam, Raslan Darawsheh, Thomas Monjalon, ferruh.yigit,
	Andrew Rybchenko
  Cc: dev, stable, Matan Azrad, Slava Ovsiienko

Hi, PSB.

> -----Original Message-----
> From: Ori Kam <orika@mellanox.com>
> Sent: Monday, July 27, 2020 7:21 PM
> To: Dekel Peled <dekelp@mellanox.com>; Raslan Darawsheh
> <rasland@mellanox.com>; Thomas Monjalon <thomasm@mellanox.com>;
> ferruh.yigit@intel.com; Andrew Rybchenko <arybchenko@solarflare.com>
> Cc: dev@dpdk.org; stable@dpdk.org; Matan Azrad <matan@mellanox.com>;
> Slava Ovsiienko <viacheslavo@mellanox.com>
> Subject: RE: [PATCH] ethdev: fix RSS flow expansion in case of mismatch
> 
> Hi Dekel,
> 
> > -----Original Message-----
> > From: Dekel Peled <dekelp@mellanox.com>
> >
> > Resending To: maintaners.
> >
> > > -----Original Message-----
> > > From: Dekel Peled <dekelp@mellanox.com>
> > >
> > > Function rte_flow_expand_rss() is used to expand a flow rule with
> > > partial pattern into several rules, to ensure all relevant packets are
> matched.
> > > It uses utility function rte_flow_expand_rss_item_complete(), to
> > > check if the last valid item in the flow rule pattern needs to be
> completed.
> 
> Which is also based on the requested RSS type. Right? If no RSS type is set
> then the issue will not appear.

Correct.

> 
> > > For example the pattern "eth / ipv4 proto is 17 / end" will be
> > > completed with a "udp" item.
> 
> Only if UDP rss type is selected, if TCP is selected then it will be TCP right?

Correct.

> 
> > > This function returns "void" item in two cases:
> > > 1) The last item has empty spec, for example "eth / ipv4 / end".
> > > 2) The last itme has spec that can't be expanded for RSS.
> > >    For example the pattern "eth / ipv4 proto is 47 / end" ends with IPv4
> > >    item that has next protocol GRE.
> > >
> Typo in itme -> item?

Indeed.

> 
> > > In both cases the flow rule may be expanded, but in the second case
> > > such expansion may create rules with invalid pattern.
> 
> You mean that in both cases the flow will be expanded, that is the issue.
> That in the second case the flow shouldn't be expended.

Correct.

> 
> > > For example "eth / ipv4 proto is 47 / udp / end".
> > > In such a case the flow rule should not be expanded.
> > >
> > > This patch updates function rte_flow_expand_rss_item_complete().
> > > Return value RTE_FLOW_ITEM_TYPE_END is used to indicate the flow
> > > rule should not be expanded.
> > > In such a case, rte_flow_expand_rss() will return with the original
> > > flow rule only, without any expansion.
> > >
> 
> 
> > > Fixes: fc2dd8dd492f ("ethdev: fix expand RSS flows")
> > > Cc: stable@dpdk.org
> > >
> > > Signed-off-by: Dekel Peled <dekelp@mellanox.com>
> > > Acked-by: Xiaoyu Min <jackmin@mellanox.com>
> > > Acked-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
> > > ---
> > >  lib/librte_ethdev/rte_flow.c | 16 ++++++++++++++--
> > >  1 file changed, 14 insertions(+), 2 deletions(-)
> > >
> > > diff --git a/lib/librte_ethdev/rte_flow.c
> > > b/lib/librte_ethdev/rte_flow.c index f8fdd68..59a386d 100644
> > > --- a/lib/librte_ethdev/rte_flow.c
> > > +++ b/lib/librte_ethdev/rte_flow.c
> > > @@ -247,6 +247,8 @@ struct rte_flow_desc_data {
> > >  			ret = RTE_FLOW_ITEM_TYPE_IPV6;
> > >  		else if (rte_be_to_cpu_16(ether_type) ==
> > > RTE_ETHER_TYPE_VLAN)
> > >  			ret = RTE_FLOW_ITEM_TYPE_VLAN;
> > > +		else
> > > +			ret = RTE_FLOW_ITEM_TYPE_END;
> > >  		break;
> > >  	case RTE_FLOW_ITEM_TYPE_VLAN:
> > >  		if (item->mask)
> > > @@ -264,6 +266,8 @@ struct rte_flow_desc_data {
> > >  			ret = RTE_FLOW_ITEM_TYPE_IPV6;
> > >  		else if (rte_be_to_cpu_16(ether_type) ==
> > > RTE_ETHER_TYPE_VLAN)
> > >  			ret = RTE_FLOW_ITEM_TYPE_VLAN;
> > > +		else
> > > +			ret = RTE_FLOW_ITEM_TYPE_END;
> > >  		break;
> > >  	case RTE_FLOW_ITEM_TYPE_IPV4:
> > >  		if (item->mask)
> > > @@ -284,6 +288,8 @@ struct rte_flow_desc_data {
> > >  			ret = RTE_FLOW_ITEM_TYPE_IPV4;
> > >  		else if (ip_next_proto == IPPROTO_IPV6)
> > >  			ret = RTE_FLOW_ITEM_TYPE_IPV6;
> > > +		else
> > > +			ret = RTE_FLOW_ITEM_TYPE_END;
> > >  		break;
> > >  	case RTE_FLOW_ITEM_TYPE_IPV6:
> > >  		if (item->mask)
> > > @@ -304,6 +310,8 @@ struct rte_flow_desc_data {
> > >  			ret = RTE_FLOW_ITEM_TYPE_IPV4;
> > >  		else if (ip_next_proto == IPPROTO_IPV6)
> > >  			ret = RTE_FLOW_ITEM_TYPE_IPV6;
> > > +		else
> > > +			ret = RTE_FLOW_ITEM_TYPE_END;
> > >  		break;
> > >  	default:
> > >  		ret = RTE_FLOW_ITEM_TYPE_VOID;
> > > @@ -1110,10 +1118,14 @@ enum rte_flow_conv_item_spec_type {
> > >  	memset(flow_items, 0, sizeof(flow_items));
> > >  	user_pattern_size -= sizeof(*item);
> > >  	/*
> > > -	 * Check if the last valid item has spec set
> > > -	 * and need complete pattern.
> > > +	 * Check if the last valid item has spec set, need complete pattern,
> > > +	 * and the pattern can be used for expansion.
> > >  	 */
> > >  	missed_item.type =
> > > rte_flow_expand_rss_item_complete(last_item);
> > > +	if (missed_item.type == RTE_FLOW_ITEM_TYPE_END) {
> > > +		/* Item type END indicates expansion is not required. */
> > > +		return lsize;
> > > +	}
> > >  	if (missed_item.type != RTE_FLOW_ITEM_TYPE_VOID) {
> > >  		next = NULL;
> > >  		missed = 1;
> > > --
> > > 1.8.3.1
> 
> I don't think this is the correct solution.
> The idea of the rte_flow_expand_rss_item_complete function is to add the
> last item so later the parsing will be based on items regardless of spec.
> This mean the function already support pattern with the following format:
> Eth / ipv4 / gre. What the result will be? Will it be expended?

Flow rule with such pattern will not be expanded using the current mlx5_support_expansion array.

> 
> I think the solution should be that the function will return the correct item.
> Assuming there is such an item.

This is what the current solution does.

> 
> Best,
> Ori


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, back to index

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-07-27 12:57 [dpdk-stable] [PATCH] ethdev: fix RSS flow expansion in case of mismatch Dekel Peled
2020-07-27 13:25 ` Dekel Peled
2020-07-27 16:21   ` Ori Kam
2020-07-28  9:14     ` Dekel Peled

patches for DPDK stable branches

Archives are clonable:
	git clone --mirror http://inbox.dpdk.org/stable/0 stable/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 stable stable/ http://inbox.dpdk.org/stable \
		stable@dpdk.org
	public-inbox-index stable


Newsgroup available over NNTP:
	nntp://inbox.dpdk.org/inbox.dpdk.stable


AGPL code for this site: git clone https://public-inbox.org/ public-inbox