net/mlx5: fix switch port id when representor in bonding

Message ID 1604469895-418435-1-git-send-email-dongz@mellanox.com (mailing list archive)
State Accepted, archived
Delegated to: Raslan Darawsheh
Headers
Series net/mlx5: fix switch port id when representor in bonding |

Checks

Context Check Description
ci/checkpatch warning coding style issues
ci/Intel-compilation success Compilation OK
ci/travis-robot success Travis build: passed
ci/iol-testing success Testing PASS
ci/iol-intel-Functional fail Functional Testing issues
ci/iol-intel-Performance success Performance Testing PASS
ci/iol-mellanox-Performance success Performance Testing PASS

Commit Message

Bill Zhou Nov. 4, 2020, 6:04 a.m. UTC
  From: Bill Zhou <dongzhou@nvidia.com>

In the bonding configurations the port switch id for representors
was composed of pf index in bonding as the 1 msb and the representor's
index as the remaining 15 lsbs. The special corner case for the host
PF representor on BF setups with representor id 0xFFFF was missed as well.

The new switch port id consists of 4 msbs for the pf bonding index and
the remaining 12 lsbs for the representor index. The switch port id ranges
for each type of representors are as follows:

Uplink representor(AKA master): 0xFFFF
Host PF representor: 0x<pf_bond>FFF
VF representor: 0x<pf_bond>[0-FFE]

Fixes: bee57a0a3565 ("net/mlx5: update switch port id in bonding configuration")
Cc: stable@dpdk.org

Signed-off-by: Bill Zhou <dongzhou@nvidia.com>
Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
---
 drivers/net/mlx5/mlx5_defs.h   |  2 +-
 drivers/net/mlx5/mlx5_ethdev.c | 12 ++++++++++--
 2 files changed, 11 insertions(+), 3 deletions(-)
  

Comments

Raslan Darawsheh Nov. 8, 2020, 9:49 a.m. UTC | #1
Hi,

