net/ice: support mark only action for FDIR

Message ID 1585810557-21150-1-git-send-email-simei.su@intel.com (mailing list archive)
State Superseded, archived
Delegated to: xiaolong ye
Headers
Series net/ice: support mark only action for FDIR |

Checks

Context Check Description
ci/checkpatch warning coding style issues
ci/iol-intel-Performance fail Performance Testing issues
ci/iol-mellanox-Performance success Performance Testing PASS
ci/iol-testing success Testing PASS
ci/Intel-compilation success Compilation OK
ci/travis-robot success Travis build: passed

Commit Message

Simei Su April 2, 2020, 6:55 a.m. UTC
  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

Qi Zhang April 14, 2020, 7:49 a.m. UTC | #1
> -----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
  
Simei Su April 14, 2020, 9:12 a.m. UTC | #2
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
>
  
Qi Zhang April 14, 2020, 12:50 p.m. UTC | #3
> -----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
> >
>
  
Simei Su April 14, 2020, 2:30 p.m. UTC | #4
> -----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
> > >
> >
>
  

Patch

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;
+
 	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;
 }