On 09/04, Ying Wang wrote: >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 setting >parameter
s/setted/set >+ ``priority``. Currently, we support two stages, priority 0 for permission >and 1 for >+ distributor. For none-pipeline mode, all flows are assumed to be at the >same pipeline Can we have more description of the 'permission' and 'distributor' in the doc? And we also need update in 19.11 release note, maybe in Ying's patch. >+ stage, priority is ignored. Default, generic flow API is enabled in none >pipeline mode, s/Default/By default >+ user can choose to use pipeline mode by set ``devargs`` parameter >``pipeline-mode-support``, s/set/setting >+ 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; > These 2 lines are duplicated with below code. >+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 >