> -----Original Message----- > From: Su, Simei <simei...@intel.com> > Sent: Thursday, September 10, 2020 15:38 > To: Zhang, Qi Z <qi.z.zh...@intel.com>; Yang, Qiming <qiming.y...@intel.com> > Cc: dev@dpdk.org; Wang, Haiyue <haiyue.w...@intel.com>; Xing, Beilei > <beilei.x...@intel.com>; Su, > Simei <simei...@intel.com> > Subject: [PATCH v1 2/3] net/ice: add devarg for ACL ipv4 rule number > > This patch enables devargs for ACL ipv4 rule number and refactor > DCF capability selection API to be more flexible. > > Signed-off-by: Simei Su <simei...@intel.com> > ---
> > static int > -ice_dcf_cap_check_handler(__rte_unused const char *key, > - const char *value, __rte_unused void *opaque) > +handle_dcf_arg(__rte_unused const char *key, const char *value, > + __rte_unused void *arg) > { > - if (strcmp(value, "dcf")) > - return -1; > + bool *dcf = arg; > + > + if (arg == NULL || value == NULL) > + return -EINVAL; > + > + if (strcmp(value, "dcf") == 0) > + *dcf = true; > + else > + *dcf = false; > > return 0; > } > > -static int > -ice_dcf_cap_selected(struct rte_devargs *devargs) > +static bool > +check_cap_dcf_enable(struct rte_devargs *devargs) > { > struct rte_kvargs *kvlist; > - const char *key = "cap"; > - int ret = 0; > + bool enable = false; > > if (devargs == NULL) > - return 0; > + return false; > > kvlist = rte_kvargs_parse(devargs->args, NULL); > if (kvlist == NULL) > - return 0; > - > - if (!rte_kvargs_count(kvlist, key)) > - goto exit; > - > - /* dcf capability selected when there's a key-value pair: cap=dcf */ > - if (rte_kvargs_process(kvlist, key, > - ice_dcf_cap_check_handler, NULL) < 0) > - goto exit; > + return false; > > - ret = 1; > + rte_kvargs_process(kvlist, ICE_DCF_CAP, handle_dcf_arg, &enable); > > -exit: > rte_kvargs_free(kvlist); > - return ret; > + > + return enable; > } > > static int eth_ice_dcf_pci_probe(__rte_unused struct rte_pci_driver *pci_drv, > struct rte_pci_device *pci_dev) > { > - if (!ice_dcf_cap_selected(pci_dev->device.devargs)) > - return 1; > + if (!check_cap_dcf_enable(pci_dev->device.devargs)) > + return 1; /* continue to probe */ > I didn't see how flexible about DCF capability selection. ;-) And you add the unneeded comment "/* continue to probe */" that I did before. > return rte_eth_dev_pci_generic_probe(pci_dev, > sizeof(struct ice_dcf_adapter), > diff --git a/drivers/net/ice/ice_ethdev.h b/drivers/net/ice/ice_ethdev.h > index 758caa8..13f4167 100644 > --- a/drivers/net/ice/ice_ethdev.h > +++ b/drivers/net/ice/ice_ethdev.h > @@ -447,6 +447,7 @@ struct ice_devargs { > int pipe_mode_support; > int flow_mark_support; > uint8_t proto_xtr[ICE_MAX_QUEUE_NUM]; > + int acl_ipv4_rules_num; > }; > > /** > -- > 1.8.3.1