[PATCH v3] app/testpmd: fix devargs format in port attach
Kevin Traynor
ktraynor at redhat.com
Wed Nov 5 15:56:23 CET 2025
On 31/10/2025 06:18, Gregory Etelson wrote:
> The port attach procedure discarded PCI port devargs provided
> by application.
> The patch restores PCI port devargs.
>
There is a bugzilla for this issue, so it can be added to the commit
Bugzilla ID: 1815
> Fixes: 12c2405989f6 ("app/testpmd: canonicalize short PCI name format")
>
> Signed-off-by: Gregory Etelson <getelson at nvidia.com>
> Acked-by: Dariusz Sosnowski <dsosnowski at nvidia.com>
> ---
> v2: add buf_size parameter to convert_pci_address_format()
> v3: use snprintf()
> ---
> app/test-pmd/testpmd.c | 15 ++++++++++++---
> 1 file changed, 12 insertions(+), 3 deletions(-)
>
> diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c
> index 2360da3a48..b10f6baee2 100644
> --- a/app/test-pmd/testpmd.c
> +++ b/app/test-pmd/testpmd.c
> @@ -3417,6 +3417,7 @@ convert_pci_address_format(const char *identifier, char *pci_buffer, size_t buf_
> {
> struct rte_devargs da;
> struct rte_pci_addr pci_addr;
> + size_t pci_len;
>
> if (rte_devargs_parse(&da, identifier) != 0)
> return NULL;
> @@ -3431,6 +3432,8 @@ convert_pci_address_format(const char *identifier, char *pci_buffer, size_t buf_
> return NULL;
>
> rte_pci_device_name(&pci_addr, pci_buffer, buf_size);
> + pci_len = strlen(pci_buffer);
> + snprintf(pci_buffer + pci_len, buf_size - pci_len, ",%s", da.args);
> return pci_buffer;
> }
>
> @@ -3439,8 +3442,8 @@ attach_port(char *identifier)
> {
> portid_t pi;
> struct rte_dev_iterator iterator;
> - char *long_identifier;
> - char long_format[PCI_PRI_STR_SIZE];
> + char *long_format, *long_identifier;
> + size_t long_format_size;
>
> printf("Attaching a new port...\n");
>
> @@ -3448,9 +3451,15 @@ attach_port(char *identifier)
> fprintf(stderr, "Invalid parameters are specified\n");
> return;
> }
> + long_format_size = strlen(identifier) + PCI_PRI_STR_SIZE;
> + long_format = alloca(long_format_size);
> + if (long_format == NULL) {
> + TESTPMD_LOG(ERR, "Failed to attach port %s - allocation failure\n", identifier);
> + return;
> + }
>
> /* For PCI device convert to canonical format */
> - long_identifier = convert_pci_address_format(identifier, long_format, sizeof(long_format));
> + long_identifier = convert_pci_address_format(identifier, long_format, long_format_size);
> if (long_identifier != NULL)
> identifier = long_identifier;
>
More information about the dev
mailing list