Lines Matching refs:rm

75 	struct rdsv3_message *rm, *tmp;
83 rm = conn->c_xmit_rm;
84 ro = rm->m_rdma_op;
87 "rm %p mflg 0x%x map %d mihdl %p sgl %p",
88 rm, rm->m_flags, ro->r_mapped,
115 RDSV3_FOR_EACH_LIST_NODE_SAFE(rm, tmp, &conn->c_retrans, m_conn_item) {
116 set_bit(RDSV3_MSG_ACK_REQUIRED, &rm->m_flags);
117 set_bit(RDSV3_MSG_RETRANSMITTED, &rm->m_flags);
118 if (rm->m_rdma_op && rm->m_rdma_op->r_mapped) {
120 "RT rm %p mflg 0x%x sgl %p",
121 rm, rm->m_flags,
122 rm->m_rdma_op->r_rdma_sg[0].swr.wr_sgl);
148 struct rdsv3_message *rm;
213 rm = conn->c_xmit_rm;
214 if (rm != NULL &&
216 conn->c_xmit_sg == rm->m_nents) {
224 rdsv3_message_put(rm);
225 rm = NULL;
229 if (rm == NULL && test_and_clear_bit(0, &conn->c_map_queued)) {
238 rm = rdsv3_cong_update_alloc(conn);
239 if (IS_ERR(rm)) {
240 ret = PTR_ERR(rm);
244 conn->c_xmit_rm = rm;
254 if (rm == NULL) {
260 rm = list_remove_head(&conn->c_send_queue);
261 rdsv3_message_addref(rm);
268 list_insert_tail(&conn->c_retrans, rm);
273 if (rm == NULL) {
287 if (rm->m_rdma_op &&
288 test_bit(RDSV3_MSG_RETRANSMITTED, &rm->m_flags)) {
291 &rm->m_flags))
292 list_remove_node(&rm->m_conn_item);
293 list_insert_tail(&to_be_dropped, rm);
295 rdsv3_message_put(rm);
300 len = ntohl(rm->m_inc.i_hdr.h_len);
303 set_bit(RDSV3_MSG_ACK_REQUIRED, &rm->m_flags);
315 conn->c_xmit_rm = rm;
323 if (rm->m_rdma_op && !conn->c_xmit_rdma_sent) {
324 ret = conn->c_trans->xmit_rdma(conn, rm->m_rdma_op);
332 set_bit(RDSV3_MSG_MAPPED, &rm->m_flags);
336 conn->c_xmit_sg < rm->m_nents) {
337 ret = conn->c_trans->xmit(conn, rm,
353 sg = &rm->m_sg[conn->c_xmit_sg];
364 conn->c_xmit_sg == rm->m_nents));
421 rdsv3_send_sndbuf_remove(struct rdsv3_sock *rs, struct rdsv3_message *rm)
423 uint32_t len = ntohl(rm->m_inc.i_hdr.h_len);
435 rdsv3_send_is_acked(struct rdsv3_message *rm, uint64_t ack,
439 return (is_acked(rm, ack));
440 return (ntohll(rm->m_inc.i_hdr.h_sequence) <= ack);
451 struct rdsv3_message *rm;
459 rm = list_head(&conn->c_retrans);
460 if (ntohll(rm->m_inc.i_hdr.h_sequence) < seq)
464 rm = list_head(&conn->c_send_queue);
465 if (ntohll(rm->m_inc.i_hdr.h_sequence) < seq)
482 rdsv3_rdma_send_complete(struct rdsv3_message *rm, int status)
488 RDSV3_DPRINTF4("rdsv3_rdma_send_complete", "Enter(rm: %p)", rm);
490 mutex_enter(&rm->m_rs_lock);
492 ro = rm->m_rdma_op;
493 if (test_bit(RDSV3_MSG_ON_SOCK, &rm->m_flags) &&
496 rs = rm->m_rs;
506 mutex_exit(&rm->m_rs_lock);
525 RDSV3_DPRINTF4("rdsv3_rdma_send_complete", "Return(rm: %p)", rm);
534 __rdsv3_rdma_send_complete(struct rdsv3_sock *rs, struct rdsv3_message *rm,
541 "Enter(rs: %p, rm: %p)", rs, rm);
543 ro = rm->m_rdma_op;
562 struct rdsv3_message *rm, *tmp, *found = NULL;
568 RDSV3_FOR_EACH_LIST_NODE_SAFE(rm, tmp, &conn->c_retrans, m_conn_item) {
569 if (rm->m_rdma_op == op) {
570 atomic_inc_32(&rm->m_refcount);
571 found = rm;
576 RDSV3_FOR_EACH_LIST_NODE_SAFE(rm, tmp, &conn->c_send_queue,
578 if (rm->m_rdma_op == op) {
579 atomic_inc_32(&rm->m_refcount);
580 found = rm;
603 struct rdsv3_message *rm;
609 rm = list_remove_head(messages);
617 * The message spinlock makes sure nobody clears rm->m_rs
621 mutex_enter(&rm->m_rs_lock);
622 if (!test_bit(RDSV3_MSG_ON_SOCK, &rm->m_flags))
625 if (rs != rm->m_rs) {
630 rs = rm->m_rs;
635 if (test_and_clear_bit(RDSV3_MSG_ON_SOCK, &rm->m_flags)) {
636 struct rdsv3_rdma_op *ro = rm->m_rdma_op;
639 list_remove_node(&rm->m_sock_item);
640 rdsv3_send_sndbuf_remove(rs, rm);
648 rm->m_rdma_op->r_notifier = NULL;
651 rm->m_rs = NULL;
656 mutex_exit(&rm->m_rs_lock);
657 rdsv3_message_put(rm);
659 rdsv3_message_put(rm);
685 struct rdsv3_message *rm, *tmp;
695 RDSV3_FOR_EACH_LIST_NODE_SAFE(rm, tmp, &conn->c_retrans, m_conn_item) {
696 if (!rdsv3_send_is_acked(rm, ack, is_acked))
699 list_remove_node(&rm->m_conn_item);
700 list_insert_tail(&list, rm);
701 clear_bit(RDSV3_MSG_ON_CONN, &rm->m_flags);
722 struct rdsv3_message *rm, *tmp;
735 RDSV3_FOR_EACH_LIST_NODE_SAFE(rm, tmp, &rs->rs_send_queue,
737 if (dest && (dest->sin_addr.s_addr != rm->m_daddr ||
738 dest->sin_port != rm->m_inc.i_hdr.h_dport))
741 list_remove(&rs->rs_send_queue, rm);
742 list_insert_tail(&list, rm);
743 rdsv3_send_sndbuf_remove(rs, rm);
744 clear_bit(RDSV3_MSG_ON_SOCK, &rm->m_flags);
752 RDSV3_FOR_EACH_LIST_NODE(rm, &list, m_sock_item) {
757 mutex_enter(&rm->m_rs_lock);
759 __rdsv3_rdma_send_complete(rs, rm, RDS_RDMA_CANCELED);
760 rm->m_rs = NULL;
761 mutex_exit(&rm->m_rs_lock);
769 if (!test_bit(RDSV3_MSG_ON_CONN, &rm->m_flags))
772 if (conn != rm->m_inc.i_conn) {
775 conn = rm->m_inc.i_conn;
779 if (test_and_clear_bit(RDSV3_MSG_ON_CONN, &rm->m_flags)) {
780 list_remove_node(&rm->m_conn_item);
781 rdsv3_message_put(rm);
792 rm = list_remove_head(&list);
794 rdsv3_message_wait(rm);
795 rdsv3_message_put(rm);
808 struct rdsv3_message *rm, uint16_be_t sport,
813 RDSV3_DPRINTF4("rdsv3_send_queue_rm", "Enter(rs: %p, rm: %p)", rs, rm);
818 len = ntohl(rm->m_inc.i_hdr.h_len);
844 set_bit(RDSV3_MSG_ACK_REQUIRED, &rm->m_flags);
846 list_insert_tail(&rs->rs_send_queue, rm);
847 set_bit(RDSV3_MSG_ON_SOCK, &rm->m_flags);
849 rdsv3_message_addref(rm);
850 rm->m_rs = rs;
856 rdsv3_message_populate_header(&rm->m_inc.i_hdr, sport,
858 rm->m_inc.i_conn = conn;
859 rdsv3_message_addref(rm); /* XXX - called twice */
862 rm->m_inc.i_hdr.h_sequence = htonll(conn->c_next_tx_seq++);
863 list_insert_tail(&conn->c_send_queue, rm);
864 set_bit(RDSV3_MSG_ON_CONN, &rm->m_flags);
869 rm, len, rs, rs->rs_snd_bytes,
871 rm->m_inc.i_hdr.h_sequence));
884 rdsv3_cmsg_send(struct rdsv3_sock *rs, struct rdsv3_message *rm,
898 cmsg, rm, cmsg->cmsg_type);
901 * rm->m_rdma_cookie and rm->m_rdma_mr.
905 ret = rdsv3_cmsg_rdma_args(rs, rm, cmsg);
909 ret = rdsv3_cmsg_rdma_dest(rs, rm, cmsg);
913 ret = rdsv3_cmsg_rdma_map(rs, rm, cmsg);
941 struct rdsv3_message *rm = NULL;
982 rm = rdsv3_message_copy_from_user(uio, payload_len);
983 if (IS_ERR(rm)) {
984 ret = PTR_ERR(rm);
987 rm = NULL;
991 rm->m_daddr = daddr;
994 ret = rdsv3_cmsg_send(rs, rm, msg, &allocated_mr);
997 "rdsv3_cmsg_send(rs: %p rm: %p msg: %p) returned: %d",
998 rs, rm, msg, ret);
1024 if ((rm->m_rdma_cookie || rm->m_rdma_op) &&
1027 rm->m_rdma_op, conn->c_trans->xmit_rdma);
1053 (void) rdsv3_send_queue_rm(rs, conn, rm, rs->rs_bound_port, dport,
1075 (rdsv3_send_queue_rm(rs, conn, rm, rs->rs_bound_port,
1087 while (!rdsv3_send_queue_rm(rs, conn, rm, rs->rs_bound_port,
1121 rdsv3_message_put(rm);
1133 rdsv3_rdma_unuse(rs, rdsv3_rdma_cookie_key(rm->m_rdma_cookie),
1136 if (rm)
1137 rdsv3_message_put(rm);
1147 struct rdsv3_message *rm;
1152 rm = rdsv3_message_alloc(0, KM_NOSLEEP);
1153 if (!rm) {
1158 rm->m_daddr = conn->c_faddr;
1174 list_insert_tail(&conn->c_send_queue, rm);
1175 set_bit(RDSV3_MSG_ON_CONN, &rm->m_flags);
1176 rdsv3_message_addref(rm);
1177 rm->m_inc.i_conn = conn;
1179 rdsv3_message_populate_header(&rm->m_inc.i_hdr, 0, dport,
1190 rdsv3_message_put(rm);
1196 if (rm)
1197 rdsv3_message_put(rm);