]> git.openfabrics.org - ~emulex/compat-rdma_3.12.git/commitdiff
IB/rds: correct IB api usage
authorMike Marciniszyn <mike.marciniszyn@intel.com>
Mon, 21 Jan 2013 17:57:19 +0000 (12:57 -0500)
committerMike Marciniszyn <mike.marciniszyn@intel.com>
Mon, 21 Jan 2013 17:57:19 +0000 (12:57 -0500)
This ports upstream commit b1b6cb4.

Signed-off-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
linux-next-pending/0035-RDMA-rds-api-use-correction.patch [new file with mode: 0644]

diff --git a/linux-next-pending/0035-RDMA-rds-api-use-correction.patch b/linux-next-pending/0035-RDMA-rds-api-use-correction.patch
new file mode 100644 (file)
index 0000000..23fd969
--- /dev/null
@@ -0,0 +1,42 @@
+commit b1b6cb4d2ae56c90275fed7ae0e18fd1058a16be
+Author: Mike Marciniszyn <mike.marciniszyn@intel.com>
+Date:   Fri Dec 21 12:15:47 2012 -0500
+
+    IB/rds: Correct ib_api use with gs_dma_address/sg_dma_len
+    
+    0b088e00 ("RDS: Use page_remainder_alloc() for recv bufs")
+    added uses of sg_dma_len() and sg_dma_address(). This makes
+    RDS DOA with the qib driver.
+    
+    IB ulps should use ib_sg_dma_len() and ib_sg_dma_address
+    respectively since some HCAs overload ib_sg_dma* operations.
+    
+    Signed-off-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
+
+diff --git a/net/rds/ib_recv.c b/net/rds/ib_recv.c
+index 8c5bc85..8eb9501 100644
+--- a/net/rds/ib_recv.c
++++ b/net/rds/ib_recv.c
+@@ -339,8 +339,8 @@ static int rds_ib_recv_refill_one(struct rds_connection *conn,
+       sge->length = sizeof(struct rds_header);
+       sge = &recv->r_sge[1];
+-      sge->addr = sg_dma_address(&recv->r_frag->f_sg);
+-      sge->length = sg_dma_len(&recv->r_frag->f_sg);
++      sge->addr = ib_sg_dma_address(ic->i_cm_id->device, &recv->r_frag->f_sg);
++      sge->length = ib_sg_dma_len(ic->i_cm_id->device, &recv->r_frag->f_sg);
+       ret = 0;
+ out:
+@@ -381,7 +381,10 @@ void rds_ib_recv_refill(struct rds_connection *conn, int prefill)
+               ret = ib_post_recv(ic->i_cm_id->qp, &recv->r_wr, &failed_wr);
+               rdsdebug("recv %p ibinc %p page %p addr %lu ret %d\n", recv,
+                        recv->r_ibinc, sg_page(&recv->r_frag->f_sg),
+-                       (long) sg_dma_address(&recv->r_frag->f_sg), ret);
++                       (long) ib_sg_dma_address(
++                              ic->i_cm_id->device,
++                              &recv->r_frag->f_sg),
++                      ret);
+               if (ret) {
+                       rds_ib_conn_error(conn, "recv post on "
+                              "%pI4 returned %d, disconnecting and "