diff options
author | santosh.shilimkar@oracle.com <santosh.shilimkar@oracle.com> | 2015-08-22 15:45:26 -0700 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2015-08-25 13:35:30 -0700 |
commit | 73ce4317bf983282593aff710b112a7e705620c3 (patch) | |
tree | 97b8dd71092f81370c025f90efa82291efb36154 /net/rds/ib_cm.c | |
parent | e1f475a738e4c861d8aff84b737a0538680cbe05 (diff) | |
download | linux-73ce4317bf983282593aff710b112a7e705620c3.tar.gz linux-73ce4317bf983282593aff710b112a7e705620c3.tar.bz2 linux-73ce4317bf983282593aff710b112a7e705620c3.zip |
RDS: make sure we post recv buffers
If we get an ENOMEM during rds_ib_recv_refill, we might never come
back and refill again later. Patch makes sure to kick krdsd into
helping out.
To achieve this we add RDS_RECV_REFILL flag and update in the refill
path based on that so that at least some therad will keep posting
receive buffers.
Since krdsd and softirq both might race for refill, we decide to
schedule on work queue based on ring_low instead of ring_empty.
Reviewed-by: Ajaykumar Hotchandani <ajaykumar.hotchandani@oracle.com>
Signed-off-by: Santosh Shilimkar <ssantosh@kernel.org>
Signed-off-by: Santosh Shilimkar <santosh.shilimkar@oracle.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/rds/ib_cm.c')
-rw-r--r-- | net/rds/ib_cm.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/net/rds/ib_cm.c b/net/rds/ib_cm.c index 94d4427377b2..04243dd1c2ea 100644 --- a/net/rds/ib_cm.c +++ b/net/rds/ib_cm.c @@ -135,7 +135,7 @@ void rds_ib_cm_connect_complete(struct rds_connection *conn, struct rdma_cm_even rds_ib_recv_init_ring(ic); /* Post receive buffers - as a side effect, this will update * the posted credit count. */ - rds_ib_recv_refill(conn, 1); + rds_ib_recv_refill(conn, 1, GFP_KERNEL); /* Tune RNR behavior */ rds_ib_tune_rnr(ic, &qp_attr); |