patches for DPDK stable branches
 help / color / Atom feed
* [dpdk-stable] [PATCH] net/mlx5: fix host physical function representor naming
@ 2020-06-23  7:48 Viacheslav Ovsiienko
  2020-06-23  8:10 ` Matan Azrad
  2020-06-23 14:00 ` Raslan Darawsheh
  0 siblings, 2 replies; 3+ messages in thread
From: Viacheslav Ovsiienko @ 2020-06-23  7:48 UTC (permalink / raw)
  To: dev; +Cc: matan, rasland, stable

The new kernel adds the names like "pf0" for Host PCI physical
function representor on Bluefield SmartNIC hosts. This patch
provides correct HPF representor recognition over the kernel
versions 5.7 and laters.

The following port naming formats are supported:

  - missing physical port name (no sysfs/netlink key) at all,
    master is assumed

  - decimal digits (for example "12"), representor is
    assumed, the value is the index of attached VF

  - "p" followed by decimal digits, for example "p2", master
    is assumed

  - "pf" followed by PF index, for example "pf0", Host PF
     representor is assumed on SmartNIC systems.

  - "pf" followed by PF index concatenated with "vf" followed by
     VF index, for example "pf0vf1", representor is assumed.
     If index of VF is "-1" it is a special case of Host PF
     representor, this representor must be indexed in devargs
     as 65535, for example representor=[0-3,65535] will
     allow representors for VF0, VF1, VF2, VF3 and for host PF.

Fixes: 79aa430721b1 ("common/mlx5: split common file under Linux directory")
Cc: stable@dpdk.org

Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
---
 drivers/common/mlx5/linux/mlx5_common_os.c | 11 +++++++++++
 drivers/common/mlx5/linux/mlx5_nl.c        |  2 ++
 drivers/common/mlx5/mlx5_common.h          |  1 +
 drivers/net/mlx5/linux/mlx5_ethdev_os.c    |  2 ++
 drivers/net/mlx5/linux/mlx5_os.c           |  2 ++
 5 files changed, 18 insertions(+)

diff --git a/drivers/common/mlx5/linux/mlx5_common_os.c b/drivers/common/mlx5/linux/mlx5_common_os.c
index 4e04d70..08e8ebb 100644
--- a/drivers/common/mlx5/linux/mlx5_common_os.c
+++ b/drivers/common/mlx5/linux/mlx5_common_os.c
@@ -114,6 +114,17 @@
 		port_info_out->name_type = MLX5_PHYS_PORT_NAME_TYPE_UPLINK;
 		return;
 	}
+	/*
+	 * 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);
+	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;
+		return;
+	}
 	/* Check for port-name as a number (support kernel ver < 5.0 */
 	errno = 0;
 	port_info_out->port_name = strtol(port_name_in, &end, 0);
