Hi,

> -----Original Message-----
> From: Viacheslav Ovsiienko <viachesl...@mellanox.com>
> Sent: Wednesday, July 8, 2020 11:52 PM
> To: dev@dpdk.org
> Cc: Matan Azrad <ma...@mellanox.com>; Raslan Darawsheh
> <rasl...@mellanox.com>; sta...@dpdk.org
> Subject: [PATCH] common/mlx5: fix physical port name pattern recognition
> 
> This patch makes the Infiniband device physical port name
> recognition more strict. Currently mlx5 PMD might recognize
> the names like "pf0sf0" erroneously as "pf0" and the wrong
> device type (host PF representor) is reported.
> 
> The names like "pf0sf0" belong to PCI subfunctions which
> is currently not supported by mlx5 PMD and this false
> recognition must be eliminated.
> 
> Fixes: 420bbdae89f2 ("net/mlx5: fix host physical function representor
> naming")
> Cc: sta...@dpdk.org
> 
> Signed-off-by: Viacheslav Ovsiienko <viachesl...@mellanox.com>
> ---
>  drivers/common/mlx5/linux/mlx5_common_os.c | 14 +++++++-------
>  1 file changed, 7 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/common/mlx5/linux/mlx5_common_os.c
> b/drivers/common/mlx5/linux/mlx5_common_os.c
> index e74aa89..7bb3ba6 100644
> --- a/drivers/common/mlx5/linux/mlx5_common_os.c
> +++ b/drivers/common/mlx5/linux/mlx5_common_os.c
> @@ -89,7 +89,7 @@
>  mlx5_translate_port_name(const char *port_name_in,
>                        struct mlx5_switch_info *port_info_out)
>  {
> -     char pf_c1, pf_c2, vf_c1, vf_c2;
> +     char pf_c1, pf_c2, vf_c1, vf_c2, eol;
>       char *end;
>       int sc_items;
> 
> @@ -97,9 +97,9 @@
>        * Check for port-name as a string of the form pf0vf0
>        * (support kernel ver >= 5.0 or OFED ver >= 4.6).
>        */
> -     sc_items = sscanf(port_name_in, "%c%c%d%c%c%d",
> +     sc_items = sscanf(port_name_in, "%c%c%d%c%c%d%c",
>                         &pf_c1, &pf_c2, &port_info_out->pf_num,
> -                       &vf_c1, &vf_c2, &port_info_out->port_name);
> +                       &vf_c1, &vf_c2, &port_info_out->port_name,
> &eol);
>       if (sc_items == 6 &&
>           pf_c1 == 'p' && pf_c2 == 'f' &&
>           vf_c1 == 'v' && vf_c2 == 'f') {
> @@ -110,8 +110,8 @@
>        * Check for port-name as a string of the form p0
>        * (support kernel ver >= 5.0, or OFED ver >= 4.6).
>        */
> -     sc_items = sscanf(port_name_in, "%c%d",
> -                       &pf_c1, &port_info_out->port_name);
> +     sc_items = sscanf(port_name_in, "%c%d%c",
> +                       &pf_c1, &port_info_out->port_name, &eol);
>       if (sc_items == 2 && pf_c1 == 'p') {
>               port_info_out->name_type =
> MLX5_PHYS_PORT_NAME_TYPE_UPLINK;
>               return;
> @@ -120,8 +120,8 @@
>        * Check for port-name as a string of the form pf0
>        * (support kernel ver >= 5.7 for HPF representor on BF).
>        */
> -     sc_items = sscanf(port_name_in, "%c%c%d",
> -                       &pf_c1, &pf_c2, &port_info_out->pf_num);
> +     sc_items = sscanf(port_name_in, "%c%c%d%c",
> +                       &pf_c1, &pf_c2, &port_info_out->pf_num, &eol);
>       if (sc_items == 3 && pf_c1 == 'p' && pf_c2 == 'f') {
>               port_info_out->port_name = -1;
>               port_info_out->name_type =
> MLX5_PHYS_PORT_NAME_TYPE_PFHPF;
> --
> 1.8.3.1


Patch applied to next-net-mlx,

Kindest regards,
Raslan Darawsheh

Reply via email to