[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