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 <[email protected]>
> Acked-by: Dariusz Sosnowski <[email protected]>
> ---
> 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;
>  

Reply via email to