RDMA/core: Fix ENODEV error for iWARP test over vlan
PATCH v3 1/1 RDMA/core: Fix ENODEV error for iWARP test over vlan
If traffic is over vlan, cma_validate_port() fails to match vlan net_device ifindex with bound_if_index and results in ENODEV error. It is because rdma_copy_src_l2_addr() always assigns bound_if_index with real net_device ifindex.
This patch fixes the issue by assigning bound_if_index with vlan net_device index if traffic is over vlan.
---
Changes since v2:
Addressed previous review comments
--- drivers/infiniband/core/addr.c | 2 ++ 1 file changed, 2 insertions(+)
drivers/infiniband/core/addr.c +2 -0
@@ -269,6 +269,8 @@ rdma_find_ndev_for_src_ip_rcu(struct net *net, const struct sockaddr *src_in)break ;#endif } +if (!ret && dev &&is_vlan_dev (dev)) + dev =vlan_dev_real_dev (dev);return ret ?ERR_PTR (ret) : dev; }
Signature · 1 line
2.39.3
Leon Romanovsky
AppliedQuoted 8 lines · Anumula Murali Mohan Reddy
If traffic is over vlan,
cma_validate_port()fails to match vlannet_deviceifindex withbound_if_indexand results in ENODEV error. It is becauserdma_copy_src_l2_addr()always assignsbound_if_indexwith realnet_deviceifindex.
This patch fixes the issue by assigningbound_if_indexwith vlannet_deviceindex if traffic is over vlan.[...]
Applied, thanks!
[1/1] RDMA/core: Fix ENODEV error for iWARP test over vlan
https://git.kernel.org/rdma/rdma/c/5069d7e202f640
Best regards,
Signature · 1 line
Leon Romanovsky <[email protected]>
Quoted 10 lines · Anumula Murali Mohan Reddy
If traffic is over vlan,
cma_validate_port()fails to match vlannet_deviceifindex withbound_if_indexand results in ENODEV error. It is becauserdma_copy_src_l2_addr()always assignsbound_if_indexwith realnet_deviceifindex.
This patch fixes the issue by assigningbound_if_indexwith vlannet_deviceindex if traffic is over vlan.Fixes f8ef1be816bf ("RDMA/cma: Avoid GID lookups on iWARP devices")Signed-off-by Anumula Murali Mohan Reddy <[email protected]>Signed-off-by Potnuri Bharat Teja <[email protected]>
Quoted 6 lines
---
Changes since v2:
Addressed previous review comments--- drivers/infiniband/core/addr.c | 2 ++ 1 file changed, 2 insertions(+)
This patch causes to udaddy regression. It doesn't work over VLANs anymore.
# Client:
ifconfig eth2 1.1.1.1
ip link add link eth2 name p0.3597 type vlan protocol 802.1Q id 3597 ip link set dev p0.3597 up
ip addr add 2.2.2.2/16 dev p0.3597
udaddy -S 847 -C 220 -c 2 -t 0 -s 2.2.2.3 -b 2.2.2.2
# Server:
ifconfig eth2 1.1.1.3
ip link add link eth2 name p0.3597 type vlan protocol 802.1Q id 3597 ip link set dev p0.3597 up
ip addr add 2.2.2.3/16 dev p0.3597
udaddy -S 847 -C 220 -c 2 -t 0 -b 2.2.2.3
Thanks
Quoted 17 lines
drivers/infiniband/core/addr.c +2
-0@@ -269,6 +269,8 @@ rdma_find_ndev_for_src_ip_rcu(struct net *net, const struct sockaddr *src_in)break ;#endif } +if (!ret && dev &&is_vlan_dev (dev)) + dev =vlan_dev_real_dev (dev);return ret ?ERR_PTR (ret) : dev; }Signature · 1 line
2.39.3
Quoted 51 lines · Leon Romanovsky
Quoted 10 lines · Anumula Murali Mohan Reddy
If traffic is over vlan,
cma_validate_port()fails to match vlannet_deviceifindex withbound_if_indexand results in ENODEV error. It is becauserdma_copy_src_l2_addr()always assignsbound_if_indexwith realnet_deviceifindex.
This patch fixes the issue by assigningbound_if_indexwith vlannet_deviceindex if traffic is over vlan.Fixes f8ef1be816bf ("RDMA/cma: Avoid GID lookups on iWARP devices")Signed-off-by Anumula Murali Mohan Reddy <[email protected]>Signed-off-by Potnuri Bharat Teja <[email protected]>Quoted 6 lines
---
Changes since v2:
Addressed previous review comments--- drivers/infiniband/core/addr.c | 2 ++ 1 file changed, 2 insertions(+)This patch causes to udaddy regression. It doesn't work over VLANs anymore.
# Client:
ifconfig eth2 1.1.1.1
ip link add link eth2 name p0.3597 type vlan protocol 802.1Q id 3597 ip link set dev p0.3597 up
ip addr add 2.2.2.2/16 dev p0.3597
udaddy -S 847 -C 220 -c 2 -t 0 -s 2.2.2.3 -b 2.2.2.2# Server:
ifconfig eth2 1.1.1.3
ip link add link eth2 name p0.3597 type vlan protocol 802.1Q id 3597 ip link set dev p0.3597 up
ip addr add 2.2.2.3/16 dev p0.3597
udaddy -S 847 -C 220 -c 2 -t 0 -b 2.2.2.3Thanks
Quoted 14 lines
drivers/infiniband/core/addr.c +2
-0@@ -269,6 +269,8 @@ rdma_find_ndev_for_src_ip_rcu(struct net *net, const struct sockaddr *src_in)break ;#endif } +if (!ret && dev &&is_vlan_dev (dev)) + dev =vlan_dev_real_dev (dev);return ret ?ERR_PTR (ret) : dev; }
Quoted 3 lines
Quoted 3 lines
Signature · 1 line
2.39.3
i am able to reproduce the issue with udaddy, i am working on a new patch. for now you can proceed with reverting this change