bus: add device arguments name parsing
authorXueming Li <xuemingl@nvidia.com>
Tue, 13 Apr 2021 03:14:11 +0000 (03:14 +0000)
committerThomas Monjalon <thomas@monjalon.net>
Thu, 2 Sep 2021 14:58:19 +0000 (16:58 +0200)
commitd2a66ad79480425dc510dc5015918d1c8b7db508
tree0b82d7fc00a5fbec5d1dfda51b7a4770d3788d76
parenteeedef704c11bd74c367d62838700bdb8e5b573f
bus: add device arguments name parsing

For device probe and iterator, devargs name was key information,
parsed by rte_devargs_parse. In legacy parser, devargs name was
extracted after bus name:
  bus:name,kv_arguments,,,
Example:
  pci:83:00.0,arguments,...
  vdev:pcap0,...

To be compatible with legacy parser, this patch introduces new
bus driver API devargs_parse to parse devargs and update devargs name.
If devargs_parse not implemented by bus driver, the new syntax parser
rte_devargs_layers_parse default will resolve devargs name from bus's
"name" argument.

Different bus driver might choose different keys from arguments with
unified format. The PCI bus implementation fills the devargs name with
the "addr" argument, example:
 -a bus=pci,addr=83:00.0/class=eth/driver=mlx5,...
    name: 0000:03:00.0
 -a bus=vdev,name=pcap0/class=eth/driver=pcap,...
    name:pcap0

Signed-off-by: Xueming Li <xuemingl@nvidia.com>
Reviewed-by: Gaetan Rivet <grive@u256.net>
drivers/bus/pci/pci_common.c
drivers/bus/pci/pci_params.c
drivers/bus/pci/private.h
lib/eal/common/eal_common_devargs.c
lib/eal/include/rte_bus.h