> -----Original Message----- > From: dev <dev-boun...@dpdk.org> On Behalf Of Ying Wang > Sent: Tuesday, September 3, 2019 3:15 PM > To: Zhang, Qi Z <qi.z.zh...@intel.com> > Cc: Ye, Xiaolong <xiaolong...@intel.com>; Yang, Qiming > <qiming.y...@intel.com>; dev@dpdk.org; Wang, Ying A > <ying.a.w...@intel.com>; Zhao1, Wei <wei.zh...@intel.com> > Subject: [dpdk-dev] [PATCH 1/4] net/ice: add devargs to control pipeline > mode > > From: Qiming Yang <qiming.y...@intel.com> > > Added a devarg to control the mode in generic flow API. > We use none-pipeline mode by default. > > Signed-off-by: Qiming Yang <qiming.y...@intel.com> > --- > doc/guides/nics/ice.rst | 11 +++++++++++ > drivers/net/ice/ice_ethdev.c | 16 +++++++++++++++- > drivers/net/ice/ice_ethdev.h | 1 + > 3 files changed, 27 insertions(+), 1 deletion(-) > > diff --git a/doc/guides/nics/ice.rst b/doc/guides/nics/ice.rst index > 03819d29f..a8429a535 100644 > --- a/doc/guides/nics/ice.rst > +++ b/doc/guides/nics/ice.rst > @@ -61,6 +61,17 @@ Runtime Config Options > NOTE: In Safe mode, only very limited features are available, features like > RSS, > checksum, fdir, tunneling ... are all disabled. > > +- ``Generic Flow Pipeline Mode Support`` (default ``0``) > + > + In pipeline mode, a flow can be setted at one specific stage by
setted => set > + setting parameter ``priority``. Currently, we support two stages, > + priority 0 for permission and 1 for distributor. For none-pipeline none-pipeline => non-pipeline > + mode, all flows are assumed to be at the same pipeline stage, > + priority is ignored. Default, generic flow API is enabled in none none => non > + pipeline mode, user can choose to use pipeline mode by set ``devargs`` > parameter ``pipeline-mode-support``, for example:: > + > + -w 80:00.0, pipleline-mode-support=1 > + > Driver compilation and testing > ------------------------------ > > diff --git a/drivers/net/ice/ice_ethdev.c b/drivers/net/ice/ice_ethdev.c > index 9aa7506ba..4e0645db1 100644 > --- a/drivers/net/ice/ice_ethdev.c > +++ b/drivers/net/ice/ice_ethdev.c > @@ -19,9 +19,11 @@ > > /* devargs */ > #define ICE_SAFE_MODE_SUPPORT_ARG "safe-mode-support" > +#define ICE_PIPELINE_MODE_SUPPORT_ARG "pipeline-mode-support" > > static const char * const ice_valid_args[] = { > ICE_SAFE_MODE_SUPPORT_ARG, > + ICE_PIPELINE_MODE_SUPPORT_ARG, > NULL > }; > > @@ -1510,7 +1512,18 @@ static int ice_parse_devargs(struct rte_eth_dev > *dev) > > ret = rte_kvargs_process(kvlist, ICE_SAFE_MODE_SUPPORT_ARG, > &parse_bool, &ad- > >devargs.safe_mode_support); > + if (ret) > + goto err_devargs; > + > + ret = rte_kvargs_process(kvlist, > ICE_PIPELINE_MODE_SUPPORT_ARG, > + &parse_bool, &ad- > >devargs.pipeline_mode_support); > + if (ret) > + goto err_devargs; > + > + rte_kvargs_free(kvlist); > + return ret; > > +err_devargs: > rte_kvargs_free(kvlist); > return ret; > } > @@ -3925,7 +3938,8 @@ RTE_PMD_REGISTER_PCI(net_ice, rte_ice_pmd); > RTE_PMD_REGISTER_PCI_TABLE(net_ice, pci_id_ice_map); > RTE_PMD_REGISTER_KMOD_DEP(net_ice, "* igb_uio | uio_pci_generic | > vfio-pci"); RTE_PMD_REGISTER_PARAM_STRING(net_ice, > - ICE_SAFE_MODE_SUPPORT_ARG "=<0|1>"); > + ICE_SAFE_MODE_SUPPORT_ARG "=<0|1>" > + ICE_PIPELINE_MODE_SUPPORT_ARG "=<0|1>"); > > RTE_INIT(ice_init_log) > { > diff --git a/drivers/net/ice/ice_ethdev.h b/drivers/net/ice/ice_ethdev.h > index 926db23d2..9bf5de08d 100644 > --- a/drivers/net/ice/ice_ethdev.h > +++ b/drivers/net/ice/ice_ethdev.h > @@ -285,6 +285,7 @@ struct ice_pf { > */ > struct ice_devargs { > int safe_mode_support; > + int pipeline_mode_support; > }; > > /** > -- > 2.15.1