Skip to content

Commit 58030c7

Browse files
MarkZhang81rleon
authored andcommitted
RDMA/cma: Always set static rate to 0 for RoCE
Set static rate to 0 as it should be discovered by path query and has no meaning for RoCE. This also avoid of using the rtnl lock and ethtool API, which is a bottleneck when try to setup many rdma-cm connections at the same time, especially with multiple processes. Fixes: 3c86aa7 ("RDMA/cm: Add RDMA CM support for IBoE devices") Signed-off-by: Mark Zhang <markzhang@nvidia.com> Link: https://lore.kernel.org/r/f72a4f8b667b803aee9fa794069f61afb5839ce4.1685960567.git.leon@kernel.org Signed-off-by: Leon Romanovsky <leon@kernel.org>
1 parent 2de43f5 commit 58030c7

2 files changed

Lines changed: 2 additions & 25 deletions

File tree

drivers/infiniband/core/cma.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3295,7 +3295,7 @@ static int cma_resolve_iboe_route(struct rdma_id_private *id_priv)
32953295
route->path_rec->traffic_class = tos;
32963296
route->path_rec->mtu = iboe_get_mtu(ndev->mtu);
32973297
route->path_rec->rate_selector = IB_SA_EQ;
3298-
route->path_rec->rate = iboe_get_rate(ndev);
3298+
route->path_rec->rate = IB_RATE_PORT_CURRENT;
32993299
dev_put(ndev);
33003300
route->path_rec->packet_life_time_selector = IB_SA_EQ;
33013301
/* In case ACK timeout is set, use this value to calculate
@@ -4964,7 +4964,7 @@ static int cma_iboe_join_multicast(struct rdma_id_private *id_priv,
49644964
if (!ndev)
49654965
return -ENODEV;
49664966

4967-
ib.rec.rate = iboe_get_rate(ndev);
4967+
ib.rec.rate = IB_RATE_PORT_CURRENT;
49684968
ib.rec.hop_limit = 1;
49694969
ib.rec.mtu = iboe_get_mtu(ndev->mtu);
49704970

include/rdma/ib_addr.h

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -194,29 +194,6 @@ static inline enum ib_mtu iboe_get_mtu(int mtu)
194194
return 0;
195195
}
196196

197-
static inline int iboe_get_rate(struct net_device *dev)
198-
{
199-
struct ethtool_link_ksettings cmd;
200-
int err;
201-
202-
rtnl_lock();
203-
err = __ethtool_get_link_ksettings(dev, &cmd);
204-
rtnl_unlock();
205-
if (err)
206-
return IB_RATE_PORT_CURRENT;
207-
208-
if (cmd.base.speed >= 40000)
209-
return IB_RATE_40_GBPS;
210-
else if (cmd.base.speed >= 30000)
211-
return IB_RATE_30_GBPS;
212-
else if (cmd.base.speed >= 20000)
213-
return IB_RATE_20_GBPS;
214-
else if (cmd.base.speed >= 10000)
215-
return IB_RATE_10_GBPS;
216-
else
217-
return IB_RATE_PORT_CURRENT;
218-
}
219-
220197
static inline int rdma_link_local_addr(struct in6_addr *addr)
221198
{
222199
if (addr->s6_addr32[0] == htonl(0xfe800000) &&

0 commit comments

Comments
 (0)