diff --git a/drivers/common/mlx5/linux/mlx5_nl.c b/drivers/common/mlx5/linux/mlx5_nl.c
index 2943704..dc504d8 100644
--- a/drivers/common/mlx5/linux/mlx5_nl.c
+++ b/drivers/common/mlx5/linux/mlx5_nl.c
@@ -1145,6 +1145,8 @@ struct mlx5_nl_ifindex_data {
 		/* Legacy representors naming schema. */
 		switch_info->representor = !num_vf_set;
 		break;
+	case MLX5_PHYS_PORT_NAME_TYPE_PFHPF:
+		/* Fallthrough */
 	case MLX5_PHYS_PORT_NAME_TYPE_PFVF:
 		/* New representors naming schema. */
 		switch_info->representor = 1;
diff --git a/drivers/common/mlx5/mlx5_common.h b/drivers/common/mlx5/mlx5_common.h
index 8e679c6..6b19399 100644
--- a/drivers/common/mlx5/mlx5_common.h
+++ b/drivers/common/mlx5/mlx5_common.h
@@ -145,6 +145,7 @@ enum mlx5_nl_phys_port_name_type {
 	MLX5_PHYS_PORT_NAME_TYPE_LEGACY, /* before kernel ver < 5.0 */
 	MLX5_PHYS_PORT_NAME_TYPE_UPLINK, /* p0, kernel ver >= 5.0 */
 	MLX5_PHYS_PORT_NAME_TYPE_PFVF, /* pf0vf0, kernel ver >= 5.0 */
+	MLX5_PHYS_PORT_NAME_TYPE_PFHPF, /* pf0, kernel ver >= 5.7, HPF rep */
 	MLX5_PHYS_PORT_NAME_TYPE_UNKNOWN, /* Unrecognized. */
 };
 
diff --git a/drivers/net/mlx5/linux/mlx5_ethdev_os.c b/drivers/net/mlx5/linux/mlx5_ethdev_os.c
index ab47cb5..c582051 100644
--- a/drivers/net/mlx5/linux/mlx5_ethdev_os.c
+++ b/drivers/net/mlx5/linux/mlx5_ethdev_os.c
@@ -1176,6 +1176,8 @@ struct ethtool_link_settings {
 		/* Legacy representors naming schema. */
 		switch_info->representor = !device_dir;
 		break;
+	case MLX5_PHYS_PORT_NAME_TYPE_PFHPF:
+		/* Fallthrough */
 	case MLX5_PHYS_PORT_NAME_TYPE_PFVF:
 		/* New representors naming schema. */
 		switch_info->representor = 1;
diff --git a/drivers/net/mlx5/linux/mlx5_os.c b/drivers/net/mlx5/linux/mlx5_os.c
index 0e12b10..1271b42 100644
--- a/drivers/net/mlx5/linux/mlx5_os.c
+++ b/drivers/net/mlx5/linux/mlx5_os.c
@@ -1563,6 +1563,8 @@
 					if (list[ns].info.port_name == bd)
 						ns++;
 					break;
+				case MLX5_PHYS_PORT_NAME_TYPE_PFHPF:
+					/* Fallthrough */
 				case MLX5_PHYS_PORT_NAME_TYPE_PFVF:
 					if (list[ns].info.pf_num == bd)
 						ns++;
-- 
1.8.3.1


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [dpdk-stable] [PATCH] net/mlx5: fix host physical function representor naming
  2020-06-23  7:48 [dpdk-stable] [PATCH] net/mlx5: fix host physical function representor naming Viacheslav Ovsiienko
@ 2020-06-23  8:10 ` Matan Azrad
  2020-06-23 14:00 ` Raslan Darawsheh
  1 sibling, 0 replies; 3+ messages in thread
From: Matan Azrad @ 2020-06-23  8:10 UTC (permalink / raw)
  To: Slava Ovsiienko, dev; +Cc: Raslan Darawsheh, stable



From: Viacheslav Ovsiienko
> Sent: Tuesday, June 23, 2020 10:49 AM
> To: dev@dpdk.org
> Cc: Matan Azrad <matan@mellanox.com>; Raslan Darawsheh
> <rasland@mellanox.com>; stable@dpdk.org
> Subject: [PATCH] net/mlx5: fix host physical function representor naming
> 
> The new kernel adds the names like "pf0" for Host PCI physical function
> representor on Bluefield SmartNIC hosts. This patch provides correct HPF
> representor recognition over the kernel versions 5.7 and laters.
> 
> The following port naming formats are supported:
> 
>   - missing physical port name (no sysfs/netlink key) at all,
>     master is assumed
> 
>   - decimal digits (for example "12"), representor is
>     assumed, the value is the index of attached VF
> 
>   - "p" followed by decimal digits, for example "p2", master
>     is assumed
> 
>   - "pf" followed by PF index, for example "pf0", Host PF
>      representor is assumed on SmartNIC systems.
> 
>   - "pf" followed by PF index concatenated with "vf" followed by
>      VF index, for example "pf0vf1", representor is assumed.
>      If index of VF is "-1" it is a special case of Host PF
>      representor, this representor must be indexed in devargs
>      as 65535, for example representor=[0-3,65535] will
>      allow representors for VF0, VF1, VF2, VF3 and for host PF.
> 
> Fixes: 79aa430721b1 ("common/mlx5: split common file under Linux
> directory")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
Acked-by: Matan Azrad <matan@mellanox.com>

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [dpdk-stable] [PATCH] net/mlx5: fix host physical function representor naming
  2020-06-23  7:48 [dpdk-stable] [PATCH] net/mlx5: fix host physical function representor naming Viacheslav Ovsiienko
  2020-06-23  8:10 ` Matan Azrad
@ 2020-06-23 14:00 ` Raslan Darawsheh
  1 sibling, 0 replies; 3+ messages in thread
From: Raslan Darawsheh @ 2020-06-23 14:00 UTC (permalink / raw)
  To: Slava Ovsiienko, dev; +Cc: Matan Azrad, stable

Hi,

> -----Original Message-----
> From: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
> Sent: Tuesday, June 23, 2020 10:49 AM
> To: dev@dpdk.org
> Cc: Matan Azrad <matan@mellanox.com>; Raslan Darawsheh
> <rasland@mellanox.com>; stable@dpdk.org
> Subject: [PATCH] net/mlx5: fix host physical function representor naming
> 
> The new kernel adds the names like "pf0" for Host PCI physical
> function representor on Bluefield SmartNIC hosts. This patch
> provides correct HPF representor recognition over the kernel
> versions 5.7 and laters.
> 
> The following port naming formats are supported:
> 
>   - missing physical port name (no sysfs/netlink key) at all,
>     master is assumed
> 
>   - decimal digits (for example "12"), representor is
>     assumed, the value is the index of attached VF
> 
>   - "p" followed by decimal digits, for example "p2", master
>     is assumed
> 
>   - "pf" followed by PF index, for example "pf0", Host PF
>      representor is assumed on SmartNIC systems.
> 
>   - "pf" followed by PF index concatenated with "vf" followed by
>      VF index, for example "pf0vf1", representor is assumed.
>      If index of VF is "-1" it is a special case of Host PF
>      representor, this representor must be indexed in devargs
>      as 65535, for example representor=[0-3,65535] will
>      allow representors for VF0, VF1, VF2, VF3 and for host PF.
> 
> Fixes: 79aa430721b1 ("common/mlx5: split common file under Linux
> directory")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
> ---
>  drivers/common/mlx5/linux/mlx5_common_os.c | 11 +++++++++++
>  drivers/common/mlx5/linux/mlx5_nl.c        |  2 ++
>  drivers/common/mlx5/mlx5_common.h          |  1 +
>  drivers/net/mlx5/linux/mlx5_ethdev_os.c    |  2 ++
>  drivers/net/mlx5/linux/mlx5_os.c           |  2 ++
>  5 files changed, 18 insertions(+)
> 
> diff --git a/drivers/common/mlx5/linux/mlx5_common_os.c
> b/drivers/common/mlx5/linux/mlx5_common_os.c
> index 4e04d70..08e8ebb 100644
> --- a/drivers/common/mlx5/linux/mlx5_common_os.c
> +++ b/drivers/common/mlx5/linux/mlx5_common_os.c
> @@ -114,6 +114,17 @@
>  		port_info_out->name_type =
> MLX5_PHYS_PORT_NAME_TYPE_UPLINK;
>  		return;
>  	}
> +	/*
> +	 * 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);
> +	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;
> +		return;
> +	}
>  	/* Check for port-name as a number (support kernel ver < 5.0 */
>  	errno = 0;
>  	port_info_out->port_name = strtol(port_name_in, &end, 0);
> diff --git a/drivers/common/mlx5/linux/mlx5_nl.c
> b/drivers/common/mlx5/linux/mlx5_nl.c
> index 2943704..dc504d8 100644
> --- a/drivers/common/mlx5/linux/mlx5_nl.c
> +++ b/drivers/common/mlx5/linux/mlx5_nl.c
> @@ -1145,6 +1145,8 @@ struct mlx5_nl_ifindex_data {
>  		/* Legacy representors naming schema. */
>  		switch_info->representor = !num_vf_set;
>  		break;
> +	case MLX5_PHYS_PORT_NAME_TYPE_PFHPF:
> +		/* Fallthrough */
>  	case MLX5_PHYS_PORT_NAME_TYPE_PFVF:
>  		/* New representors naming schema. */
>  		switch_info->representor = 1;
> diff --git a/drivers/common/mlx5/mlx5_common.h
> b/drivers/common/mlx5/mlx5_common.h
> index 8e679c6..6b19399 100644
> --- a/drivers/common/mlx5/mlx5_common.h
> +++ b/drivers/common/mlx5/mlx5_common.h
> @@ -145,6 +145,7 @@ enum mlx5_nl_phys_port_name_type {
>  	MLX5_PHYS_PORT_NAME_TYPE_LEGACY, /* before kernel ver < 5.0
> */
>  	MLX5_PHYS_PORT_NAME_TYPE_UPLINK, /* p0, kernel ver >= 5.0 */
>  	MLX5_PHYS_PORT_NAME_TYPE_PFVF, /* pf0vf0, kernel ver >= 5.0
> */
> +	MLX5_PHYS_PORT_NAME_TYPE_PFHPF, /* pf0, kernel ver >= 5.7,
> HPF rep */
>  	MLX5_PHYS_PORT_NAME_TYPE_UNKNOWN, /* Unrecognized. */
>  };
> 
> diff --git a/drivers/net/mlx5/linux/mlx5_ethdev_os.c
> b/drivers/net/mlx5/linux/mlx5_ethdev_os.c
> index ab47cb5..c582051 100644
> --- a/drivers/net/mlx5/linux/mlx5_ethdev_os.c
> +++ b/drivers/net/mlx5/linux/mlx5_ethdev_os.c
> @@ -1176,6 +1176,8 @@ struct ethtool_link_settings {
>  		/* Legacy representors naming schema. */
>  		switch_info->representor = !device_dir;
>  		break;
> +	case MLX5_PHYS_PORT_NAME_TYPE_PFHPF:
> +		/* Fallthrough */
>  	case MLX5_PHYS_PORT_NAME_TYPE_PFVF:
>  		/* New representors naming schema. */
>  		switch_info->representor = 1;
> diff --git a/drivers/net/mlx5/linux/mlx5_os.c
> b/drivers/net/mlx5/linux/mlx5_os.c
> index 0e12b10..1271b42 100644
> --- a/drivers/net/mlx5/linux/mlx5_os.c
> +++ b/drivers/net/mlx5/linux/mlx5_os.c
> @@ -1563,6 +1563,8 @@
>  					if (list[ns].info.port_name == bd)
>  						ns++;
>  					break;
> +				case
> MLX5_PHYS_PORT_NAME_TYPE_PFHPF:
> +					/* Fallthrough */
>  				case MLX5_PHYS_PORT_NAME_TYPE_PFVF:
>  					if (list[ns].info.pf_num == bd)
>  						ns++;
> --
> 1.8.3.1


Patch applied to next-net-mlx,

Kindest regards,
Raslan Darawsheh

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, back to index

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-06-23  7:48 [dpdk-stable] [PATCH] net/mlx5: fix host physical function representor naming Viacheslav Ovsiienko
2020-06-23  8:10 ` Matan Azrad
2020-06-23 14:00 ` Raslan Darawsheh

patches for DPDK stable branches

Archives are clonable:
	git clone --mirror http://inbox.dpdk.org/stable/0 stable/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 stable stable/ http://inbox.dpdk.org/stable \
		stable@dpdk.org
	public-inbox-index stable


Newsgroup available over NNTP:
	nntp://inbox.dpdk.org/inbox.dpdk.stable


AGPL code for this site: git clone https://public-inbox.org/ public-inbox