* [dpdk-dev] [PATCH] net/ice: fix flow validation for unsupported patterns
@ 2020-08-28 2:33 Guinan Sun
2020-08-31 4:22 ` Zhang, Qi Z
2020-09-08 3:15 ` [dpdk-dev] [PATCH v2] " Guinan Sun
0 siblings, 2 replies; 5+ messages in thread
From: Guinan Sun @ 2020-08-28 2:33 UTC (permalink / raw)
To: dev; +Cc: Qi Zhang, Qiming Yang, Guinan Sun, stable
When loading the OS default package and the pipeline mode is enabled
by the "pipeline-mode-support=1" operation. In this case, the wrong
parser is selected for processing and it will cause the unsupported
patterns(pppoes/pfcp/l2tpv3/esp/ah) to be validated successfully.
This patch corrects the parser selection issue.
Fixes: 47d460d63233 ("net/ice: rework switch filter")
Cc: stable@dpdk.org
Signed-off-by: Guinan Sun <guinanx.sun@intel.com>
---
drivers/net/ice/ice_switch_filter.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/drivers/net/ice/ice_switch_filter.c b/drivers/net/ice/ice_switch_filter.c
index c4b00b6a2..884fbaae2 100644
--- a/drivers/net/ice/ice_switch_filter.c
+++ b/drivers/net/ice/ice_switch_filter.c
@@ -1806,7 +1806,8 @@ ice_switch_init(struct ice_adapter *ad)
else
return -EINVAL;
- if (ad->devargs.pipe_mode_support)
+ if (ad->devargs.pipe_mode_support &&
+ ad->active_pkg_type != ICE_PKG_TYPE_OS_DEFAULT)
ret = ice_register_parser(perm_parser, ad);
else
ret = ice_register_parser(dist_parser, ad);
@@ -1824,7 +1825,8 @@ ice_switch_uninit(struct ice_adapter *ad)
else
dist_parser = &ice_switch_dist_parser_os;
- if (ad->devargs.pipe_mode_support)
+ if (ad->devargs.pipe_mode_support &&
+ ad->active_pkg_type != ICE_PKG_TYPE_OS_DEFAULT)
ice_unregister_parser(perm_parser, ad);
else
ice_unregister_parser(dist_parser, ad);
--
2.17.1
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [dpdk-dev] [PATCH] net/ice: fix flow validation for unsupported patterns
2020-08-28 2:33 [dpdk-dev] [PATCH] net/ice: fix flow validation for unsupported patterns Guinan Sun
@ 2020-08-31 4:22 ` Zhang, Qi Z
2020-09-01 7:19 ` Sun, GuinanX
2020-09-08 3:15 ` [dpdk-dev] [PATCH v2] " Guinan Sun
1 sibling, 1 reply; 5+ messages in thread
From: Zhang, Qi Z @ 2020-08-31 4:22 UTC (permalink / raw)
To: Sun, GuinanX, dev; +Cc: Yang, Qiming, stable
> -----Original Message-----
> From: Sun, GuinanX <guinanx.sun@intel.com>
> Sent: Friday, August 28, 2020 10:33 AM
> To: dev@dpdk.org
> Cc: Zhang, Qi Z <qi.z.zhang@intel.com>; Yang, Qiming
> <qiming.yang@intel.com>; Sun, GuinanX <guinanx.sun@intel.com>;
> stable@dpdk.org
> Subject: [PATCH] net/ice: fix flow validation for unsupported patterns
>
> When loading the OS default package and the pipeline mode is enabled by the
> "pipeline-mode-support=1" operation. In this case, the wrong parser is selected
> for processing and it will cause the unsupported
> patterns(pppoes/pfcp/l2tpv3/esp/ah) to be validated successfully.
> This patch corrects the parser selection issue.
>
> Fixes: 47d460d63233 ("net/ice: rework switch filter")
> Cc: stable@dpdk.org
>
> Signed-off-by: Guinan Sun <guinanx.sun@intel.com>
> ---
> drivers/net/ice/ice_switch_filter.c | 6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/net/ice/ice_switch_filter.c
> b/drivers/net/ice/ice_switch_filter.c
> index c4b00b6a2..884fbaae2 100644
> --- a/drivers/net/ice/ice_switch_filter.c
> +++ b/drivers/net/ice/ice_switch_filter.c
> @@ -1806,7 +1806,8 @@ ice_switch_init(struct ice_adapter *ad)
> else
> return -EINVAL;
>
> - if (ad->devargs.pipe_mode_support)
> + if (ad->devargs.pipe_mode_support &&
> + ad->active_pkg_type != ICE_PKG_TYPE_OS_DEFAULT)
> ret = ice_register_parser(perm_parser, ad);
This is not correct, package type should not related with pipe line mode.
> else
> ret = ice_register_parser(dist_parser, ad); @@ -1824,7 +1825,8 @@
> ice_switch_uninit(struct ice_adapter *ad)
> else
> dist_parser = &ice_switch_dist_parser_os;
>
> - if (ad->devargs.pipe_mode_support)
> + if (ad->devargs.pipe_mode_support &&
> + ad->active_pkg_type != ICE_PKG_TYPE_OS_DEFAULT)
> ice_unregister_parser(perm_parser, ad);
> else
> ice_unregister_parser(dist_parser, ad);
> --
> 2.17.1
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [dpdk-dev] [PATCH] net/ice: fix flow validation for unsupported patterns
2020-08-31 4:22 ` Zhang, Qi Z
@ 2020-09-01 7:19 ` Sun, GuinanX
0 siblings, 0 replies; 5+ messages in thread
From: Sun, GuinanX @ 2020-09-01 7:19 UTC (permalink / raw)
To: Zhang, Qi Z, dev; +Cc: Yang, Qiming
Hi qi
> -----Original Message-----
> From: Zhang, Qi Z
> Sent: Monday, August 31, 2020 12:23 PM
> To: Sun, GuinanX <guinanx.sun@intel.com>; dev@dpdk.org
> Cc: Yang, Qiming <qiming.yang@intel.com>; stable@dpdk.org
> Subject: RE: [PATCH] net/ice: fix flow validation for unsupported patterns
>
>
>
> > -----Original Message-----
> > From: Sun, GuinanX <guinanx.sun@intel.com>
> > Sent: Friday, August 28, 2020 10:33 AM
> > To: dev@dpdk.org
> > Cc: Zhang, Qi Z <qi.z.zhang@intel.com>; Yang, Qiming
> > <qiming.yang@intel.com>; Sun, GuinanX <guinanx.sun@intel.com>;
> > stable@dpdk.org
> > Subject: [PATCH] net/ice: fix flow validation for unsupported patterns
> >
> > When loading the OS default package and the pipeline mode is enabled
> > by the "pipeline-mode-support=1" operation. In this case, the wrong
> > parser is selected for processing and it will cause the unsupported
> > patterns(pppoes/pfcp/l2tpv3/esp/ah) to be validated successfully.
> > This patch corrects the parser selection issue.
> >
> > Fixes: 47d460d63233 ("net/ice: rework switch filter")
> > Cc: stable@dpdk.org
> >
> > Signed-off-by: Guinan Sun <guinanx.sun@intel.com>
> > ---
> > drivers/net/ice/ice_switch_filter.c | 6 ++++--
> > 1 file changed, 4 insertions(+), 2 deletions(-)
> >
> > diff --git a/drivers/net/ice/ice_switch_filter.c
> > b/drivers/net/ice/ice_switch_filter.c
> > index c4b00b6a2..884fbaae2 100644
> > --- a/drivers/net/ice/ice_switch_filter.c
> > +++ b/drivers/net/ice/ice_switch_filter.c
> > @@ -1806,7 +1806,8 @@ ice_switch_init(struct ice_adapter *ad)
> > else
> > return -EINVAL;
> >
> > - if (ad->devargs.pipe_mode_support)
> > + if (ad->devargs.pipe_mode_support &&
> > + ad->active_pkg_type != ICE_PKG_TYPE_OS_DEFAULT)
> > ret = ice_register_parser(perm_parser, ad);
>
> This is not correct, package type should not related with pipe line mode.
Under the premise of pipe-mode support, the choice of parser for different package types will be added.
Patch v2 will fix it.
>
>
> > else
> > ret = ice_register_parser(dist_parser, ad); @@ -1824,7
> +1825,8 @@
> > ice_switch_uninit(struct ice_adapter *ad)
> > else
> > dist_parser = &ice_switch_dist_parser_os;
> >
> > - if (ad->devargs.pipe_mode_support)
> > + if (ad->devargs.pipe_mode_support &&
> > + ad->active_pkg_type != ICE_PKG_TYPE_OS_DEFAULT)
> > ice_unregister_parser(perm_parser, ad);
> > else
> > ice_unregister_parser(dist_parser, ad);
> > --
> > 2.17.1
^ permalink raw reply [flat|nested] 5+ messages in thread
* [dpdk-dev] [PATCH v2] net/ice: fix flow validation for unsupported patterns
2020-08-28 2:33 [dpdk-dev] [PATCH] net/ice: fix flow validation for unsupported patterns Guinan Sun
2020-08-31 4:22 ` Zhang, Qi Z
@ 2020-09-08 3:15 ` Guinan Sun
2020-09-09 8:48 ` Zhang, Qi Z
1 sibling, 1 reply; 5+ messages in thread
From: Guinan Sun @ 2020-09-08 3:15 UTC (permalink / raw)
To: dev; +Cc: Qi Zhang, Qiming Yang, Guinan Sun, stable
When loading the OS default package and the pipeline mode is enabled
by the "pipeline-mode-support=1" operation. In this case, the wrong
parser is selected for processing and it will cause the unsupported
patterns(pppoes/pfcp/l2tpv3/esp/ah) to be validated successfully.
This patch corrects the parser selection issue.
Fixes: 47d460d63233 ("net/ice: rework switch filter")
Cc: stable@dpdk.org
Signed-off-by: Guinan Sun <guinanx.sun@intel.com>
---
v2:
* Add parser selector in pipline-mode.
---
drivers/net/ice/ice_switch_filter.c | 100 ++++++++++++++++++++++------
1 file changed, 81 insertions(+), 19 deletions(-)
diff --git a/drivers/net/ice/ice_switch_filter.c b/drivers/net/ice/ice_switch_filter.c
index 24320ac7d..4dfeeef50 100644
--- a/drivers/net/ice/ice_switch_filter.c
+++ b/drivers/net/ice/ice_switch_filter.c
@@ -139,7 +139,42 @@ struct sw_meta {
static struct ice_flow_parser ice_switch_dist_parser_os;
static struct ice_flow_parser ice_switch_dist_parser_comms;
-static struct ice_flow_parser ice_switch_perm_parser;
+static struct ice_flow_parser ice_switch_perm_parser_os;
+static struct ice_flow_parser ice_switch_perm_parser_comms;
+
+static struct
+ice_pattern_match_item ice_switch_pattern_dist_os[] = {
+ {pattern_ethertype,
+ ICE_SW_INSET_ETHER, ICE_INSET_NONE},
+ {pattern_ethertype_vlan,
+ ICE_SW_INSET_MAC_VLAN, ICE_INSET_NONE},
+ {pattern_eth_arp,
+ ICE_INSET_NONE, ICE_INSET_NONE},
+ {pattern_eth_ipv4,
+ ICE_SW_INSET_MAC_IPV4, ICE_INSET_NONE},
+ {pattern_eth_ipv4_udp,
+ ICE_SW_INSET_MAC_IPV4_UDP, ICE_INSET_NONE},
+ {pattern_eth_ipv4_tcp,
+ ICE_SW_INSET_MAC_IPV4_TCP, ICE_INSET_NONE},
+ {pattern_eth_ipv6,
+ ICE_SW_INSET_MAC_IPV6, ICE_INSET_NONE},
+ {pattern_eth_ipv6_udp,
+ ICE_SW_INSET_MAC_IPV6_UDP, ICE_INSET_NONE},
+ {pattern_eth_ipv6_tcp,
+ ICE_SW_INSET_MAC_IPV6_TCP, ICE_INSET_NONE},
+ {pattern_eth_ipv4_udp_vxlan_eth_ipv4,
+ ICE_SW_INSET_DIST_VXLAN_IPV4, ICE_INSET_NONE},
+ {pattern_eth_ipv4_udp_vxlan_eth_ipv4_udp,
+ ICE_SW_INSET_DIST_VXLAN_IPV4_UDP, ICE_INSET_NONE},
+ {pattern_eth_ipv4_udp_vxlan_eth_ipv4_tcp,
+ ICE_SW_INSET_DIST_VXLAN_IPV4_TCP, ICE_INSET_NONE},
+ {pattern_eth_ipv4_nvgre_eth_ipv4,
+ ICE_SW_INSET_DIST_NVGRE_IPV4, ICE_INSET_NONE},
+ {pattern_eth_ipv4_nvgre_eth_ipv4_udp,
+ ICE_SW_INSET_DIST_NVGRE_IPV4_UDP, ICE_INSET_NONE},
+ {pattern_eth_ipv4_nvgre_eth_ipv4_tcp,
+ ICE_SW_INSET_DIST_NVGRE_IPV4_TCP, ICE_INSET_NONE},
+};
static struct
ice_pattern_match_item ice_switch_pattern_dist_comms[] = {
@@ -147,6 +182,8 @@ ice_pattern_match_item ice_switch_pattern_dist_comms[] = {
ICE_SW_INSET_ETHER, ICE_INSET_NONE},
{pattern_ethertype_vlan,
ICE_SW_INSET_MAC_VLAN, ICE_INSET_NONE},
+ {pattern_eth_arp,
+ ICE_INSET_NONE, ICE_INSET_NONE},
{pattern_eth_ipv4,
ICE_SW_INSET_MAC_IPV4, ICE_INSET_NONE},
{pattern_eth_ipv4_udp,
@@ -228,7 +265,7 @@ ice_pattern_match_item ice_switch_pattern_dist_comms[] = {
};
static struct
-ice_pattern_match_item ice_switch_pattern_dist_os[] = {
+ice_pattern_match_item ice_switch_pattern_perm_os[] = {
{pattern_ethertype,
ICE_SW_INSET_ETHER, ICE_INSET_NONE},
{pattern_ethertype_vlan,
@@ -248,25 +285,27 @@ ice_pattern_match_item ice_switch_pattern_dist_os[] = {
{pattern_eth_ipv6_tcp,
ICE_SW_INSET_MAC_IPV6_TCP, ICE_INSET_NONE},
{pattern_eth_ipv4_udp_vxlan_eth_ipv4,
- ICE_SW_INSET_DIST_VXLAN_IPV4, ICE_INSET_NONE},
+ ICE_SW_INSET_PERM_TUNNEL_IPV4, ICE_INSET_NONE},
{pattern_eth_ipv4_udp_vxlan_eth_ipv4_udp,
- ICE_SW_INSET_DIST_VXLAN_IPV4_UDP, ICE_INSET_NONE},
+ ICE_SW_INSET_PERM_TUNNEL_IPV4_UDP, ICE_INSET_NONE},
{pattern_eth_ipv4_udp_vxlan_eth_ipv4_tcp,
- ICE_SW_INSET_DIST_VXLAN_IPV4_TCP, ICE_INSET_NONE},
+ ICE_SW_INSET_PERM_TUNNEL_IPV4_TCP, ICE_INSET_NONE},
{pattern_eth_ipv4_nvgre_eth_ipv4,
- ICE_SW_INSET_DIST_NVGRE_IPV4, ICE_INSET_NONE},
+ ICE_SW_INSET_PERM_TUNNEL_IPV4, ICE_INSET_NONE},
{pattern_eth_ipv4_nvgre_eth_ipv4_udp,
- ICE_SW_INSET_DIST_NVGRE_IPV4_UDP, ICE_INSET_NONE},
+ ICE_SW_INSET_PERM_TUNNEL_IPV4_UDP, ICE_INSET_NONE},
{pattern_eth_ipv4_nvgre_eth_ipv4_tcp,
- ICE_SW_INSET_DIST_NVGRE_IPV4_TCP, ICE_INSET_NONE},
+ ICE_SW_INSET_PERM_TUNNEL_IPV4_TCP, ICE_INSET_NONE},
};
static struct
-ice_pattern_match_item ice_switch_pattern_perm[] = {
+ice_pattern_match_item ice_switch_pattern_perm_comms[] = {
{pattern_ethertype,
ICE_SW_INSET_ETHER, ICE_INSET_NONE},
{pattern_ethertype_vlan,
ICE_SW_INSET_MAC_VLAN, ICE_INSET_NONE},
+ {pattern_eth_arp,
+ ICE_INSET_NONE, ICE_INSET_NONE},
{pattern_eth_ipv4,
ICE_SW_INSET_MAC_IPV4, ICE_INSET_NONE},
{pattern_eth_ipv4_udp,
@@ -1813,7 +1852,7 @@ ice_switch_init(struct ice_adapter *ad)
{
int ret = 0;
struct ice_flow_parser *dist_parser;
- struct ice_flow_parser *perm_parser = &ice_switch_perm_parser;
+ struct ice_flow_parser *perm_parser;
if (ad->active_pkg_type == ICE_PKG_TYPE_COMMS)
dist_parser = &ice_switch_dist_parser_comms;
@@ -1822,10 +1861,16 @@ ice_switch_init(struct ice_adapter *ad)
else
return -EINVAL;
- if (ad->devargs.pipe_mode_support)
+ if (ad->devargs.pipe_mode_support) {
+ if (ad->active_pkg_type == ICE_PKG_TYPE_COMMS)
+ perm_parser = &ice_switch_perm_parser_comms;
+ else
+ perm_parser = &ice_switch_perm_parser_os;
+
ret = ice_register_parser(perm_parser, ad);
- else
+ } else {
ret = ice_register_parser(dist_parser, ad);
+ }
return ret;
}
@@ -1833,17 +1878,25 @@ static void
ice_switch_uninit(struct ice_adapter *ad)
{
struct ice_flow_parser *dist_parser;
- struct ice_flow_parser *perm_parser = &ice_switch_perm_parser;
+ struct ice_flow_parser *perm_parser;
if (ad->active_pkg_type == ICE_PKG_TYPE_COMMS)
dist_parser = &ice_switch_dist_parser_comms;
- else
+ else if (ad->active_pkg_type == ICE_PKG_TYPE_OS_DEFAULT)
dist_parser = &ice_switch_dist_parser_os;
+ else
+ return;
+
+ if (ad->devargs.pipe_mode_support) {
+ if (ad->active_pkg_type == ICE_PKG_TYPE_COMMS)
+ perm_parser = &ice_switch_perm_parser_comms;
+ else
+ perm_parser = &ice_switch_perm_parser_os;
- if (ad->devargs.pipe_mode_support)
ice_unregister_parser(perm_parser, ad);
- else
+ } else {
ice_unregister_parser(dist_parser, ad);
+ }
}
static struct
@@ -1877,10 +1930,19 @@ ice_flow_parser ice_switch_dist_parser_comms = {
};
static struct
-ice_flow_parser ice_switch_perm_parser = {
+ice_flow_parser ice_switch_perm_parser_os = {
+ .engine = &ice_switch_engine,
+ .array = ice_switch_pattern_perm_os,
+ .array_len = RTE_DIM(ice_switch_pattern_perm_os),
+ .parse_pattern_action = ice_switch_parse_pattern_action,
+ .stage = ICE_FLOW_STAGE_PERMISSION,
+};
+
+static struct
+ice_flow_parser ice_switch_perm_parser_comms = {
.engine = &ice_switch_engine,
- .array = ice_switch_pattern_perm,
- .array_len = RTE_DIM(ice_switch_pattern_perm),
+ .array = ice_switch_pattern_perm_comms,
+ .array_len = RTE_DIM(ice_switch_pattern_perm_comms),
.parse_pattern_action = ice_switch_parse_pattern_action,
.stage = ICE_FLOW_STAGE_PERMISSION,
};
--
2.17.1
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [dpdk-dev] [PATCH v2] net/ice: fix flow validation for unsupported patterns
2020-09-08 3:15 ` [dpdk-dev] [PATCH v2] " Guinan Sun
@ 2020-09-09 8:48 ` Zhang, Qi Z
0 siblings, 0 replies; 5+ messages in thread
From: Zhang, Qi Z @ 2020-09-09 8:48 UTC (permalink / raw)
To: Sun, GuinanX, dev; +Cc: Yang, Qiming, stable
> -----Original Message-----
> From: Sun, GuinanX <guinanx.sun@intel.com>
> Sent: Tuesday, September 8, 2020 11:15 AM
> To: dev@dpdk.org
> Cc: Zhang, Qi Z <qi.z.zhang@intel.com>; Yang, Qiming
> <qiming.yang@intel.com>; Sun, GuinanX <guinanx.sun@intel.com>;
> stable@dpdk.org
> Subject: [PATCH v2] net/ice: fix flow validation for unsupported patterns
>
> When loading the OS default package and the pipeline mode is enabled by the
> "pipeline-mode-support=1" operation. In this case, the wrong parser is selected
> for processing and it will cause the unsupported
> patterns(pppoes/pfcp/l2tpv3/esp/ah) to be validated successfully.
> This patch corrects the parser selection issue.
>
> Fixes: 47d460d63233 ("net/ice: rework switch filter")
> Cc: stable@dpdk.org
>
> Signed-off-by: Guinan Sun <guinanx.sun@intel.com>
Acked-by: Qi Zhang <qi.z.zhang@intel.com>
Applied to dpdk-next-net-intel.
Thanks
Qi
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2020-09-09 8:48 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-08-28 2:33 [dpdk-dev] [PATCH] net/ice: fix flow validation for unsupported patterns Guinan Sun
2020-08-31 4:22 ` Zhang, Qi Z
2020-09-01 7:19 ` Sun, GuinanX
2020-09-08 3:15 ` [dpdk-dev] [PATCH v2] " Guinan Sun
2020-09-09 8:48 ` Zhang, Qi Z
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).