sge = &recv->r_sge[1];
sge->addr = 0;
- sge->length = RDS_FRAG_SIZE;
+ sge->length = ic->i_frag_sz;
sge->lkey = ic->i_mr->lkey;
}
}
sg_init_table(&frag->f_sg, 1);
ret = rds_page_remainder_alloc(&frag->f_sg,
- RDS_FRAG_SIZE, page_mask);
+ ic->i_frag_sz, page_mask);
if (ret) {
kmem_cache_free(rds_ib_frag_slab, frag);
atomic_dec(&rds_ib_allocation);
goto out;
sg_init_table(&recv->r_frag->f_sg, 1);
ret = rds_page_remainder_alloc(&recv->r_frag->f_sg,
- RDS_FRAG_SIZE, page_mask);
+ recv->r_ic->i_frag_sz, page_mask);
if (ret) {
kmem_cache_free(rds_ib_frag_slab, recv->r_frag);
goto out;
int rds_ib_inc_copy_to_user(struct rds_incoming *inc, struct iov_iter *to)
{
+ struct rds_ib_connection *ic = inc->i_conn->c_transport_data;
struct rds_ib_incoming *ibinc;
struct rds_page_frag *frag;
unsigned long to_copy;
len = be32_to_cpu(inc->i_hdr.h_len);
while (iov_iter_count(to) && copied < len) {
- if (frag_off == RDS_FRAG_SIZE) {
+ if (frag_off == ic->i_frag_sz) {
frag = list_entry(frag->f_item.next,
struct rds_page_frag, f_item);
frag_off = 0;
}
to_copy = min_t(unsigned long, iov_iter_count(to),
- RDS_FRAG_SIZE - frag_off);
+ ic->i_frag_sz - frag_off);
to_copy = min_t(unsigned long, to_copy, len - copied);
/* XXX needs + offset for multiple recvs per page */
static void rds_ib_cong_recv(struct rds_connection *conn,
struct rds_ib_incoming *ibinc)
{
+ struct rds_ib_connection *ic = conn->c_transport_data;
struct rds_cong_map *map;
unsigned int map_off;
unsigned int map_page;
uint64_t *src, *dst;
unsigned int k;
- to_copy = min(RDS_FRAG_SIZE - frag_off, RDS_CONG_PAGE_SIZE - map_off);
+ to_copy = min(ic->i_frag_sz - frag_off, RDS_CONG_PAGE_SIZE - map_off);
BUG_ON(to_copy & 7); /* Must be 64bit aligned. */
addr = kmap_atomic(sg_page(&frag->f_sg));
}
frag_off += to_copy;
- if (frag_off == RDS_FRAG_SIZE) {
+ if (frag_off == ic->i_frag_sz) {
frag = list_entry(frag->f_item.next,
struct rds_page_frag, f_item);
frag_off = 0;
list_add_tail(&recv->r_frag->f_item, &ibinc->ii_frags);
recv->r_frag = NULL;
- if (ic->i_recv_data_rem > RDS_FRAG_SIZE)
- ic->i_recv_data_rem -= RDS_FRAG_SIZE;
+ if (ic->i_recv_data_rem > ic->i_frag_sz)
+ ic->i_recv_data_rem -= ic->i_frag_sz;
else {
ic->i_recv_data_rem = 0;
ic->i_ibinc = NULL;
recv->r_frag = NULL;
- if (ic->i_recv_data_rem > RDS_FRAG_SIZE)
- ic->i_recv_data_rem -= RDS_FRAG_SIZE;
+ if (ic->i_recv_data_rem > ic->i_frag_sz)
+ ic->i_recv_data_rem -= ic->i_frag_sz;
else {
ic->i_recv_data_rem = 0;
ic->i_ibinc = NULL;
int flow_controlled = 0;
int nr_sig = 0;
- BUG_ON(off % RDS_FRAG_SIZE);
+ BUG_ON(off % ic->i_frag_sz);
BUG_ON(hdr_off != 0 && hdr_off != sizeof(struct rds_header));
/* Do not send cong updates to IB loopback */
if (be32_to_cpu(rm->m_inc.i_hdr.h_len) == 0)
i = 1;
else
- i = ceil(be32_to_cpu(rm->m_inc.i_hdr.h_len), RDS_FRAG_SIZE);
+ i = ceil(be32_to_cpu(rm->m_inc.i_hdr.h_len), ic->i_frag_sz);
work_alloc = rds_ib_ring_alloc(&ic->i_send_ring, i, &pos);
if (work_alloc == 0) {
/* Set up the data, if present */
if (i < work_alloc
&& scat != &rm->data.op_sg[rm->data.op_count]) {
- len = min(RDS_FRAG_SIZE,
- ib_sg_dma_len(dev, scat) - rm->data.op_dmaoff);
+ len = min((unsigned int)ic->i_frag_sz,
+ ib_sg_dma_len(dev, scat) - rm->data.op_dmaoff);
send->s_wr.num_sge = 2;
send->s_sge[1].addr = ib_sg_dma_address(dev, scat);