Lines Matching refs:inc

51 rdsv3_inc_init(struct rdsv3_incoming *inc, struct rdsv3_connection *conn,
54 RDSV3_DPRINTF5("rdsv3_inc_init", "Enter(inc: %p, conn: %p)", inc, conn);
55 inc->i_refcount = 1;
56 list_link_init(&inc->i_item);
57 inc->i_conn = conn;
58 inc->i_saddr = saddr;
59 inc->i_rdma_cookie = 0;
63 rdsv3_inc_addref(struct rdsv3_incoming *inc)
66 "addref inc %p ref %d", inc, atomic_get(&inc->i_refcount));
67 atomic_inc_32(&inc->i_refcount);
71 rdsv3_inc_put(struct rdsv3_incoming *inc)
73 RDSV3_DPRINTF4("rdsv3_inc_put", "put inc %p ref %d",
74 inc, atomic_get(&inc->i_refcount));
75 if (atomic_dec_and_test(&inc->i_refcount)) {
76 ASSERT(!list_link_active(&inc->i_item));
78 inc->i_conn->c_trans->inc_free(inc);
134 rdsv3_recv_incoming_exthdrs(struct rdsv3_incoming *inc, struct rdsv3_sock *rs)
136 struct rdsv3_header *hdr = &inc->i_hdr;
163 inc->i_rdma_cookie = rdsv3_rdma_make_cookie(
192 uint32_be_t daddr, struct rdsv3_incoming *inc, int gfp)
197 inc->i_conn = conn;
198 inc->i_rx_jiffies = jiffies;
201 "conn %p next %llu inc %p seq %llu len %u sport %u dport %u "
204 inc,
205 (unsigned long long)ntohll(inc->i_hdr.h_sequence),
206 ntohl(inc->i_hdr.h_len),
207 ntohs(inc->i_hdr.h_sport),
208 ntohs(inc->i_hdr.h_dport),
209 inc->i_hdr.h_flags,
210 inc->i_rx_jiffies);
232 if (ntohll(inc->i_hdr.h_sequence) < conn->c_next_rx_seq &&
233 (inc->i_hdr.h_flags & RDSV3_FLAG_RETRANSMITTED)) {
237 conn->c_next_rx_seq = ntohll(inc->i_hdr.h_sequence) + 1;
239 if (rdsv3_sysctl_ping_enable && inc->i_hdr.h_dport == 0) {
241 (void) rdsv3_send_pong(conn, inc->i_hdr.h_sport);
245 rs = rdsv3_find_bound(conn, inc->i_hdr.h_dport);
252 rdsv3_recv_incoming_exthdrs(inc, rs);
262 "adding inc %p to rs %p's recv queue", inc, rs);
264 rdsv3_recv_rcvbuf_delta(rs, sk, inc->i_conn->c_lcong,
265 ntohl(inc->i_hdr.h_len),
266 inc->i_hdr.h_dport);
267 rdsv3_inc_addref(inc);
268 list_insert_tail(&rs->rs_recv_queue, inc);
296 rdsv3_next_incoming(struct rdsv3_sock *rs, struct rdsv3_incoming **inc)
298 if (!*inc) {
301 *inc = list_head(&rs->rs_recv_queue);
302 rdsv3_inc_addref(*inc);
307 return (*inc != NULL);
311 rdsv3_still_queued(struct rdsv3_sock *rs, struct rdsv3_incoming *inc,
317 RDSV3_DPRINTF4("rdsv3_still_queued", "Enter rs: %p inc: %p drop: %d",
318 rs, inc, drop);
321 if (list_link_active(&inc->i_item)) {
325 rdsv3_recv_rcvbuf_delta(rs, sk, inc->i_conn->c_lcong,
326 -ntohl(inc->i_hdr.h_len),
327 inc->i_hdr.h_dport);
328 list_remove_node(&inc->i_item);
329 rdsv3_inc_put(inc);
335 "inc %p rs %p still %d dropped %d", inc, rs, ret, drop);
444 rdsv3_cmsg_recv(struct rdsv3_incoming *inc, struct msghdr *msg)
447 if (inc->i_rdma_cookie) {
449 sizeof (inc->i_rdma_cookie), &inc->i_rdma_cookie);
462 struct rdsv3_incoming *inc = NULL;
495 if (inc) {
496 sin->sin_port = inc->i_hdr.h_sport;
497 sin->sin_addr.s_addr = inc->i_saddr;
510 if (!rdsv3_next_incoming(rs, &inc)) {
523 !rdsv3_next_incoming(rs, &inc)));
535 !rdsv3_next_incoming(rs, &inc))) {
551 "recvmsg woke rs: %p inc %p ret %d",
552 rs, inc, -ret);
565 "copying inc %p from %u.%u.%u.%u:%u to user", inc,
566 NIPQUAD(inc->i_conn->c_faddr),
567 ntohs(inc->i_hdr.h_sport));
569 ret = inc->i_conn->c_trans->inc_copy_to_user(inc, uio, size);
578 if (!rdsv3_still_queued(rs, inc, !(msg_flags & MSG_PEEK))) {
579 rdsv3_inc_put(inc);
580 inc = NULL;
585 if (ret < ntohl(inc->i_hdr.h_len)) {
587 ret = ntohl(inc->i_hdr.h_len);
591 if (rdsv3_cmsg_recv(inc, msg)) {
601 sin->sin_port = inc->i_hdr.h_sport;
602 sin->sin_addr.s_addr = inc->i_saddr;
611 if (inc)
612 rdsv3_inc_put(inc);
632 struct rdsv3_incoming *inc, *tmp;
637 RDSV3_FOR_EACH_LIST_NODE_SAFE(inc, tmp, &rs->rs_recv_queue, i_item) {
638 rdsv3_recv_rcvbuf_delta(rs, sk, inc->i_conn->c_lcong,
639 -ntohl(inc->i_hdr.h_len),
640 inc->i_hdr.h_dport);
641 list_remove_node(&inc->i_item);
642 rdsv3_inc_put(inc);
650 * inc->i_saddr isn't used here because it is only set in the receive
654 rdsv3_inc_info_copy(struct rdsv3_incoming *inc,
660 minfo.seq = ntohll(inc->i_hdr.h_sequence);
661 minfo.len = ntohl(inc->i_hdr.h_len);
666 minfo.lport = inc->i_hdr.h_dport;
667 minfo.fport = inc->i_hdr.h_sport;
671 minfo.lport = inc->i_hdr.h_sport;
672 minfo.fport = inc->i_hdr.h_dport;