···303303 int backlog;304304 enum nes_cm_listener_state listener_state;305305 u32 reused_node;306306+ u8 tos;306307};307308308309/* per connection node and node state information */···353352 struct list_head reset_entry;354353 struct nes_qp *nesqp;355354 atomic_t passive_state;355355+ u8 tos;356356};357357358358/* structure for client or CM to fill when making CM api calls. */
···9191 /* Used by provider to add and remove refs on IW cm_id */9292 void (*add_ref)(struct iw_cm_id *);9393 void (*rem_ref)(struct iw_cm_id *);9494+ u8 tos;9495};95969697struct iw_cm_conn_param {
+11-6
net/rds/ib_send.c
···571571 }572572573573 rds_message_addref(rm);574574+ rm->data.op_dmasg = 0;575575+ rm->data.op_dmaoff = 0;574576 ic->i_data_op = &rm->data;575577576578 /* Finalize the header */···626624 send = &ic->i_sends[pos];627625 first = send;628626 prev = NULL;629629- scat = &ic->i_data_op->op_sg[sg];627627+ scat = &ic->i_data_op->op_sg[rm->data.op_dmasg];630628 i = 0;631629 do {632630 unsigned int len = 0;···648646 /* Set up the data, if present */649647 if (i < work_alloc650648 && scat != &rm->data.op_sg[rm->data.op_count]) {651651- len = min(RDS_FRAG_SIZE, ib_sg_dma_len(dev, scat) - off);649649+ len = min(RDS_FRAG_SIZE,650650+ ib_sg_dma_len(dev, scat) - rm->data.op_dmaoff);652651 send->s_wr.num_sge = 2;653652654654- send->s_sge[1].addr = ib_sg_dma_address(dev, scat) + off;653653+ send->s_sge[1].addr = ib_sg_dma_address(dev, scat);654654+ send->s_sge[1].addr += rm->data.op_dmaoff;655655 send->s_sge[1].length = len;656656657657 bytes_sent += len;658658- off += len;659659- if (off == ib_sg_dma_len(dev, scat)) {658658+ rm->data.op_dmaoff += len;659659+ if (rm->data.op_dmaoff == ib_sg_dma_len(dev, scat)) {660660 scat++;661661- off = 0;661661+ rm->data.op_dmasg++;662662+ rm->data.op_dmaoff = 0;662663 }663664 }664665
+11-7
net/rds/iw_send.c
···581581 ic->i_unsignaled_wrs = rds_iw_sysctl_max_unsig_wrs;582582 ic->i_unsignaled_bytes = rds_iw_sysctl_max_unsig_bytes;583583 rds_message_addref(rm);584584+ rm->data.op_dmasg = 0;585585+ rm->data.op_dmaoff = 0;584586 ic->i_rm = rm;585587586588 /* Finalize the header */···624622 send = &ic->i_sends[pos];625623 first = send;626624 prev = NULL;627627- scat = &rm->data.op_sg[sg];625625+ scat = &rm->data.op_sg[rm->data.op_dmasg];628626 sent = 0;629627 i = 0;630628···658656659657 send = &ic->i_sends[pos];660658661661- len = min(RDS_FRAG_SIZE, ib_sg_dma_len(dev, scat) - off);659659+ len = min(RDS_FRAG_SIZE,660660+ ib_sg_dma_len(dev, scat) - rm->data.op_dmaoff);662661 rds_iw_xmit_populate_wr(ic, send, pos,663663- ib_sg_dma_address(dev, scat) + off, len,664664- send_flags);662662+ ib_sg_dma_address(dev, scat) + rm->data.op_dmaoff, len,663663+ send_flags);665664666665 /*667666 * We want to delay signaling completions just enough to get···690687 &send->s_wr, send->s_wr.num_sge, send->s_wr.next);691688692689 sent += len;693693- off += len;694694- if (off == ib_sg_dma_len(dev, scat)) {690690+ rm->data.op_dmaoff += len;691691+ if (rm->data.op_dmaoff == ib_sg_dma_len(dev, scat)) {695692 scat++;696696- off = 0;693693+ rm->data.op_dmaoff = 0;694694+ rm->data.op_dmasg++;697695 }698696699697add_header:
+2
net/rds/rds.h
···363363 unsigned int op_active:1;364364 unsigned int op_nents;365365 unsigned int op_count;366366+ unsigned int op_dmasg;367367+ unsigned int op_dmaoff;366368 struct scatterlist *op_sg;367369 } data;368370 };