[dpdk-dev] [PATCH v1 1/4] net/iavf: stop the PCI probe in DCF mode
Ye Xiaolong
xiaolong.ye at intel.com
Mon Mar 9 16:38:13 CET 2020
On 03/09, Haiyue Wang wrote:
>A new DCF PMD will be introduced, which runs on Intel VF hardware, and
>it is a pure software design to control the advance functionality (such
>as switch, ACL) for rest of the VFs.
>
>So if the DCF (Device Config Function) mode is specified by the devarg
>'cap=dcf', then it will stop the PCI probe in the iavf PMD.
>
>Signed-off-by: Haiyue Wang <haiyue.wang at intel.com>
>---
> drivers/net/iavf/iavf_ethdev.c | 41 ++++++++++++++++++++++++++++++++++
> 1 file changed, 41 insertions(+)
>
>diff --git a/drivers/net/iavf/iavf_ethdev.c b/drivers/net/iavf/iavf_ethdev.c
>index 34913f9c4..8ff26c0e7 100644
>--- a/drivers/net/iavf/iavf_ethdev.c
>+++ b/drivers/net/iavf/iavf_ethdev.c
>@@ -1416,9 +1416,49 @@ iavf_dev_uninit(struct rte_eth_dev *dev)
> return 0;
> }
>
>+static int
>+handle_dcf_arg(__rte_unused const char *key, const char *value,
>+ __rte_unused void *arg)
>+{
>+ bool *dcf = arg;
>+
>+ if (arg == NULL || value == NULL)
>+ return -EINVAL;
>+
>+ if (strcmp(value, "dcf") == 0)
>+ *dcf = true;
>+ else
>+ *dcf = false;
>+
>+ return 0;
>+}
>+
>+static bool
>+check_cap_dcf_enable(struct rte_devargs *devargs)
>+{
>+ struct rte_kvargs *kvlist;
>+ bool enable = false;
>+
>+ if (devargs == NULL)
>+ return false;
>+
>+ kvlist = rte_kvargs_parse(devargs->args, NULL);
>+ if (kvlist == NULL)
>+ return false;
>+
>+ rte_kvargs_process(kvlist, "cap", handle_dcf_arg, &enable);
Need error handling for failure case.
>+
>+ rte_kvargs_free(kvlist);
>+
>+ return enable;
>+}
>+
> static int eth_iavf_pci_probe(struct rte_pci_driver *pci_drv __rte_unused,
> struct rte_pci_device *pci_dev)
> {
>+ if (check_cap_dcf_enable(pci_dev->device.devargs))
>+ return 1; /* continue to probe */
This comment is confusing...
>+
> return rte_eth_dev_pci_generic_probe(pci_dev,
> sizeof(struct iavf_adapter), iavf_dev_init);
> }
>@@ -1439,6 +1479,7 @@ static struct rte_pci_driver rte_iavf_pmd = {
> RTE_PMD_REGISTER_PCI(net_iavf, rte_iavf_pmd);
> RTE_PMD_REGISTER_PCI_TABLE(net_iavf, pci_id_iavf_map);
> RTE_PMD_REGISTER_KMOD_DEP(net_iavf, "* igb_uio | vfio-pci");
>+RTE_PMD_REGISTER_PARAM_STRING(net_iavf, "cap=dcf");
> RTE_INIT(iavf_init_log)
> {
> iavf_logtype_init = rte_log_register("pmd.net.iavf.init");
>--
>2.25.1
>
More information about the dev
mailing list