netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH net v2] net/smc: Fix lookup of netdev by using ib_device_get_netdev()
@ 2024-11-06  8:26 Wenjia Zhang
  2024-11-06 12:25 ` Leon Romanovsky
  2024-11-07 19:40 ` patchwork-bot+netdevbpf
  0 siblings, 2 replies; 3+ messages in thread
From: Wenjia Zhang @ 2024-11-06  8:26 UTC (permalink / raw)
  To: David Miller, Jakub Kicinski, Eric Dumazet, Paolo Abeni
  Cc: netdev, linux-s390, linux-rdma, Simon Horman, Leon Romanovsky,
	Michael Guralnik, Heiko Carstens, Wen Gu, D. Wythe, Tony Lu,
	Jan Karcher, Gerd Bayer, Alexandra Winter, Halil Pasic,
	Nils Hoppmann, Niklas Schnell, Thorsten Winkler, Karsten Graul,
	Stefan Raspl, Wenjia Zhang, Aswin K, Dust Li, Zhu Yanjun

The SMC-R variant of the SMC protocol used direct call to function
ib_device_ops.get_netdev() to lookup netdev. As we used mlx5 device
driver to run SMC-R, it failed to find a device, because in mlx5_ib the
internal net device management for retrieving net devices was replaced
by a common interface ib_device_get_netdev() in commit 8d159eb2117b
("RDMA/mlx5: Use IB set_netdev and get_netdev functions").

Since such direct accesses to the internal net device management is not
recommended at all, update the SMC-R code to use proper API
ib_device_get_netdev().

Fixes: 54903572c23c ("net/smc: allow pnetid-less configuration")
Reported-by: Aswin K <aswin@linux.ibm.com>
Reviewed-by: Gerd Bayer <gbayer@linux.ibm.com>
Reviewed-by: Halil Pasic <pasic@linux.ibm.com>
Reviewed-by: Simon Horman <horms@kernel.org>
Reviewed-by: Dust Li <dust.li@linux.alibaba.com>
Reviewed-by: Wen Gu <guwen@linux.alibaba.com>
Reviewed-by: Zhu Yanjun <yanjun.zhu@linux.dev>
Reviewed-by: D. Wythe <alibuda@linux.alibaba.com>
Signed-off-by: Wenjia Zhang <wenjia@linux.ibm.com>
---
 net/smc/smc_ib.c   | 8 ++------
 net/smc/smc_pnet.c | 4 +---
 2 files changed, 3 insertions(+), 9 deletions(-)

diff --git a/net/smc/smc_ib.c b/net/smc/smc_ib.c
index 9297dc20bfe2..9c563cdbea90 100644
--- a/net/smc/smc_ib.c
+++ b/net/smc/smc_ib.c
@@ -899,9 +899,7 @@ static void smc_copy_netdev_ifindex(struct smc_ib_device *smcibdev, int port)
 	struct ib_device *ibdev = smcibdev->ibdev;
 	struct net_device *ndev;
 
