Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 214389
b: refs/heads/master
c: 919ced4
h: refs/heads/master
i:
  214387: c373354
v: v3
  • Loading branch information
Andy Grover committed Sep 9, 2010
1 parent 73257aa commit 72bddac
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 56 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 6f3d05db0da0b874afd2dd229bed715133532f8d
refs/heads/master: 919ced4ce7d6ac62dd5be62d8993fe22a527d53a
24 changes: 0 additions & 24 deletions trunk/net/rds/ib.h
Original file line number Diff line number Diff line change
Expand Up @@ -356,28 +356,4 @@ extern unsigned long rds_ib_sysctl_max_recv_allocation;
extern unsigned int rds_ib_sysctl_flow_control;
extern ctl_table rds_ib_sysctl_table[];

/*
* Helper functions for getting/setting the header and data SGEs in
* RDS packets (not RDMA)
*
* From version 3.1 onwards, header is in front of data in the sge.
*/
static inline struct ib_sge *
rds_ib_header_sge(struct rds_ib_connection *ic, struct ib_sge *sge)
{
if (ic->conn->c_version > RDS_PROTOCOL_3_0)
return &sge[0];
else
return &sge[1];
}

static inline struct ib_sge *
rds_ib_data_sge(struct rds_ib_connection *ic, struct ib_sge *sge)
{
if (ic->conn->c_version > RDS_PROTOCOL_3_0)
return &sge[1];
else
return &sge[0];
}

#endif
22 changes: 11 additions & 11 deletions trunk/net/rds/ib_recv.c
Original file line number Diff line number Diff line change
Expand Up @@ -95,15 +95,15 @@ void rds_ib_recv_init_ring(struct rds_ib_connection *ic)
recv->r_wr.sg_list = recv->r_sge;
recv->r_wr.num_sge = RDS_IB_RECV_SGE;

sge = rds_ib_data_sge(ic, recv->r_sge);
sge->addr = 0;
sge->length = RDS_FRAG_SIZE;
sge->lkey = ic->i_mr->lkey;

sge = rds_ib_header_sge(ic, recv->r_sge);
sge = &recv->r_sge[0];
sge->addr = ic->i_recv_hdrs_dma + (i * sizeof(struct rds_header));
sge->length = sizeof(struct rds_header);
sge->lkey = ic->i_mr->lkey;

sge = &recv->r_sge[1];
sge->addr = 0;
sge->length = RDS_FRAG_SIZE;
sge->lkey = ic->i_mr->lkey;
}
}

Expand Down Expand Up @@ -190,14 +190,14 @@ static int rds_ib_recv_refill_one(struct rds_connection *conn,
recv->r_frag->f_offset = ic->i_frag.f_offset;
recv->r_frag->f_mapped = dma_addr;

sge = rds_ib_data_sge(ic, recv->r_sge);
sge->addr = dma_addr;
sge->length = RDS_FRAG_SIZE;

sge = rds_ib_header_sge(ic, recv->r_sge);
sge = &recv->r_sge[0];
sge->addr = ic->i_recv_hdrs_dma + (recv - ic->i_recvs) * sizeof(struct rds_header);
sge->length = sizeof(struct rds_header);

sge = &recv->r_sge[1];
sge->addr = dma_addr;
sge->length = RDS_FRAG_SIZE;

get_page(recv->r_frag->f_page);

if (ic->i_frag.f_offset < RDS_PAGE_LAST_OFF) {
Expand Down
32 changes: 12 additions & 20 deletions trunk/net/rds/ib_send.c
Original file line number Diff line number Diff line change
Expand Up @@ -156,18 +156,14 @@ void rds_ib_send_init_ring(struct rds_ib_connection *ic)

send->s_wr.wr_id = i;
send->s_wr.sg_list = send->s_sge;
send->s_wr.num_sge = 1;
send->s_wr.opcode = IB_WR_SEND;
send->s_wr.send_flags = 0;
send->s_wr.ex.imm_data = 0;

sge = rds_ib_data_sge(ic, send->s_sge);
sge->lkey = ic->i_mr->lkey;

sge = rds_ib_header_sge(ic, send->s_sge);
sge = &send->s_sge[0];
sge->addr = ic->i_send_hdrs_dma + (i * sizeof(struct rds_header));
sge->length = sizeof(struct rds_header);
sge->lkey = ic->i_mr->lkey;

send->s_sge[1].lkey = ic->i_mr->lkey;
}
}

Expand Down Expand Up @@ -441,28 +437,24 @@ rds_ib_xmit_populate_wr(struct rds_ib_connection *ic,

send->s_wr.send_flags = send_flags;
send->s_wr.opcode = IB_WR_SEND;
send->s_wr.num_sge = 2;
send->s_wr.num_sge = 1;
send->s_wr.next = NULL;
send->s_queued = jiffies;
send->s_op = NULL;

sge = &send->s_sge[0];
sge->addr = ic->i_send_hdrs_dma + (pos * sizeof(struct rds_header));
sge->length = sizeof(struct rds_header);
sge->lkey = ic->i_mr->lkey;

if (length != 0) {
sge = rds_ib_data_sge(ic, send->s_sge);
send->s_wr.num_sge = 2;

sge = &send->s_sge[1];
sge->addr = buffer;
sge->length = length;
sge->lkey = ic->i_mr->lkey;

sge = rds_ib_header_sge(ic, send->s_sge);
} else {
/* We're sending a packet with no payload. There is only
* one SGE */
send->s_wr.num_sge = 1;
sge = &send->s_sge[0];
}

sge->addr = ic->i_send_hdrs_dma + (pos * sizeof(struct rds_header));
sge->length = sizeof(struct rds_header);
sge->lkey = ic->i_mr->lkey;
}

/*
Expand Down

0 comments on commit 72bddac

Please sign in to comment.