mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-03 23:58:05 +00:00
RDMA/ipoib: Distribute cq completion vector better
Currently ipoib choose cq completion vector based on port number, when HCA only have one port, all the interface recv queue completion are bind to cq completion vector 0. To better distribute the load, use same method as __ib_alloc_cq_any to choose completion vector, with the change, each interface now use different completion vectors. Link: https://lore.kernel.org/r/20201013074342.15867-1-jinpu.wang@cloud.ionos.com Signed-off-by: Jack Wang <jinpu.wang@cloud.ionos.com> Reviewed-by: Gioh Kim <gi-oh.kim@cloud.ionos.com> Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
This commit is contained in:
parent
172292be01
commit
d024f27de1
1 changed files with 2 additions and 2 deletions
|
@ -158,6 +158,7 @@ int ipoib_transport_dev_init(struct net_device *dev, struct ib_device *ca)
|
|||
|
||||
int ret, size, req_vec;
|
||||
int i;
|
||||
static atomic_t counter;
|
||||
|
||||
size = ipoib_recvq_size + 1;
|
||||
ret = ipoib_cm_dev_init(dev);
|
||||
|
@ -171,8 +172,7 @@ int ipoib_transport_dev_init(struct net_device *dev, struct ib_device *ca)
|
|||
if (ret != -EOPNOTSUPP)
|
||||
return ret;
|
||||
|
||||
req_vec = (priv->port - 1) * 2;
|
||||
|
||||
req_vec = atomic_inc_return(&counter) * 2;
|
||||
cq_attr.cqe = size;
|
||||
cq_attr.comp_vector = req_vec % priv->ca->num_comp_vectors;
|
||||
priv->recv_cq = ib_create_cq(priv->ca, ipoib_ib_rx_completion, NULL,
|
||||
|
|
Loading…
Reference in a new issue