On 24.10.24 07:44, Wen Gu wrote:
Patch [1] provides common interfaces to store and get net devices
associated to an IB device port and removes the ops->get_netdev()
callback of mlx5 driver. So use the new interface in smc.
[1]: 8d159eb2117b ("RDMA/mlx5: Use IB set_netdev and get_netdev functions")
Reported-by: D. Wythe <alibuda@xxxxxxxxxxxxxxxxx>
Signed-off-by: Wen Gu <guwen@xxxxxxxxxxxxxxxxx>
---
[...]
We detected the problem as well, and I already sent a patch with the
same code change in our team internally these. Because some agreement
issues on the commit message, it is still not sent out externally. Now
we (our team) have almost an agreement, I'd like to attach it here.
Please have a look if it is also for you to use:
"
[PATCH net] net/smc: Fix lookup of netdev by using ib_device_get_netdev()
Since/Although commit c2261dd76b54 ("RDMA/device: Add
ib_device_set_netdev() as an alternative to get_netdev") introduced an
API ib_device_get_netdev, the SMC-R variant of the SMC protocol
continued to use the old API ib_device_ops.get_netdev() to lookup
netdev. As commit 8d159eb2117b ("RDMA/mlx5: Use IB set_netdev and
get_netdev functions") removed the get_netdev callback from
mlx5_ib_dev_common_roce_ops, calling ib_device_ops.get_netdev didn't
work any more at least by using a mlx5 device driver. Thus, using
ib_device_set_netdev() now became mandatory.
Replace ib_device_ops.get_netdev() with ib_device_get_netdev().
Fixes: 54903572c23c ("net/smc: allow pnetid-less configuration")
Fixes: 8d159eb2117b ("RDMA/mlx5: Use IB set_netdev and get_netdev
functions")
"
My main points are:
- This patch should go to net, not net-next. Because it can result in
malfunction. e.g. if the RoCE devices are used as both handshake device
and RDMA device without any PNET_ID, it would be failed to find SMC-R
device, then fallback.
- We need the both fixes, which would help us for the backport
Thanks,
Wenjia