aboutsummaryrefslogtreecommitdiffstats
path: root/net/rds/send.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/rds/send.c')
-rw-r--r--net/rds/send.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/net/rds/send.c b/net/rds/send.c
index 69ab1040d02d..d1f364e44e36 100644
--- a/net/rds/send.c
+++ b/net/rds/send.c
@@ -252,6 +252,7 @@ int rds_send_xmit(struct rds_connection *conn)
252 252
253 /* The transport either sends the whole rdma or none of it */ 253 /* The transport either sends the whole rdma or none of it */
254 if (rm->rdma.op_active && !conn->c_xmit_rdma_sent) { 254 if (rm->rdma.op_active && !conn->c_xmit_rdma_sent) {
255 rm->m_final_op = &rm->rdma;
255 ret = conn->c_trans->xmit_rdma(conn, &rm->rdma); 256 ret = conn->c_trans->xmit_rdma(conn, &rm->rdma);
256 if (ret) 257 if (ret)
257 break; 258 break;
@@ -263,10 +264,12 @@ int rds_send_xmit(struct rds_connection *conn)
263 } 264 }
264 265
265 if (rm->atomic.op_active && !conn->c_xmit_atomic_sent) { 266 if (rm->atomic.op_active && !conn->c_xmit_atomic_sent) {
266 ret = conn->c_trans->xmit_atomic(conn, rm); 267 rm->m_final_op = &rm->atomic;
268 ret = conn->c_trans->xmit_atomic(conn, &rm->atomic);
267 if (ret) 269 if (ret)
268 break; 270 break;
269 conn->c_xmit_atomic_sent = 1; 271 conn->c_xmit_atomic_sent = 1;
272
270 /* The transport owns the mapped memory for now. 273 /* The transport owns the mapped memory for now.
271 * You can't unmap it while it's on the send queue */ 274 * You can't unmap it while it's on the send queue */
272 set_bit(RDS_MSG_MAPPED, &rm->m_flags); 275 set_bit(RDS_MSG_MAPPED, &rm->m_flags);
@@ -295,6 +298,7 @@ int rds_send_xmit(struct rds_connection *conn)
295 } 298 }
296 299
297 if (rm->data.op_active && !conn->c_xmit_data_sent) { 300 if (rm->data.op_active && !conn->c_xmit_data_sent) {
301 rm->m_final_op = &rm->data;
298 ret = conn->c_trans->xmit(conn, rm, 302 ret = conn->c_trans->xmit(conn, rm,
299 conn->c_xmit_hdr_off, 303 conn->c_xmit_hdr_off,
300 conn->c_xmit_sg, 304 conn->c_xmit_sg,