net/ice: add devargs to control pipeline mode

Added a devarg to control the mode in generic flow API.
We use none-pipeline mode by default.

Signed-off-by: Qiming Yang <qiming.yang@intel.com>
Acked-by: Qi Zhang <qi.z.zhang@intel.com>
Reviewed-by: Xiaolong Ye <xiaolong.ye@intel.com>
This commit is contained in:
Qiming Yang 2019-10-17 02:33:53 +08:00 committed by Ferruh Yigit
parent 23ecda2aa5
commit 0998c89a85
4 changed files with 31 additions and 1 deletions

View File

@ -61,6 +61,25 @@ 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 set at one specific stage by setting parameter
``priority``. Currently, we support two stages: priority = 0 or !0. Flows with
priority 0 located at the first pipeline stage which typically be used as a firewall
to drop the packet on a blacklist(we called it permission stage). At this stage,
flow rules are created for the device's exact match engine: switch. Flows with priority
!0 located at the second stage, typically packets are classified here and be steered to
specific queue or queue group (we called it distribution stage), At this stage, flow
rules are created for device's flow director engine.
For none-pipeline mode, ``priority`` is ignored, a flow rule can be created as a flow director
rule or a switch rule depends on its pattern/action and the resource allocation situation,
all flows are virtually at the same pipeline stage.
By default, generic flow API is enabled in none-pipeline mode, user can choose to
use pipeline mode by setting ``devargs`` parameter ``pipeline-mode-support``,
for example::
-w 80:00.0,pipeline-mode-support=1
- ``Protocol extraction for per queue``
Configure the RX queues to do protocol extraction into ``rte_mbuf::udata64``

View File

@ -114,6 +114,8 @@ New Features
* Added support for handling Receive Flex Descriptor.
* Added support for protocol extraction on per Rx queue.
* Added support for the ``RTE_ETH_DEV_CLOSE_REMOVE`` flag.
* Generic filter enhancement
- Supported pipeline mode.
* **Added cryptodev asymmetric session-less operation.**

View File

@ -19,10 +19,12 @@
/* devargs */
#define ICE_SAFE_MODE_SUPPORT_ARG "safe-mode-support"
#define ICE_PIPELINE_MODE_SUPPORT_ARG "pipeline-mode-support"
#define ICE_PROTO_XTR_ARG "proto_xtr"
static const char * const ice_valid_args[] = {
ICE_SAFE_MODE_SUPPORT_ARG,
ICE_PIPELINE_MODE_SUPPORT_ARG,
ICE_PROTO_XTR_ARG,
NULL
};
@ -1833,6 +1835,11 @@ 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 bail;
ret = rte_kvargs_process(kvlist, ICE_PIPELINE_MODE_SUPPORT_ARG,
&parse_bool, &ad->devargs.pipe_mode_support);
bail:
rte_kvargs_free(kvlist);
@ -4298,7 +4305,8 @@ 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_PROTO_XTR_ARG "=[queue:]<vlan|ipv4|ipv6|ipv6_flow|tcp>"
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)
{

View File

@ -289,6 +289,7 @@ struct ice_pf {
struct ice_devargs {
int safe_mode_support;
uint8_t proto_xtr_dflt;
int pipe_mode_support;
uint8_t proto_xtr[ICE_MAX_QUEUE_NUM];
};