Hi, Qi > -----Original Message----- > From: Zhang, Qi Z <qi.z.zh...@intel.com> > Sent: Tuesday, April 14, 2020 3:49 PM > To: Su, Simei <simei...@intel.com>; Ye, Xiaolong <xiaolong...@intel.com> > Cc: dev@dpdk.org; Cao, Yahui <yahui....@intel.com>; sta...@dpdk.org > Subject: RE: [PATCH] net/ice: support mark only action for FDIR > > > > > -----Original Message----- > > From: Su, Simei <simei...@intel.com> > > Sent: Thursday, April 2, 2020 2:56 PM > > To: Zhang, Qi Z <qi.z.zh...@intel.com>; Ye, Xiaolong > > <xiaolong...@intel.com> > > Cc: dev@dpdk.org; Cao, Yahui <yahui....@intel.com>; Su, Simei > > <simei...@intel.com>; sta...@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: sta...@dpdk.org > > > > Signed-off-by: Simei Su <simei...@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 >