-	if (!ibdev->ops.get_netdev)
-		return;
-	ndev = ibdev->ops.get_netdev(ibdev, port + 1);
+	ndev = ib_device_get_netdev(ibdev, port + 1);
 	if (ndev) {
 		smcibdev->ndev_ifidx[port] = ndev->ifindex;
 		dev_put(ndev);
@@ -921,9 +919,7 @@ void smc_ib_ndev_change(struct net_device *ndev, unsigned long event)
 		port_cnt = smcibdev->ibdev->phys_port_cnt;
 		for (i = 0; i < min_t(size_t, port_cnt, SMC_MAX_PORTS); i++) {
 			libdev = smcibdev->ibdev;
-			if (!libdev->ops.get_netdev)
-				continue;
-			lndev = libdev->ops.get_netdev(libdev, i + 1);
+			lndev = ib_device_get_netdev(libdev, i + 1);
 			dev_put(lndev);
 			if (lndev != ndev)
 				continue;
diff --git a/net/smc/smc_pnet.c b/net/smc/smc_pnet.c
index a04aa0e882f8..716808f374a8 100644
--- a/net/smc/smc_pnet.c
+++ b/net/smc/smc_pnet.c
@@ -1054,9 +1054,7 @@ static void smc_pnet_find_rdma_dev(struct net_device *netdev,
 		for (i = 1; i <= SMC_MAX_PORTS; i++) {
 			if (!rdma_is_port_valid(ibdev->ibdev, i))
 				continue;
-			if (!ibdev->ibdev->ops.get_netdev)
-				continue;
-			ndev = ibdev->ibdev->ops.get_netdev(ibdev->ibdev, i);
+			ndev = ib_device_get_netdev(ibdev->ibdev, i);
 			if (!ndev)
 				continue;
 			dev_put(ndev);
-- 
2.43.0


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

* Re: [PATCH net v2] net/smc: Fix lookup of netdev by using ib_device_get_netdev()
  2024-11-06  8:26 [PATCH net v2] net/smc: Fix lookup of netdev by using ib_device_get_netdev() Wenjia Zhang
@ 2024-11-06 12:25 ` Leon Romanovsky
  2024-11-07 19:40 ` patchwork-bot+netdevbpf
  1 sibling, 0 replies; 3+ messages in thread
From: Leon Romanovsky @ 2024-11-06 12:25 UTC (permalink / raw)
  To: Wenjia Zhang
  Cc: David Miller, Jakub Kicinski, Eric Dumazet, Paolo Abeni, netdev,
	linux-s390, linux-rdma, Simon Horman, Michael Guralnik,
	Heiko Carstens, Wen Gu, D. Wythe, Tony Lu, Jan Karcher,
	Gerd Bayer, Alexandra Winter, Halil Pasic, Nils Hoppmann,
	Niklas Schnell, Thorsten Winkler, Karsten Graul, Stefan Raspl,
	Aswin K, Dust Li, Zhu Yanjun

On Wed, Nov 06, 2024 at 09:26:12AM +0100, Wenjia Zhang wrote:
> The SMC-R variant of the SMC protocol used direct call to function
> ib_device_ops.get_netdev() to lookup netdev. As we used mlx5 device
> driver to run SMC-R, it failed to find a device, because in mlx5_ib the
> internal net device management for retrieving net devices was replaced
> by a common interface ib_device_get_netdev() in commit 8d159eb2117b
> ("RDMA/mlx5: Use IB set_netdev and get_netdev functions").
> 
> Since such direct accesses to the internal net device management is not
> recommended at all, update the SMC-R code to use proper API
> ib_device_get_netdev().
> 
> Fixes: 54903572c23c ("net/smc: allow pnetid-less configuration")
> Reported-by: Aswin K <aswin@linux.ibm.com>
> Reviewed-by: Gerd Bayer <gbayer@linux.ibm.com>
> Reviewed-by: Halil Pasic <pasic@linux.ibm.com>
> Reviewed-by: Simon Horman <horms@kernel.org>
> Reviewed-by: Dust Li <dust.li@linux.alibaba.com>
> Reviewed-by: Wen Gu <guwen@linux.alibaba.com>
> Reviewed-by: Zhu Yanjun <yanjun.zhu@linux.dev>
> Reviewed-by: D. Wythe <alibuda@linux.alibaba.com>
> Signed-off-by: Wenjia Zhang <wenjia@linux.ibm.com>
> ---
>  net/smc/smc_ib.c   | 8 ++------
>  net/smc/smc_pnet.c | 4 +---
>  2 files changed, 3 insertions(+), 9 deletions(-)
> 

Thanks,
Reviewed-by: Leon Romanovsky <leonro@nvidia.com>

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

* Re: [PATCH net v2] net/smc: Fix lookup of netdev by using ib_device_get_netdev()
  2024-11-06  8:26 [PATCH net v2] net/smc: Fix lookup of netdev by using ib_device_get_netdev() Wenjia Zhang
  2024-11-06 12:25 ` Leon Romanovsky
@ 2024-11-07 19:40 ` patchwork-bot+netdevbpf
  1 sibling, 0 replies; 3+ messages in thread
From: patchwork-bot+netdevbpf @ 2024-11-07 19:40 UTC (permalink / raw)
  To: Wenjia Zhang
  Cc: davem, kuba, edumazet, pabeni, netdev, linux-s390, linux-rdma,
	horms, leon, michaelgur, hca, guwen, alibuda, tonylu, jaka,
	gbayer, wintera, pasic, niho, schnelle, twinkler, kgraul, raspl,
	aswin, dust.li, yanjun.zhu

Hello:

This patch was applied to netdev/net.git (main)
by Jakub Kicinski <kuba@kernel.org>:

On Wed,  6 Nov 2024 09:26:12 +0100 you wrote:
> The SMC-R variant of the SMC protocol used direct call to function
> ib_device_ops.get_netdev() to lookup netdev. As we used mlx5 device
> driver to run SMC-R, it failed to find a device, because in mlx5_ib the
> internal net device management for retrieving net devices was replaced
> by a common interface ib_device_get_netdev() in commit 8d159eb2117b
> ("RDMA/mlx5: Use IB set_netdev and get_netdev functions").
> 
> [...]

Here is the summary with links:
  - [net,v2] net/smc: Fix lookup of netdev by using ib_device_get_netdev()
    https://git.kernel.org/netdev/net/c/de88df01796b

You are awesome, thank you!
-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html



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

end of thread, other threads:[~2024-11-07 19:40 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-11-06  8:26 [PATCH net v2] net/smc: Fix lookup of netdev by using ib_device_get_netdev() Wenjia Zhang
2024-11-06 12:25 ` Leon Romanovsky
2024-11-07 19:40 ` patchwork-bot+netdevbpf

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).