net/ice: add flow mark hint
Since not all data paths support flow mark, the driver needs a hint from application to select the correct data path if flow mark is required. The patch introduces a devarg "flow-mark-support" as a workaround solution, since a standard way is still ongoing. Signed-off-by: Qi Zhang <qi.z.zhang@intel.com> Acked-by: Qiming Yang <qiming.yang@intel.com>
This commit is contained in:
parent
c8a9eacb21
commit
3b4888d53d
@ -96,6 +96,18 @@ Runtime Config Options
|
||||
|
||||
-w 80:00.0,pipeline-mode-support=1
|
||||
|
||||
- ``Flow Mark Support`` (default ``0``)
|
||||
|
||||
This is a hint to the driver to select the data path that supports flow mark extraction
|
||||
by default.
|
||||
NOTE: This is an experimental devarg, it will be removed when any of below conditions
|
||||
is ready.
|
||||
1) all data paths support flow mark (currently vPMD does not)
|
||||
2) a new offload like RTE_DEV_RX_OFFLOAD_FLOW_MARK be introduced as a standard way to hint.
|
||||
Example::
|
||||
|
||||
-w 80:00.0,flow-mark-support=1
|
||||
|
||||
- ``Protocol extraction for per queue``
|
||||
|
||||
Configure the RX queues to do protocol extraction into mbuf for protocol
|
||||
|
@ -23,11 +23,13 @@
|
||||
/* devargs */
|
||||
#define ICE_SAFE_MODE_SUPPORT_ARG "safe-mode-support"
|
||||
#define ICE_PIPELINE_MODE_SUPPORT_ARG "pipeline-mode-support"
|
||||
#define ICE_FLOW_MARK_SUPPORT_ARG "flow-mark-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_FLOW_MARK_SUPPORT_ARG,
|
||||
ICE_PROTO_XTR_ARG,
|
||||
NULL
|
||||
};
|
||||
@ -1987,6 +1989,13 @@ static int ice_parse_devargs(struct rte_eth_dev *dev)
|
||||
|
||||
ret = rte_kvargs_process(kvlist, ICE_PIPELINE_MODE_SUPPORT_ARG,
|
||||
&parse_bool, &ad->devargs.pipe_mode_support);
|
||||
if (ret)
|
||||
goto bail;
|
||||
|
||||
ret = rte_kvargs_process(kvlist, ICE_FLOW_MARK_SUPPORT_ARG,
|
||||
&parse_bool, &ad->devargs.flow_mark_support);
|
||||
if (ret)
|
||||
goto bail;
|
||||
|
||||
bail:
|
||||
rte_kvargs_free(kvlist);
|
||||
@ -4562,7 +4571,8 @@ 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_PIPELINE_MODE_SUPPORT_ARG "=<0|1>");
|
||||
ICE_PIPELINE_MODE_SUPPORT_ARG "=<0|1>"
|
||||
ICE_FLOW_MARK_SUPPORT_ARG "=<0|1>");
|
||||
|
||||
RTE_INIT(ice_init_log)
|
||||
{
|
||||
|
@ -391,6 +391,7 @@ struct ice_devargs {
|
||||
int safe_mode_support;
|
||||
uint8_t proto_xtr_dflt;
|
||||
int pipe_mode_support;
|
||||
int flow_mark_support;
|
||||
uint8_t proto_xtr[ICE_MAX_QUEUE_NUM];
|
||||
};
|
||||
|
||||
|
@ -268,6 +268,12 @@ ice_rx_vec_dev_check_default(struct rte_eth_dev *dev)
|
||||
{
|
||||
int i;
|
||||
struct ice_rx_queue *rxq;
|
||||
struct ice_adapter *ad =
|
||||
ICE_DEV_PRIVATE_TO_ADAPTER(dev->data->dev_private);
|
||||
|
||||
/* vPMD does not support flow mark. */
|
||||
if (ad->devargs.flow_mark_support)
|
||||
return -1;
|
||||
|
||||
for (i = 0; i < dev->data->nb_rx_queues; i++) {
|
||||
rxq = dev->data->rx_queues[i];
|
||||
|
Loading…
Reference in New Issue
Block a user