Sorry, this patch missed the ack line from Andrew: Acked-by: Andrew Rybchenko <andrew.rybche...@oktetlabs.ru>
> -----Original Message----- > From: Xueming(Steven) Li <xuemi...@nvidia.com> > Sent: Monday, July 5, 2021 2:45 PM > Cc: dev@dpdk.org; Xueming(Steven) Li <xuemi...@nvidia.com>; > NBU-Contact-Thomas Monjalon <tho...@monjalon.net>; Matan > Azrad <ma...@nvidia.com>; Shahaf Shuler <shah...@nvidia.com>; Slava Ovsiienko > <viachesl...@nvidia.com>; Andrew Rybchenko > <andrew.rybche...@oktetlabs.ru>; Chas Williams <ch...@att.com>; Min Hu > (Connor) <humi...@huawei.com>; Beilei Xing > <beilei.x...@intel.com>; Jingjing Wu <jingjing...@intel.com> > Subject: [PATCH v8 1/2] devargs: add common key definition > > Adds common devargs key definition for "bus", "class" and "driver". > > Acked-by: Thomas Monjalon <tho...@monjalon.net> > Signed-off-by: Xueming Li <xuemi...@nvidia.com> > --- > drivers/common/mlx5/mlx5_common.h | 2 -- > drivers/common/mlx5/mlx5_common_pci.c | 2 +- > drivers/common/sfc_efx/sfc_efx.c | 7 +++---- > drivers/common/sfc_efx/sfc_efx.h | 2 -- > drivers/net/bonding/rte_eth_bond_args.c | 2 +- > drivers/net/i40e/i40e_ethdev_vf.c | 5 ++--- > drivers/net/iavf/iavf_ethdev.c | 5 ++--- > drivers/net/mlx5/mlx5.c | 4 ++-- > drivers/net/sfc/sfc_kvargs.c | 2 +- > drivers/vdpa/mlx5/mlx5_vdpa.c | 2 +- > lib/eal/common/eal_common_devargs.c | 12 ++++++------ > lib/eal/include/rte_devargs.h | 24 ++++++++++++++++++++++++ > 12 files changed, 43 insertions(+), 26 deletions(-) > > diff --git a/drivers/common/mlx5/mlx5_common.h > b/drivers/common/mlx5/mlx5_common.h > index 1fbefe0fa6..306f2f1ab7 100644 > --- a/drivers/common/mlx5/mlx5_common.h > +++ b/drivers/common/mlx5/mlx5_common.h > @@ -208,8 +208,6 @@ __rte_internal > int mlx5_get_ifname_sysfs(const char *ibdev_path, char *ifname); > > > -#define MLX5_CLASS_ARG_NAME "class" > - > enum mlx5_class { > MLX5_CLASS_INVALID, > MLX5_CLASS_NET = RTE_BIT64(0), > diff --git a/drivers/common/mlx5/mlx5_common_pci.c > b/drivers/common/mlx5/mlx5_common_pci.c > index 3f16cd21cf..34747c4e07 100644 > --- a/drivers/common/mlx5/mlx5_common_pci.c > +++ b/drivers/common/mlx5/mlx5_common_pci.c > @@ -118,7 +118,7 @@ bus_cmdline_options_handler(__rte_unused const char *key, > static int parse_class_options(const struct > rte_devargs *devargs) { > - const char *key = MLX5_CLASS_ARG_NAME; > + const char *key = RTE_DEVARGS_KEY_CLASS; > struct rte_kvargs *kvlist; > int ret = 0; > > diff --git a/drivers/common/sfc_efx/sfc_efx.c > b/drivers/common/sfc_efx/sfc_efx.c > index 0b78933d9f..2dc5545760 100644 > --- a/drivers/common/sfc_efx/sfc_efx.c > +++ b/drivers/common/sfc_efx/sfc_efx.c > @@ -42,7 +42,6 @@ enum sfc_efx_dev_class sfc_efx_dev_class_get(struct > rte_devargs *devargs) { > struct rte_kvargs *kvargs; > - const char *key = SFC_EFX_KVARG_DEV_CLASS; > enum sfc_efx_dev_class dev_class = SFC_EFX_DEV_CLASS_NET; > > if (devargs == NULL) > @@ -52,9 +51,9 @@ sfc_efx_dev_class_get(struct rte_devargs *devargs) > if (kvargs == NULL) > return dev_class; > > - if (rte_kvargs_count(kvargs, key) != 0) { > - rte_kvargs_process(kvargs, key, sfc_efx_kvarg_dev_class_handler, > - &dev_class); > + if (rte_kvargs_count(kvargs, RTE_DEVARGS_KEY_CLASS) != 0) { > + rte_kvargs_process(kvargs, RTE_DEVARGS_KEY_CLASS, > + sfc_efx_kvarg_dev_class_handler, &dev_class); > } > > rte_kvargs_free(kvargs); > diff --git a/drivers/common/sfc_efx/sfc_efx.h > b/drivers/common/sfc_efx/sfc_efx.h > index 6b6164cb1f..c16eca60f3 100644 > --- a/drivers/common/sfc_efx/sfc_efx.h > +++ b/drivers/common/sfc_efx/sfc_efx.h > @@ -19,8 +19,6 @@ > extern "C" { > #endif > > -#define SFC_EFX_KVARG_DEV_CLASS "class" > - > enum sfc_efx_dev_class { > SFC_EFX_DEV_CLASS_INVALID = 0, > SFC_EFX_DEV_CLASS_NET, > diff --git a/drivers/net/bonding/rte_eth_bond_args.c > b/drivers/net/bonding/rte_eth_bond_args.c > index 764b1b8c8e..5406e1c934 100644 > --- a/drivers/net/bonding/rte_eth_bond_args.c > +++ b/drivers/net/bonding/rte_eth_bond_args.c > @@ -18,7 +18,7 @@ const char *pmd_bond_init_valid_arguments[] = { > PMD_BOND_SOCKET_ID_KVARG, > PMD_BOND_MAC_ADDR_KVARG, > PMD_BOND_AGG_MODE_KVARG, > - "driver", > + RTE_DEVARGS_KEY_DRIVER, > NULL > }; > > diff --git a/drivers/net/i40e/i40e_ethdev_vf.c > b/drivers/net/i40e/i40e_ethdev_vf.c > index 385ebedcd3..0cfe13b7b2 100644 > --- a/drivers/net/i40e/i40e_ethdev_vf.c > +++ b/drivers/net/i40e/i40e_ethdev_vf.c > @@ -1660,7 +1660,6 @@ static int > i40evf_driver_selected(struct rte_devargs *devargs) { > struct rte_kvargs *kvlist; > - const char *key = "driver"; > int ret = 0; > > if (devargs == NULL) > @@ -1670,13 +1669,13 @@ i40evf_driver_selected(struct rte_devargs *devargs) > if (kvlist == NULL) > return 0; > > - if (!rte_kvargs_count(kvlist, key)) > + if (!rte_kvargs_count(kvlist, RTE_DEVARGS_KEY_DRIVER)) > goto exit; > > /* i40evf driver selected when there's a key-value pair: > * driver=i40evf > */ > - if (rte_kvargs_process(kvlist, key, > + if (rte_kvargs_process(kvlist, RTE_DEVARGS_KEY_DRIVER, > i40evf_check_driver_handler, NULL) < 0) > goto exit; > > diff --git a/drivers/net/iavf/iavf_ethdev.c b/drivers/net/iavf/iavf_ethdev.c > index 5290588b17..472538181e 100644 > --- a/drivers/net/iavf/iavf_ethdev.c > +++ b/drivers/net/iavf/iavf_ethdev.c > @@ -2448,7 +2448,6 @@ static int > iavf_drv_i40evf_selected(struct rte_devargs *devargs, uint16_t device_id) { > struct rte_kvargs *kvlist; > - const char *key = "driver"; > int ret = 0; > > if (device_id != IAVF_DEV_ID_VF && > @@ -2464,13 +2463,13 @@ iavf_drv_i40evf_selected(struct rte_devargs *devargs, > uint16_t device_id) > if (kvlist == NULL) > return 0; > > - if (!rte_kvargs_count(kvlist, key)) > + if (!rte_kvargs_count(kvlist, RTE_DEVARGS_KEY_DRIVER)) > goto exit; > > /* i40evf driver selected when there's a key-value pair: > * driver=i40evf > */ > - if (rte_kvargs_process(kvlist, key, > + if (rte_kvargs_process(kvlist, RTE_DEVARGS_KEY_DRIVER, > iavf_drv_i40evf_check_handler, NULL) < 0) > goto exit; > > diff --git a/drivers/net/mlx5/mlx5.c b/drivers/net/mlx5/mlx5.c index > cf1815cb74..d0faa45944 100644 > --- a/drivers/net/mlx5/mlx5.c > +++ b/drivers/net/mlx5/mlx5.c > @@ -1931,7 +1931,7 @@ mlx5_args_check(const char *key, const char *val, void > *opaque) > config->max_dump_files_num = tmp; > } else if (strcmp(MLX5_LRO_TIMEOUT_USEC, key) == 0) { > config->lro.timeout = tmp; > - } else if (strcmp(MLX5_CLASS_ARG_NAME, key) == 0) { > + } else if (strcmp(RTE_DEVARGS_KEY_CLASS, key) == 0) { > DRV_LOG(DEBUG, "class argument is %s.", val); > } else if (strcmp(MLX5_HP_BUF_SIZE, key) == 0) { > config->log_hp_size = tmp; > @@ -2002,7 +2002,7 @@ mlx5_args(struct mlx5_dev_config *config, struct > rte_devargs *devargs) > MLX5_REPRESENTOR, > MLX5_MAX_DUMP_FILES_NUM, > MLX5_LRO_TIMEOUT_USEC, > - MLX5_CLASS_ARG_NAME, > + RTE_DEVARGS_KEY_CLASS, > MLX5_HP_BUF_SIZE, > MLX5_RECLAIM_MEM, > MLX5_SYS_MEM_EN, > diff --git a/drivers/net/sfc/sfc_kvargs.c b/drivers/net/sfc/sfc_kvargs.c > index 0efa92ed28..974c05e68e 100644 > --- a/drivers/net/sfc/sfc_kvargs.c > +++ b/drivers/net/sfc/sfc_kvargs.c > @@ -28,7 +28,7 @@ sfc_kvargs_parse(struct sfc_adapter *sa) > SFC_KVARG_TX_DATAPATH, > SFC_KVARG_FW_VARIANT, > SFC_KVARG_RXD_WAIT_TIMEOUT_NS, > - SFC_EFX_KVARG_DEV_CLASS, > + RTE_DEVARGS_KEY_CLASS, > NULL, > }; > > diff --git a/drivers/vdpa/mlx5/mlx5_vdpa.c b/drivers/vdpa/mlx5/mlx5_vdpa.c > index e5e03e6582..8b5bfd8c3d 100644 > --- a/drivers/vdpa/mlx5/mlx5_vdpa.c > +++ b/drivers/vdpa/mlx5/mlx5_vdpa.c > @@ -588,7 +588,7 @@ mlx5_vdpa_args_check_handler(const char *key, const char > *val, void *opaque) > unsigned long tmp; > int n_cores = sysconf(_SC_NPROCESSORS_ONLN); > > - if (strcmp(key, "class") == 0) > + if (strcmp(key, RTE_DEVARGS_KEY_CLASS) == 0) > return 0; > errno = 0; > tmp = strtoul(val, NULL, 0); > diff --git a/lib/eal/common/eal_common_devargs.c > b/lib/eal/common/eal_common_devargs.c > index b31ac879a9..23aaf8b7e4 100644 > --- a/lib/eal/common/eal_common_devargs.c > +++ b/lib/eal/common/eal_common_devargs.c > @@ -49,9 +49,9 @@ rte_devargs_layers_parse(struct rte_devargs *devargs, > const char *str; > struct rte_kvargs *kvlist; > } layers[] = { > - { "bus=", NULL, NULL, }, > - { "class=", NULL, NULL, }, > - { "driver=", NULL, NULL, }, > + { RTE_DEVARGS_KEY_BUS "=", NULL, NULL, }, > + { RTE_DEVARGS_KEY_CLASS "=", NULL, NULL, }, > + { RTE_DEVARGS_KEY_DRIVER "=", NULL, NULL, }, > }; > struct rte_kvargs_pair *kv = NULL; > struct rte_class *cls = NULL; > @@ -118,7 +118,7 @@ rte_devargs_layers_parse(struct rte_devargs *devargs, > if (layers[i].kvlist == NULL) > continue; > kv = &layers[i].kvlist->pairs[0]; > - if (strcmp(kv->key, "bus") == 0) { > + if (strcmp(kv->key, RTE_DEVARGS_KEY_BUS) == 0) { > bus = rte_bus_find_by_name(kv->value); > if (bus == NULL) { > RTE_LOG(ERR, EAL, "Could not find bus > \"%s\"\n", @@ -126,7 +126,7 @@ > rte_devargs_layers_parse(struct rte_devargs *devargs, > ret = -EFAULT; > goto get_out; > } > - } else if (strcmp(kv->key, "class") == 0) { > + } else if (strcmp(kv->key, RTE_DEVARGS_KEY_CLASS) == 0) { > cls = rte_class_find_by_name(kv->value); > if (cls == NULL) { > RTE_LOG(ERR, EAL, "Could not find class > \"%s\"\n", @@ -134,7 +134,7 @@ > rte_devargs_layers_parse(struct rte_devargs *devargs, > ret = -EFAULT; > goto get_out; > } > - } else if (strcmp(kv->key, "driver") == 0) { > + } else if (strcmp(kv->key, RTE_DEVARGS_KEY_DRIVER) == 0) { > /* Ignore */ > continue; > } > diff --git a/lib/eal/include/rte_devargs.h b/lib/eal/include/rte_devargs.h > index 1e595b3c51..cd90944fe8 100644 > --- a/lib/eal/include/rte_devargs.h > +++ b/lib/eal/include/rte_devargs.h > @@ -25,6 +25,30 @@ extern "C" { > #include <rte_compat.h> > #include <rte_bus.h> > > +/** > + * Bus type key in global devargs syntax. > + * > + * Legacy devargs parser doesn't use this key as bus type > + * is resolved as first optional value separated by ":". > + */ > +#define RTE_DEVARGS_KEY_BUS "bus" > + > +/** > + * Class type key in global devargs syntax. > + * > + * Legacy devargs parser doesn't parse class type. PMD driver is > + * encouraged to use this key to resolve class type. > + */ > +#define RTE_DEVARGS_KEY_CLASS "class" > + > +/** > + * Driver type key in global devargs syntax. > + * > + * Legacy devargs parser doesn't parse driver type. PMD driver is > + * encouraged to use this key to resolve driver type. > + */ > +#define RTE_DEVARGS_KEY_DRIVER "driver" > + > /** > * Type of generic device > */ > -- > 2.25.1