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 + ``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 + stage, priority is ignored. Default, generic flow API is enabled in none 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