> -----Original Message-----
> From: Bill Zhou <dongz@mellanox.com>
> Sent: Wednesday, November 4, 2020 8:05 AM
> To: Slava Ovsiienko <viacheslavo@nvidia.com>; Matan Azrad
> <matan@nvidia.com>
> Cc: stable@dpdk.org; dev@dpdk.org; Raslan Darawsheh
> <rasland@nvidia.com>; Bill Zhou <dongzhou@nvidia.com>
> Subject: [PATCH] net/mlx5: fix switch port id when representor in bonding
> 
> From: Bill Zhou <dongzhou@nvidia.com>
> 
> In the bonding configurations the port switch id for representors
> was composed of pf index in bonding as the 1 msb and the representor's
> index as the remaining 15 lsbs. The special corner case for the host
> PF representor on BF setups with representor id 0xFFFF was missed as well.
> 
> The new switch port id consists of 4 msbs for the pf bonding index and
> the remaining 12 lsbs for the representor index. The switch port id ranges
> for each type of representors are as follows:
> 
> Uplink representor(AKA master): 0xFFFF
> Host PF representor: 0x<pf_bond>FFF
> VF representor: 0x<pf_bond>[0-FFE]
> 
> Fixes: bee57a0a3565 ("net/mlx5: update switch port id in bonding
> configuration")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Bill Zhou <dongzhou@nvidia.com>
> Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
> ---

Patch applied to next-net-mlx,

Kindest regards,
Raslan Darawsheh
  
Ferruh Yigit Nov. 13, 2020, 6:54 p.m. UTC | #2
On 11/4/2020 6:04 AM, Bill Zhou wrote:
> From: Bill Zhou <dongzhou@nvidia.com>
> 
> In the bonding configurations the port switch id for representors
> was composed of pf index in bonding as the 1 msb and the representor's
> index as the remaining 15 lsbs. The special corner case for the host
> PF representor on BF setups with representor id 0xFFFF was missed as well.
> 
> The new switch port id consists of 4 msbs for the pf bonding index and
> the remaining 12 lsbs for the representor index. The switch port id ranges
> for each type of representors are as follows:
> 
> Uplink representor(AKA master): 0xFFFF
> Host PF representor: 0x<pf_bond>FFF
> VF representor: 0x<pf_bond>[0-FFE]
> 
> Fixes: bee57a0a3565 ("net/mlx5: update switch port id in bonding configuration")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Bill Zhou <dongzhou@nvidia.com>
> Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>

Sign off tag is updated as following in the next-net, to keep consistent to 
previously used name:
  Signed-off-by: Dong Zhou <dongzhou@nvidia.com>
  
Dong Zhou Nov. 15, 2020, 12:36 p.m. UTC | #3
> -----Original Message-----
> From: Ferruh Yigit <ferruh.yigit@intel.com>
> Sent: Saturday, November 14, 2020 2:54 AM
> To: Bill Zhou <dongz@mellanox.com>; Slava Ovsiienko
> <viacheslavo@nvidia.com>; Matan Azrad <matan@nvidia.com>; NBU-Contact-
> Thomas Monjalon <thomas@monjalon.net>
> Cc: stable@dpdk.org; dev@dpdk.org; Raslan Darawsheh <rasland@nvidia.com>;
> Bill Zhou <dongzhou@nvidia.com>
> Subject: Re: [dpdk-dev] [PATCH] net/mlx5: fix switch port id when representor in
> bonding
> 
> On 11/4/2020 6:04 AM, Bill Zhou wrote:
> > From: Bill Zhou <dongzhou@nvidia.com>
> >
> > In the bonding configurations the port switch id for representors was
> > composed of pf index in bonding as the 1 msb and the representor's
> > index as the remaining 15 lsbs. The special corner case for the host
> > PF representor on BF setups with representor id 0xFFFF was missed as well.
> >
> > The new switch port id consists of 4 msbs for the pf bonding index and
> > the remaining 12 lsbs for the representor index. The switch port id
> > ranges for each type of representors are as follows:
> >
> > Uplink representor(AKA master): 0xFFFF Host PF representor:
> > 0x<pf_bond>FFF VF representor: 0x<pf_bond>[0-FFE]
> >
> > Fixes: bee57a0a3565 ("net/mlx5: update switch port id in bonding
> > configuration")
> > Cc: stable@dpdk.org
> >
> > Signed-off-by: Bill Zhou <dongzhou@nvidia.com>
> > Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
> 
> Sign off tag is updated as following in the next-net, to keep consistent to
> previously used name:
>   Signed-off-by: Dong Zhou <dongzhou@nvidia.com>

Yes, it's fine.
  

Patch

diff --git a/drivers/net/mlx5/mlx5_defs.h b/drivers/net/mlx5/mlx5_defs.h
index 4980352..f8f8a1f 100644
--- a/drivers/net/mlx5/mlx5_defs.h
+++ b/drivers/net/mlx5/mlx5_defs.h
@@ -50,7 +50,7 @@ 
 
 /* Switch port ID parameters for bonding configurations. */
 #define MLX5_PORT_ID_BONDING_PF_MASK 0xf
-#define MLX5_PORT_ID_BONDING_PF_SHIFT 0xf
+#define MLX5_PORT_ID_BONDING_PF_SHIFT 12
 
 /* Alarm timeout. */
 #define MLX5_ALARM_TIMEOUT_US 100000
diff --git a/drivers/net/mlx5/mlx5_ethdev.c b/drivers/net/mlx5/mlx5_ethdev.c
index ee97480..a3910cf 100644
--- a/drivers/net/mlx5/mlx5_ethdev.c
+++ b/drivers/net/mlx5/mlx5_ethdev.c
@@ -338,14 +338,22 @@ 
 			 * representors (more than 4K) or PFs (more than 15)
 			 * this approach must be reconsidered.
 			 */
-			if ((info->switch_info.port_id >>
-				MLX5_PORT_ID_BONDING_PF_SHIFT) ||
+			/* Switch port ID for VF representors: 0 - 0xFFE */
+			if ((info->switch_info.port_id != 0xffff &&
+				info->switch_info.port_id >=
+				((1 << MLX5_PORT_ID_BONDING_PF_SHIFT) - 1)) ||
 			    priv->pf_bond > MLX5_PORT_ID_BONDING_PF_MASK) {
 				DRV_LOG(ERR, "can't update switch port ID"
 					     " for bonding device");
 				MLX5_ASSERT(false);
 				return -ENODEV;
 			}
+			/*
+			 * Switch port ID for Host PF representor
+			 * (representor_id is -1) , set to 0xFFF
+			 */
+			if (info->switch_info.port_id == 0xffff)
+				info->switch_info.port_id = 0xfff;
 			info->switch_info.port_id |=
 				priv->pf_bond << MLX5_PORT_ID_BONDING_PF_SHIFT;
 		}