net/ice: support mark only action for FDIR
Checks
Commit Message
This patch fixes issue that doesn't support mark only case.
Mark only action is equal to mark + passthru action.
Fixes: f5cafa961fae ("net/ice: add flow director create and destroy")
Cc: stable@dpdk.org
Signed-off-by: Simei Su <simei.su@intel.com>
---
drivers/net/ice/ice_fdir_filter.c | 13 ++++++++++++-
1 file changed, 12 insertions(+), 1 deletion(-)
Comments
> -----Original Message-----
> From: Su, Simei <simei.su@intel.com>
> Sent: Thursday, April 2, 2020 2:56 PM
> To: Zhang, Qi Z <qi.z.zhang@intel.com>; Ye, Xiaolong <xiaolong.ye@intel.com>
> Cc: dev@dpdk.org; Cao, Yahui <yahui.cao@intel.com>; Su, Simei
> <simei.su@intel.com>; stable@dpdk.org
> Subject: [PATCH] net/ice: support mark only action for FDIR
>
> This patch fixes issue that doesn't support mark only case.
> Mark only action is equal to mark + passthru action.
>
> Fixes: f5cafa961fae ("net/ice: add flow director create and destroy")
> Cc: stable@dpdk.org
>
> Signed-off-by: Simei Su <simei.su@intel.com>
> ---
> drivers/net/ice/ice_fdir_filter.c | 13 ++++++++++++-
> 1 file changed, 12 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/net/ice/ice_fdir_filter.c b/drivers/net/ice/ice_fdir_filter.c
> index a082a13..8acdb1a 100644
> --- a/drivers/net/ice/ice_fdir_filter.c
> +++ b/drivers/net/ice/ice_fdir_filter.c
> @@ -1469,6 +1469,10 @@
> uint32_t counter_num = 0;
> int ret;
>
> + /* set default action to PASSTHRU mode, in the case of MARK only. */
> + filter->input.dest_ctl =
> + ICE_FLTR_PRGM_DESC_DEST_DIRECT_PKT_OTHER;
Should we also consider the case "Count only",
I will suggest move above code to after all the action has been iterated and all criteria check has passed
Then only set destination to PASSTHROUGH for no destination case.
If (dest_num == 0)
filter->input.dest_ctl = ICE_FLTR_PRGM_DESC_DEST_DIRECT_PKT_OTHER;
> +
> for (; actions->type != RTE_FLOW_ACTION_TYPE_END; actions++) {
> switch (actions->type) {
> case RTE_FLOW_ACTION_TYPE_VOID:
> @@ -1533,7 +1537,7 @@
> }
> }
>
> - if (dest_num == 0 || dest_num >= 2) {
> + if (dest_num >= 2) {
> rte_flow_error_set(error, EINVAL,
> RTE_FLOW_ERROR_TYPE_ACTION, actions,
> "Unsupported action combination"); @@ -1554,6 +1558,13
> @@
> return -rte_errno;
> }
>
> + if (dest_num + mark_num == 0) {
> + rte_flow_error_set(error, EINVAL,
> + RTE_FLOW_ERROR_TYPE_ACTION, actions,
> + "Emtpy action");
> + return -rte_errno;
> + }
> +
> return 0;
> }
>
> --
> 1.8.3.1
Hi, Qi
> -----Original Message-----
> From: Zhang, Qi Z <qi.z.zhang@intel.com>
> Sent: Tuesday, April 14, 2020 3:49 PM
> To: Su, Simei <simei.su@intel.com>; Ye, Xiaolong <xiaolong.ye@intel.com>
> Cc: dev@dpdk.org; Cao, Yahui <yahui.cao@intel.com>; stable@dpdk.org
> Subject: RE: [PATCH] net/ice: support mark only action for FDIR
>
>
>
> > -----Original Message-----
> > From: Su, Simei <simei.su@intel.com>
> > Sent: Thursday, April 2, 2020 2:56 PM
> > To: Zhang, Qi Z <qi.z.zhang@intel.com>; Ye, Xiaolong
> > <xiaolong.ye@intel.com>
> > Cc: dev@dpdk.org; Cao, Yahui <yahui.cao@intel.com>; Su, Simei
> > <simei.su@intel.com>; stable@dpdk.org
> > Subject: [PATCH] net/ice: support mark only action for FDIR
> >
> > This patch fixes issue that doesn't support mark only case.
> > Mark only action is equal to mark + passthru action.
> >
> > Fixes: f5cafa961fae ("net/ice: add flow director create and destroy")
> > Cc: stable@dpdk.org
> >
> > Signed-off-by: Simei Su <simei.su@intel.com>
> > ---
> > drivers/net/ice/ice_fdir_filter.c | 13 ++++++++++++-
> > 1 file changed, 12 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/net/ice/ice_fdir_filter.c
> > b/drivers/net/ice/ice_fdir_filter.c
> > index a082a13..8acdb1a 100644
> > --- a/drivers/net/ice/ice_fdir_filter.c
> > +++ b/drivers/net/ice/ice_fdir_filter.c
> > @@ -1469,6 +1469,10 @@
> > uint32_t counter_num = 0;
> > int ret;
> >
> > + /* set default action to PASSTHRU mode, in the case of MARK only. */
> > + filter->input.dest_ctl =
> > + ICE_FLTR_PRGM_DESC_DEST_DIRECT_PKT_OTHER;
>
> Should we also consider the case "Count only", I will suggest move above code
> to after all the action has been iterated and all criteria check has passed Then
> only set destination to PASSTHROUGH for no destination case.
I don't know whether the case "Count only" should fail or means passthru + count.
In my code, I return error when in the case "count only":
if (dest_num + mark_num == 0) {
rte_flow_error_set(error, EINVAL,
RTE_FLOW_ERROR_TYPE_ACTION, actions,
"Emtpy action");
return -rte_errno;
}
So I want to confirm how to define "count only" case here, your suggestion code seems "count only" means "count + passthru" ?
Thanks
Simei
>
> If (dest_num == 0)
> filter->input.dest_ctl =
> ICE_FLTR_PRGM_DESC_DEST_DIRECT_PKT_OTHER;
>
> > +
> > for (; actions->type != RTE_FLOW_ACTION_TYPE_END; actions++) {
> > switch (actions->type) {
> > case RTE_FLOW_ACTION_TYPE_VOID:
> > @@ -1533,7 +1537,7 @@
> > }
> > }
> >
> > - if (dest_num == 0 || dest_num >= 2) {
> > + if (dest_num >= 2) {
> > rte_flow_error_set(error, EINVAL,
> > RTE_FLOW_ERROR_TYPE_ACTION, actions,
> > "Unsupported action combination"); @@ -1554,6 +1558,13
> @@
> > return -rte_errno;
> > }
> >
> > + if (dest_num + mark_num == 0) {
> > + rte_flow_error_set(error, EINVAL,
> > + RTE_FLOW_ERROR_TYPE_ACTION, actions,
> > + "Emtpy action");
> > + return -rte_errno;
> > + }
> > +
> > return 0;
> > }
> >
> > --
> > 1.8.3.1
>
> -----Original Message-----
> From: Su, Simei <simei.su@intel.com>
> Sent: Tuesday, April 14, 2020 5:12 PM
> To: Zhang, Qi Z <qi.z.zhang@intel.com>; Ye, Xiaolong <xiaolong.ye@intel.com>
> Cc: dev@dpdk.org; Cao, Yahui <yahui.cao@intel.com>; stable@dpdk.org
> Subject: RE: [PATCH] net/ice: support mark only action for FDIR
>
> Hi, Qi
>
> > -----Original Message-----
> > From: Zhang, Qi Z <qi.z.zhang@intel.com>
> > Sent: Tuesday, April 14, 2020 3:49 PM
> > To: Su, Simei <simei.su@intel.com>; Ye, Xiaolong
> > <xiaolong.ye@intel.com>
> > Cc: dev@dpdk.org; Cao, Yahui <yahui.cao@intel.com>; stable@dpdk.org
> > Subject: RE: [PATCH] net/ice: support mark only action for FDIR
> >
> >
> >
> > > -----Original Message-----
> > > From: Su, Simei <simei.su@intel.com>
> > > Sent: Thursday, April 2, 2020 2:56 PM
> > > To: Zhang, Qi Z <qi.z.zhang@intel.com>; Ye, Xiaolong
> > > <xiaolong.ye@intel.com>
> > > Cc: dev@dpdk.org; Cao, Yahui <yahui.cao@intel.com>; Su, Simei
> > > <simei.su@intel.com>; stable@dpdk.org
> > > Subject: [PATCH] net/ice: support mark only action for FDIR
> > >
> > > This patch fixes issue that doesn't support mark only case.
> > > Mark only action is equal to mark + passthru action.
> > >
> > > Fixes: f5cafa961fae ("net/ice: add flow director create and
> > > destroy")
> > > Cc: stable@dpdk.org
> > >
> > > Signed-off-by: Simei Su <simei.su@intel.com>
> > > ---
> > > drivers/net/ice/ice_fdir_filter.c | 13 ++++++++++++-
> > > 1 file changed, 12 insertions(+), 1 deletion(-)
> > >
> > > diff --git a/drivers/net/ice/ice_fdir_filter.c
> > > b/drivers/net/ice/ice_fdir_filter.c
> > > index a082a13..8acdb1a 100644
> > > --- a/drivers/net/ice/ice_fdir_filter.c
> > > +++ b/drivers/net/ice/ice_fdir_filter.c
> > > @@ -1469,6 +1469,10 @@
> > > uint32_t counter_num = 0;
> > > int ret;
> > >
> > > +/* set default action to PASSTHRU mode, in the case of MARK only.
> > > +*/
> > > +filter->input.dest_ctl =
> > > +ICE_FLTR_PRGM_DESC_DEST_DIRECT_PKT_OTHER;
> >
> > Should we also consider the case "Count only", I will suggest move
> > above code to after all the action has been iterated and all criteria
> > check has passed Then only set destination to PASSTHROUGH for no
> destination case.
>
> I don't know whether the case "Count only" should fail or means passthru +
> count.
It is the case that user may just want to count a number of the packets that match a specific pattern and don't care which destination it reached.,
Though I don't know if this could be a real usage, but I didn't think its necessary to reject this configure, and allow "count only" keep it consistent with "mark only" make the code easy to understand.
> In my code, I return error when in the case "count only":
> if (dest_num + mark_num == 0) {
> rte_flow_error_set(error, EINVAL,
> RTE_FLOW_ERROR_TYPE_ACTION, actions,
> "Emtpy action");
> return -rte_errno;
> }
>
> So I want to confirm how to define "count only" case here, your suggestion
> code seems "count only" means "count + passthru" ?
>
> Thanks
> Simei
>
> >
> > If (dest_num == 0)
> > filter->input.dest_ctl =
> > ICE_FLTR_PRGM_DESC_DEST_DIRECT_PKT_OTHER;
> >
> > > +
> > > for (; actions->type != RTE_FLOW_ACTION_TYPE_END; actions++) {
> > > switch (actions->type) { case RTE_FLOW_ACTION_TYPE_VOID:
> > > @@ -1533,7 +1537,7 @@
> > > }
> > > }
> > >
> > > -if (dest_num == 0 || dest_num >= 2) {
> > > +if (dest_num >= 2) {
> > > rte_flow_error_set(error, EINVAL,
> > > RTE_FLOW_ERROR_TYPE_ACTION, actions,
> > > "Unsupported action combination"); @@ -1554,6 +1558,13
> > @@
> > > return -rte_errno;
> > > }
> > >
> > > +if (dest_num + mark_num == 0) {
> > > +rte_flow_error_set(error, EINVAL,
> > > +RTE_FLOW_ERROR_TYPE_ACTION, actions, "Emtpy action"); return
> > > +-rte_errno; }
> > > +
> > > return 0;
> > > }
> > >
> > > --
> > > 1.8.3.1
> >
>
> -----Original Message-----
> From: Zhang, Qi Z <qi.z.zhang@intel.com>
> Sent: Tuesday, April 14, 2020 8:51 PM
> To: Su, Simei <simei.su@intel.com>; Ye, Xiaolong <xiaolong.ye@intel.com>
> Cc: dev@dpdk.org; Cao, Yahui <yahui.cao@intel.com>; stable@dpdk.org
> Subject: RE: [PATCH] net/ice: support mark only action for FDIR
>
>
>
> > -----Original Message-----
> > From: Su, Simei <simei.su@intel.com>
> > Sent: Tuesday, April 14, 2020 5:12 PM
> > To: Zhang, Qi Z <qi.z.zhang@intel.com>; Ye, Xiaolong
> > <xiaolong.ye@intel.com>
> > Cc: dev@dpdk.org; Cao, Yahui <yahui.cao@intel.com>; stable@dpdk.org
> > Subject: RE: [PATCH] net/ice: support mark only action for FDIR
> >
> > Hi, Qi
> >
> > > -----Original Message-----
> > > From: Zhang, Qi Z <qi.z.zhang@intel.com>
> > > Sent: Tuesday, April 14, 2020 3:49 PM
> > > To: Su, Simei <simei.su@intel.com>; Ye, Xiaolong
> > > <xiaolong.ye@intel.com>
> > > Cc: dev@dpdk.org; Cao, Yahui <yahui.cao@intel.com>; stable@dpdk.org
> > > Subject: RE: [PATCH] net/ice: support mark only action for FDIR
> > >
> > >
> > >
> > > > -----Original Message-----
> > > > From: Su, Simei <simei.su@intel.com>
> > > > Sent: Thursday, April 2, 2020 2:56 PM
> > > > To: Zhang, Qi Z <qi.z.zhang@intel.com>; Ye, Xiaolong
> > > > <xiaolong.ye@intel.com>
> > > > Cc: dev@dpdk.org; Cao, Yahui <yahui.cao@intel.com>; Su, Simei
> > > > <simei.su@intel.com>; stable@dpdk.org
> > > > Subject: [PATCH] net/ice: support mark only action for FDIR
> > > >
> > > > This patch fixes issue that doesn't support mark only case.
> > > > Mark only action is equal to mark + passthru action.
> > > >
> > > > Fixes: f5cafa961fae ("net/ice: add flow director create and
> > > > destroy")
> > > > Cc: stable@dpdk.org
> > > >
> > > > Signed-off-by: Simei Su <simei.su@intel.com>
> > > > ---
> > > > drivers/net/ice/ice_fdir_filter.c | 13 ++++++++++++-
> > > > 1 file changed, 12 insertions(+), 1 deletion(-)
> > > >
> > > > diff --git a/drivers/net/ice/ice_fdir_filter.c
> > > > b/drivers/net/ice/ice_fdir_filter.c
> > > > index a082a13..8acdb1a 100644
> > > > --- a/drivers/net/ice/ice_fdir_filter.c
> > > > +++ b/drivers/net/ice/ice_fdir_filter.c
> > > > @@ -1469,6 +1469,10 @@
> > > > uint32_t counter_num = 0;
> > > > int ret;
> > > >
> > > > +/* set default action to PASSTHRU mode, in the case of MARK only.
> > > > +*/
> > > > +filter->input.dest_ctl =
> > > > +ICE_FLTR_PRGM_DESC_DEST_DIRECT_PKT_OTHER;
> > >
> > > Should we also consider the case "Count only", I will suggest move
> > > above code to after all the action has been iterated and all
> > > criteria check has passed Then only set destination to PASSTHROUGH
> > > for no
> > destination case.
> >
> > I don't know whether the case "Count only" should fail or means
> > passthru + count.
>
> It is the case that user may just want to count a number of the packets that
> match a specific pattern and don't care which destination it reached., Though
> I don't know if this could be a real usage, but I didn't think its necessary to
> reject this configure, and allow "count only" keep it consistent with "mark
> only" make the code easy to understand.
>
Ok, got your idea. Thanks, Qi.
Br
Simei
> > In my code, I return error when in the case "count only":
> > if (dest_num + mark_num == 0) {
> > rte_flow_error_set(error, EINVAL,
> > RTE_FLOW_ERROR_TYPE_ACTION, actions,
> > "Emtpy action");
> > return -rte_errno;
> > }
> >
> > So I want to confirm how to define "count only" case here, your
> > suggestion code seems "count only" means "count + passthru" ?
>
>
> >
> > Thanks
> > Simei
> >
> > >
> > > If (dest_num == 0)
> > > filter->input.dest_ctl =
> > > ICE_FLTR_PRGM_DESC_DEST_DIRECT_PKT_OTHER;
> > >
> > > > +
> > > > for (; actions->type != RTE_FLOW_ACTION_TYPE_END; actions++) {
> > > > switch (actions->type) { case RTE_FLOW_ACTION_TYPE_VOID:
> > > > @@ -1533,7 +1537,7 @@
> > > > }
> > > > }
> > > >
> > > > -if (dest_num == 0 || dest_num >= 2) {
> > > > +if (dest_num >= 2) {
> > > > rte_flow_error_set(error, EINVAL,
> > > > RTE_FLOW_ERROR_TYPE_ACTION, actions,
> > > > "Unsupported action combination"); @@ -1554,6 +1558,13
> > > @@
> > > > return -rte_errno;
> > > > }
> > > >
> > > > +if (dest_num + mark_num == 0) {
> > > > +rte_flow_error_set(error, EINVAL, RTE_FLOW_ERROR_TYPE_ACTION,
> > > > +actions, "Emtpy action"); return -rte_errno; }
> > > > +
> > > > return 0;
> > > > }
> > > >
> > > > --
> > > > 1.8.3.1
> > >
> >
>
@@ -1469,6 +1469,10 @@
uint32_t counter_num = 0;
int ret;
+ /* set default action to PASSTHRU mode, in the case of MARK only. */
+ filter->input.dest_ctl =
+ ICE_FLTR_PRGM_DESC_DEST_DIRECT_PKT_OTHER;
+
for (; actions->type != RTE_FLOW_ACTION_TYPE_END; actions++) {
switch (actions->type) {
case RTE_FLOW_ACTION_TYPE_VOID:
@@ -1533,7 +1537,7 @@
}
}
- if (dest_num == 0 || dest_num >= 2) {
+ if (dest_num >= 2) {
rte_flow_error_set(error, EINVAL,
RTE_FLOW_ERROR_TYPE_ACTION, actions,
"Unsupported action combination");
@@ -1554,6 +1558,13 @@
return -rte_errno;
}
+ if (dest_num + mark_num == 0) {
+ rte_flow_error_set(error, EINVAL,
+ RTE_FLOW_ERROR_TYPE_ACTION, actions,
+ "Emtpy action");
+ return -rte_errno;
+ }
+
return 0;
}