[dpdk-dev] [PATCH] common/mlx5: fix physical port name pattern recognition

Raslan Darawsheh rasland at mellanox.com
Thu Jul 9 14:01:38 CEST 2020


Hi,

> -----Original Message-----
> From: Viacheslav Ovsiienko <viacheslavo at mellanox.com>
> Sent: Wednesday, July 8, 2020 11:52 PM
> To: dev at dpdk.org
> Cc: Matan Azrad <matan at mellanox.com>; Raslan Darawsheh
> <rasland at mellanox.com>; stable at 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: stable at dpdk.org
> 
> Signed-off-by: Viacheslav Ovsiienko <viacheslavo at 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


More information about the dev mailing list