mad_send_wr 89 drivers/infiniband/core/agent.c struct ib_mad_send_wr_private *mad_send_wr; mad_send_wr 126 drivers/infiniband/core/agent.c mad_send_wr = container_of(send_buf, mad_send_wr 129 drivers/infiniband/core/agent.c mad_send_wr->send_wr.port_num = port_num; mad_send_wr 58 drivers/infiniband/core/mad.c static void create_mad_addr_info(struct ib_mad_send_wr_private *mad_send_wr, mad_send_wr 65 drivers/infiniband/core/mad.c struct ib_ud_wr *wr = &mad_send_wr->send_wr; mad_send_wr 809 drivers/infiniband/core/mad.c struct ib_mad_send_wr_private *mad_send_wr) mad_send_wr 812 drivers/infiniband/core/mad.c struct ib_smp *smp = mad_send_wr->send_buf.mad; mad_send_wr 822 drivers/infiniband/core/mad.c struct ib_ud_wr *send_wr = &mad_send_wr->send_wr; mad_send_wr 909 drivers/infiniband/core/mad.c mad_wc.byte_len = mad_send_wr->send_buf.hdr_len mad_send_wr 910 drivers/infiniband/core/mad.c + mad_send_wr->send_buf.data_len mad_send_wr 964 drivers/infiniband/core/mad.c local->mad_send_wr = mad_send_wr; mad_send_wr 966 drivers/infiniband/core/mad.c local->mad_send_wr->send_wr.pkey_index = out_mad_pkey_index; mad_send_wr 994 drivers/infiniband/core/mad.c static void free_send_rmpp_list(struct ib_mad_send_wr_private *mad_send_wr) mad_send_wr 998 drivers/infiniband/core/mad.c list_for_each_entry_safe(s, t, &mad_send_wr->rmpp_list, list) { mad_send_wr 1057 drivers/infiniband/core/mad.c struct ib_mad_send_wr_private *mad_send_wr; mad_send_wr 1084 drivers/infiniband/core/mad.c buf = kzalloc(sizeof *mad_send_wr + size, gfp_mask); mad_send_wr 1088 drivers/infiniband/core/mad.c mad_send_wr = buf + size; mad_send_wr 1089 drivers/infiniband/core/mad.c INIT_LIST_HEAD(&mad_send_wr->rmpp_list); mad_send_wr 1090 drivers/infiniband/core/mad.c mad_send_wr->send_buf.mad = buf; mad_send_wr 1091 drivers/infiniband/core/mad.c mad_send_wr->send_buf.hdr_len = hdr_len; mad_send_wr 1092 drivers/infiniband/core/mad.c mad_send_wr->send_buf.data_len = data_len; mad_send_wr 1093 drivers/infiniband/core/mad.c mad_send_wr->pad = pad; mad_send_wr 1095 drivers/infiniband/core/mad.c mad_send_wr->mad_agent_priv = mad_agent_priv; mad_send_wr 1096 drivers/infiniband/core/mad.c mad_send_wr->sg_list[0].length = hdr_len; mad_send_wr 1097 drivers/infiniband/core/mad.c mad_send_wr->sg_list[0].lkey = mad_agent->qp->pd->local_dma_lkey; mad_send_wr 1102 drivers/infiniband/core/mad.c mad_send_wr->sg_list[1].length = data_len; mad_send_wr 1104 drivers/infiniband/core/mad.c mad_send_wr->sg_list[1].length = mad_size - hdr_len; mad_send_wr 1106 drivers/infiniband/core/mad.c mad_send_wr->sg_list[1].lkey = mad_agent->qp->pd->local_dma_lkey; mad_send_wr 1108 drivers/infiniband/core/mad.c mad_send_wr->mad_list.cqe.done = ib_mad_send_done; mad_send_wr 1110 drivers/infiniband/core/mad.c mad_send_wr->send_wr.wr.wr_cqe = &mad_send_wr->mad_list.cqe; mad_send_wr 1111 drivers/infiniband/core/mad.c mad_send_wr->send_wr.wr.sg_list = mad_send_wr->sg_list; mad_send_wr 1112 drivers/infiniband/core/mad.c mad_send_wr->send_wr.wr.num_sge = 2; mad_send_wr 1113 drivers/infiniband/core/mad.c mad_send_wr->send_wr.wr.opcode = IB_WR_SEND; mad_send_wr 1114 drivers/infiniband/core/mad.c mad_send_wr->send_wr.wr.send_flags = IB_SEND_SIGNALED; mad_send_wr 1115 drivers/infiniband/core/mad.c mad_send_wr->send_wr.remote_qpn = remote_qpn; mad_send_wr 1116 drivers/infiniband/core/mad.c mad_send_wr->send_wr.remote_qkey = IB_QP_SET_QKEY; mad_send_wr 1117 drivers/infiniband/core/mad.c mad_send_wr->send_wr.pkey_index = pkey_index; mad_send_wr 1120 drivers/infiniband/core/mad.c ret = alloc_send_rmpp_list(mad_send_wr, mad_size, gfp_mask); mad_send_wr 1127 drivers/infiniband/core/mad.c mad_send_wr->send_buf.mad_agent = mad_agent; mad_send_wr 1129 drivers/infiniband/core/mad.c return &mad_send_wr->send_buf; mad_send_wr 1164 drivers/infiniband/core/mad.c struct ib_mad_send_wr_private *mad_send_wr; mad_send_wr 1167 drivers/infiniband/core/mad.c mad_send_wr = container_of(send_buf, struct ib_mad_send_wr_private, mad_send_wr 1169 drivers/infiniband/core/mad.c list = &mad_send_wr->cur_seg->list; mad_send_wr 1171 drivers/infiniband/core/mad.c if (mad_send_wr->cur_seg->num < seg_num) { mad_send_wr 1172 drivers/infiniband/core/mad.c list_for_each_entry(mad_send_wr->cur_seg, list, list) mad_send_wr 1173 drivers/infiniband/core/mad.c if (mad_send_wr->cur_seg->num == seg_num) mad_send_wr 1175 drivers/infiniband/core/mad.c } else if (mad_send_wr->cur_seg->num > seg_num) { mad_send_wr 1176 drivers/infiniband/core/mad.c list_for_each_entry_reverse(mad_send_wr->cur_seg, list, list) mad_send_wr 1177 drivers/infiniband/core/mad.c if (mad_send_wr->cur_seg->num == seg_num) mad_send_wr 1180 drivers/infiniband/core/mad.c return mad_send_wr->cur_seg->data; mad_send_wr 1184 drivers/infiniband/core/mad.c static inline void *ib_get_payload(struct ib_mad_send_wr_private *mad_send_wr) mad_send_wr 1186 drivers/infiniband/core/mad.c if (mad_send_wr->send_buf.seg_count) mad_send_wr 1187 drivers/infiniband/core/mad.c return ib_get_rmpp_segment(&mad_send_wr->send_buf, mad_send_wr 1188 drivers/infiniband/core/mad.c mad_send_wr->seg_num); mad_send_wr 1190 drivers/infiniband/core/mad.c return mad_send_wr->send_buf.mad + mad_send_wr 1191 drivers/infiniband/core/mad.c mad_send_wr->send_buf.hdr_len; mad_send_wr 1197 drivers/infiniband/core/mad.c struct ib_mad_send_wr_private *mad_send_wr; mad_send_wr 1201 drivers/infiniband/core/mad.c mad_send_wr = container_of(send_buf, struct ib_mad_send_wr_private, mad_send_wr 1204 drivers/infiniband/core/mad.c free_send_rmpp_list(mad_send_wr); mad_send_wr 1210 drivers/infiniband/core/mad.c int ib_send_mad(struct ib_mad_send_wr_private *mad_send_wr) mad_send_wr 1220 drivers/infiniband/core/mad.c qp_info = mad_send_wr->mad_agent_priv->qp_info; mad_send_wr 1221 drivers/infiniband/core/mad.c mad_send_wr->mad_list.mad_queue = &qp_info->send_queue; mad_send_wr 1222 drivers/infiniband/core/mad.c mad_send_wr->mad_list.cqe.done = ib_mad_send_done; mad_send_wr 1223 drivers/infiniband/core/mad.c mad_send_wr->send_wr.wr.wr_cqe = &mad_send_wr->mad_list.cqe; mad_send_wr 1225 drivers/infiniband/core/mad.c mad_agent = mad_send_wr->send_buf.mad_agent; mad_send_wr 1226 drivers/infiniband/core/mad.c sge = mad_send_wr->sg_list; mad_send_wr 1228 drivers/infiniband/core/mad.c mad_send_wr->send_buf.mad, mad_send_wr 1234 drivers/infiniband/core/mad.c mad_send_wr->header_mapping = sge[0].addr; mad_send_wr 1237 drivers/infiniband/core/mad.c ib_get_payload(mad_send_wr), mad_send_wr 1242 drivers/infiniband/core/mad.c mad_send_wr->header_mapping, mad_send_wr 1246 drivers/infiniband/core/mad.c mad_send_wr->payload_mapping = sge[1].addr; mad_send_wr 1250 drivers/infiniband/core/mad.c trace_ib_mad_ib_send_mad(mad_send_wr, qp_info); mad_send_wr 1251 drivers/infiniband/core/mad.c ret = ib_post_send(mad_agent->qp, &mad_send_wr->send_wr.wr, mad_send_wr 1261 drivers/infiniband/core/mad.c list_add_tail(&mad_send_wr->mad_list.list, list); mad_send_wr 1266 drivers/infiniband/core/mad.c mad_send_wr->header_mapping, mad_send_wr 1269 drivers/infiniband/core/mad.c mad_send_wr->payload_mapping, mad_send_wr 1284 drivers/infiniband/core/mad.c struct ib_mad_send_wr_private *mad_send_wr; mad_send_wr 1290 drivers/infiniband/core/mad.c mad_send_wr = container_of(send_buf, mad_send_wr 1293 drivers/infiniband/core/mad.c mad_agent_priv = mad_send_wr->mad_agent_priv; mad_send_wr 1296 drivers/infiniband/core/mad.c mad_send_wr->send_wr.pkey_index); mad_send_wr 1320 drivers/infiniband/core/mad.c mad_send_wr->send_wr.ah = send_buf->ah; mad_send_wr 1325 drivers/infiniband/core/mad.c mad_send_wr); mad_send_wr 1332 drivers/infiniband/core/mad.c mad_send_wr->tid = ((struct ib_mad_hdr *) send_buf->mad)->tid; mad_send_wr 1334 drivers/infiniband/core/mad.c mad_send_wr->timeout = msecs_to_jiffies(send_buf->timeout_ms); mad_send_wr 1335 drivers/infiniband/core/mad.c mad_send_wr->max_retries = send_buf->retries; mad_send_wr 1336 drivers/infiniband/core/mad.c mad_send_wr->retries_left = send_buf->retries; mad_send_wr 1339 drivers/infiniband/core/mad.c mad_send_wr->refcount = 1 + (mad_send_wr->timeout > 0); mad_send_wr 1340 drivers/infiniband/core/mad.c mad_send_wr->status = IB_WC_SUCCESS; mad_send_wr 1345 drivers/infiniband/core/mad.c list_add_tail(&mad_send_wr->agent_list, mad_send_wr 1350 drivers/infiniband/core/mad.c ret = ib_send_rmpp_mad(mad_send_wr); mad_send_wr 1352 drivers/infiniband/core/mad.c ret = ib_send_mad(mad_send_wr); mad_send_wr 1354 drivers/infiniband/core/mad.c ret = ib_send_mad(mad_send_wr); mad_send_wr 1358 drivers/infiniband/core/mad.c list_del(&mad_send_wr->agent_list); mad_send_wr 2011 drivers/infiniband/core/mad.c void ib_mark_mad_done(struct ib_mad_send_wr_private *mad_send_wr) mad_send_wr 2013 drivers/infiniband/core/mad.c mad_send_wr->timeout = 0; mad_send_wr 2014 drivers/infiniband/core/mad.c if (mad_send_wr->refcount == 1) mad_send_wr 2015 drivers/infiniband/core/mad.c list_move_tail(&mad_send_wr->agent_list, mad_send_wr 2016 drivers/infiniband/core/mad.c &mad_send_wr->mad_agent_priv->done_list); mad_send_wr 2022 drivers/infiniband/core/mad.c struct ib_mad_send_wr_private *mad_send_wr; mad_send_wr 2049 drivers/infiniband/core/mad.c mad_send_wr = ib_find_send_mad(mad_agent_priv, mad_recv_wc); mad_send_wr 2050 drivers/infiniband/core/mad.c if (!mad_send_wr) { mad_send_wr 2071 drivers/infiniband/core/mad.c ib_mark_mad_done(mad_send_wr); mad_send_wr 2077 drivers/infiniband/core/mad.c &mad_send_wr->send_buf, mad_send_wr 2083 drivers/infiniband/core/mad.c mad_send_wc.send_buf = &mad_send_wr->send_buf; mad_send_wr 2084 drivers/infiniband/core/mad.c ib_mad_complete_send_wr(mad_send_wr, &mad_send_wc); mad_send_wr 2392 drivers/infiniband/core/mad.c struct ib_mad_send_wr_private *mad_send_wr; mad_send_wr 2398 drivers/infiniband/core/mad.c mad_send_wr = list_entry(mad_agent_priv->wait_list.next, mad_send_wr 2403 drivers/infiniband/core/mad.c mad_send_wr->timeout)) { mad_send_wr 2404 drivers/infiniband/core/mad.c mad_agent_priv->timeout = mad_send_wr->timeout; mad_send_wr 2405 drivers/infiniband/core/mad.c delay = mad_send_wr->timeout - jiffies; mad_send_wr 2414 drivers/infiniband/core/mad.c static void wait_for_response(struct ib_mad_send_wr_private *mad_send_wr) mad_send_wr 2421 drivers/infiniband/core/mad.c mad_agent_priv = mad_send_wr->mad_agent_priv; mad_send_wr 2422 drivers/infiniband/core/mad.c list_del(&mad_send_wr->agent_list); mad_send_wr 2424 drivers/infiniband/core/mad.c delay = mad_send_wr->timeout; mad_send_wr 2425 drivers/infiniband/core/mad.c mad_send_wr->timeout += jiffies; mad_send_wr 2432 drivers/infiniband/core/mad.c if (time_after(mad_send_wr->timeout, mad_send_wr 2439 drivers/infiniband/core/mad.c list_add(&mad_send_wr->agent_list, list_item); mad_send_wr 2442 drivers/infiniband/core/mad.c if (mad_agent_priv->wait_list.next == &mad_send_wr->agent_list) mad_send_wr 2447 drivers/infiniband/core/mad.c void ib_reset_mad_timeout(struct ib_mad_send_wr_private *mad_send_wr, mad_send_wr 2450 drivers/infiniband/core/mad.c mad_send_wr->timeout = msecs_to_jiffies(timeout_ms); mad_send_wr 2451 drivers/infiniband/core/mad.c wait_for_response(mad_send_wr); mad_send_wr 2457 drivers/infiniband/core/mad.c void ib_mad_complete_send_wr(struct ib_mad_send_wr_private *mad_send_wr, mad_send_wr 2464 drivers/infiniband/core/mad.c mad_agent_priv = mad_send_wr->mad_agent_priv; mad_send_wr 2467 drivers/infiniband/core/mad.c ret = ib_process_rmpp_send_wc(mad_send_wr, mad_send_wc); mad_send_wr 2474 drivers/infiniband/core/mad.c mad_send_wr->status == IB_WC_SUCCESS) { mad_send_wr 2475 drivers/infiniband/core/mad.c mad_send_wr->status = mad_send_wc->status; mad_send_wr 2476 drivers/infiniband/core/mad.c mad_send_wr->refcount -= (mad_send_wr->timeout > 0); mad_send_wr 2479 drivers/infiniband/core/mad.c if (--mad_send_wr->refcount > 0) { mad_send_wr 2480 drivers/infiniband/core/mad.c if (mad_send_wr->refcount == 1 && mad_send_wr->timeout && mad_send_wr 2481 drivers/infiniband/core/mad.c mad_send_wr->status == IB_WC_SUCCESS) { mad_send_wr 2482 drivers/infiniband/core/mad.c wait_for_response(mad_send_wr); mad_send_wr 2488 drivers/infiniband/core/mad.c list_del(&mad_send_wr->agent_list); mad_send_wr 2492 drivers/infiniband/core/mad.c if (mad_send_wr->status != IB_WC_SUCCESS ) mad_send_wr 2493 drivers/infiniband/core/mad.c mad_send_wc->status = mad_send_wr->status; mad_send_wr 2512 drivers/infiniband/core/mad.c struct ib_mad_send_wr_private *mad_send_wr, *queued_send_wr; mad_send_wr 2527 drivers/infiniband/core/mad.c mad_send_wr = container_of(mad_list, struct ib_mad_send_wr_private, mad_send_wr 2532 drivers/infiniband/core/mad.c trace_ib_mad_send_done_agent(mad_send_wr->mad_agent_priv); mad_send_wr 2533 drivers/infiniband/core/mad.c trace_ib_mad_send_done_handler(mad_send_wr, wc); mad_send_wr 2536 drivers/infiniband/core/mad.c ib_dma_unmap_single(mad_send_wr->send_buf.mad_agent->device, mad_send_wr 2537 drivers/infiniband/core/mad.c mad_send_wr->header_mapping, mad_send_wr 2538 drivers/infiniband/core/mad.c mad_send_wr->sg_list[0].length, DMA_TO_DEVICE); mad_send_wr 2539 drivers/infiniband/core/mad.c ib_dma_unmap_single(mad_send_wr->send_buf.mad_agent->device, mad_send_wr 2540 drivers/infiniband/core/mad.c mad_send_wr->payload_mapping, mad_send_wr 2541 drivers/infiniband/core/mad.c mad_send_wr->sg_list[1].length, DMA_TO_DEVICE); mad_send_wr 2557 drivers/infiniband/core/mad.c mad_send_wc.send_buf = &mad_send_wr->send_buf; mad_send_wr 2561 drivers/infiniband/core/mad.c snoop_send(qp_info, &mad_send_wr->send_buf, &mad_send_wc, mad_send_wr 2563 drivers/infiniband/core/mad.c ib_mad_complete_send_wr(mad_send_wr, &mad_send_wc); mad_send_wr 2572 drivers/infiniband/core/mad.c mad_send_wr = queued_send_wr; mad_send_wr 2581 drivers/infiniband/core/mad.c struct ib_mad_send_wr_private *mad_send_wr; mad_send_wr 2587 drivers/infiniband/core/mad.c mad_send_wr = container_of(mad_list, mad_send_wr 2590 drivers/infiniband/core/mad.c mad_send_wr->retry = 1; mad_send_wr 2601 drivers/infiniband/core/mad.c struct ib_mad_send_wr_private *mad_send_wr; mad_send_wr 2608 drivers/infiniband/core/mad.c mad_send_wr = container_of(mad_list, struct ib_mad_send_wr_private, mad_send_wr 2611 drivers/infiniband/core/mad.c if (mad_send_wr->retry) { mad_send_wr 2613 drivers/infiniband/core/mad.c mad_send_wr->retry = 0; mad_send_wr 2614 drivers/infiniband/core/mad.c trace_ib_mad_error_handler(mad_send_wr, qp_info); mad_send_wr 2615 drivers/infiniband/core/mad.c ret = ib_post_send(qp_info->qp, &mad_send_wr->send_wr.wr, mad_send_wr 2646 drivers/infiniband/core/mad.c struct ib_mad_send_wr_private *mad_send_wr, *temp_mad_send_wr; mad_send_wr 2653 drivers/infiniband/core/mad.c list_for_each_entry_safe(mad_send_wr, temp_mad_send_wr, mad_send_wr 2655 drivers/infiniband/core/mad.c if (mad_send_wr->status == IB_WC_SUCCESS) { mad_send_wr 2656 drivers/infiniband/core/mad.c mad_send_wr->status = IB_WC_WR_FLUSH_ERR; mad_send_wr 2657 drivers/infiniband/core/mad.c mad_send_wr->refcount -= (mad_send_wr->timeout > 0); mad_send_wr 2669 drivers/infiniband/core/mad.c list_for_each_entry_safe(mad_send_wr, temp_mad_send_wr, mad_send_wr 2671 drivers/infiniband/core/mad.c mad_send_wc.send_buf = &mad_send_wr->send_buf; mad_send_wr 2672 drivers/infiniband/core/mad.c list_del(&mad_send_wr->agent_list); mad_send_wr 2683 drivers/infiniband/core/mad.c struct ib_mad_send_wr_private *mad_send_wr; mad_send_wr 2685 drivers/infiniband/core/mad.c list_for_each_entry(mad_send_wr, &mad_agent_priv->wait_list, mad_send_wr 2687 drivers/infiniband/core/mad.c if (&mad_send_wr->send_buf == send_buf) mad_send_wr 2688 drivers/infiniband/core/mad.c return mad_send_wr; mad_send_wr 2691 drivers/infiniband/core/mad.c list_for_each_entry(mad_send_wr, &mad_agent_priv->send_list, mad_send_wr 2694 drivers/infiniband/core/mad.c mad_send_wr->send_buf.mad) && mad_send_wr 2695 drivers/infiniband/core/mad.c &mad_send_wr->send_buf == send_buf) mad_send_wr 2696 drivers/infiniband/core/mad.c return mad_send_wr; mad_send_wr 2705 drivers/infiniband/core/mad.c struct ib_mad_send_wr_private *mad_send_wr; mad_send_wr 2712 drivers/infiniband/core/mad.c mad_send_wr = find_send_wr(mad_agent_priv, send_buf); mad_send_wr 2713 drivers/infiniband/core/mad.c if (!mad_send_wr || mad_send_wr->status != IB_WC_SUCCESS) { mad_send_wr 2718 drivers/infiniband/core/mad.c active = (!mad_send_wr->timeout || mad_send_wr->refcount > 1); mad_send_wr 2720 drivers/infiniband/core/mad.c mad_send_wr->status = IB_WC_WR_FLUSH_ERR; mad_send_wr 2721 drivers/infiniband/core/mad.c mad_send_wr->refcount -= (mad_send_wr->timeout > 0); mad_send_wr 2724 drivers/infiniband/core/mad.c mad_send_wr->send_buf.timeout_ms = timeout_ms; mad_send_wr 2726 drivers/infiniband/core/mad.c mad_send_wr->timeout = msecs_to_jiffies(timeout_ms); mad_send_wr 2728 drivers/infiniband/core/mad.c ib_reset_mad_timeout(mad_send_wr, timeout_ms); mad_send_wr 2782 drivers/infiniband/core/mad.c local->mad_send_wr->send_wr.wr.wr_cqe, mad_send_wr 2784 drivers/infiniband/core/mad.c local->mad_send_wr->send_wr.pkey_index, mad_send_wr 2810 drivers/infiniband/core/mad.c &local->mad_send_wr->send_buf, mad_send_wr 2821 drivers/infiniband/core/mad.c mad_send_wc.send_buf = &local->mad_send_wr->send_buf; mad_send_wr 2824 drivers/infiniband/core/mad.c &local->mad_send_wr->send_buf, mad_send_wr 2838 drivers/infiniband/core/mad.c static int retry_send(struct ib_mad_send_wr_private *mad_send_wr) mad_send_wr 2842 drivers/infiniband/core/mad.c if (!mad_send_wr->retries_left) mad_send_wr 2845 drivers/infiniband/core/mad.c mad_send_wr->retries_left--; mad_send_wr 2846 drivers/infiniband/core/mad.c mad_send_wr->send_buf.retries++; mad_send_wr 2848 drivers/infiniband/core/mad.c mad_send_wr->timeout = msecs_to_jiffies(mad_send_wr->send_buf.timeout_ms); mad_send_wr 2850 drivers/infiniband/core/mad.c if (ib_mad_kernel_rmpp_agent(&mad_send_wr->mad_agent_priv->agent)) { mad_send_wr 2851 drivers/infiniband/core/mad.c ret = ib_retry_rmpp(mad_send_wr); mad_send_wr 2854 drivers/infiniband/core/mad.c ret = ib_send_mad(mad_send_wr); mad_send_wr 2864 drivers/infiniband/core/mad.c ret = ib_send_mad(mad_send_wr); mad_send_wr 2867 drivers/infiniband/core/mad.c mad_send_wr->refcount++; mad_send_wr 2868 drivers/infiniband/core/mad.c list_add_tail(&mad_send_wr->agent_list, mad_send_wr 2869 drivers/infiniband/core/mad.c &mad_send_wr->mad_agent_priv->send_list); mad_send_wr 2877 drivers/infiniband/core/mad.c struct ib_mad_send_wr_private *mad_send_wr; mad_send_wr 2887 drivers/infiniband/core/mad.c mad_send_wr = list_entry(mad_agent_priv->wait_list.next, mad_send_wr 2891 drivers/infiniband/core/mad.c if (time_after(mad_send_wr->timeout, jiffies)) { mad_send_wr 2892 drivers/infiniband/core/mad.c delay = mad_send_wr->timeout - jiffies; mad_send_wr 2901 drivers/infiniband/core/mad.c list_del(&mad_send_wr->agent_list); mad_send_wr 2902 drivers/infiniband/core/mad.c if (mad_send_wr->status == IB_WC_SUCCESS && mad_send_wr 2903 drivers/infiniband/core/mad.c !retry_send(mad_send_wr)) mad_send_wr 2908 drivers/infiniband/core/mad.c if (mad_send_wr->status == IB_WC_SUCCESS) mad_send_wr 2911 drivers/infiniband/core/mad.c mad_send_wc.status = mad_send_wr->status; mad_send_wr 2912 drivers/infiniband/core/mad.c mad_send_wc.send_buf = &mad_send_wr->send_buf; mad_send_wr 153 drivers/infiniband/core/mad_priv.h struct ib_mad_send_wr_private *mad_send_wr; mad_send_wr 212 drivers/infiniband/core/mad_priv.h int ib_send_mad(struct ib_mad_send_wr_private *mad_send_wr); mad_send_wr 218 drivers/infiniband/core/mad_priv.h void ib_mad_complete_send_wr(struct ib_mad_send_wr_private *mad_send_wr, mad_send_wr 221 drivers/infiniband/core/mad_priv.h void ib_mark_mad_done(struct ib_mad_send_wr_private *mad_send_wr); mad_send_wr 223 drivers/infiniband/core/mad_priv.h void ib_reset_mad_timeout(struct ib_mad_send_wr_private *mad_send_wr, mad_send_wr 576 drivers/infiniband/core/mad_rmpp.c static int send_next_seg(struct ib_mad_send_wr_private *mad_send_wr) mad_send_wr 582 drivers/infiniband/core/mad_rmpp.c rmpp_mad = mad_send_wr->send_buf.mad; mad_send_wr 584 drivers/infiniband/core/mad_rmpp.c rmpp_mad->rmpp_hdr.seg_num = cpu_to_be32(++mad_send_wr->seg_num); mad_send_wr 586 drivers/infiniband/core/mad_rmpp.c if (mad_send_wr->seg_num == 1) { mad_send_wr 588 drivers/infiniband/core/mad_rmpp.c paylen = (mad_send_wr->send_buf.seg_count * mad_send_wr 589 drivers/infiniband/core/mad_rmpp.c mad_send_wr->send_buf.seg_rmpp_size) - mad_send_wr 590 drivers/infiniband/core/mad_rmpp.c mad_send_wr->pad; mad_send_wr 593 drivers/infiniband/core/mad_rmpp.c if (mad_send_wr->seg_num == mad_send_wr->send_buf.seg_count) { mad_send_wr 595 drivers/infiniband/core/mad_rmpp.c paylen = mad_send_wr->send_buf.seg_rmpp_size - mad_send_wr->pad; mad_send_wr 600 drivers/infiniband/core/mad_rmpp.c timeout = mad_send_wr->send_buf.timeout_ms; mad_send_wr 602 drivers/infiniband/core/mad_rmpp.c mad_send_wr->timeout = msecs_to_jiffies(2000); mad_send_wr 604 drivers/infiniband/core/mad_rmpp.c return ib_send_mad(mad_send_wr); mad_send_wr 610 drivers/infiniband/core/mad_rmpp.c struct ib_mad_send_wr_private *mad_send_wr; mad_send_wr 615 drivers/infiniband/core/mad_rmpp.c mad_send_wr = ib_find_send_mad(agent, mad_recv_wc); mad_send_wr 616 drivers/infiniband/core/mad_rmpp.c if (!mad_send_wr) mad_send_wr 619 drivers/infiniband/core/mad_rmpp.c if ((mad_send_wr->last_ack == mad_send_wr->send_buf.seg_count) || mad_send_wr 620 drivers/infiniband/core/mad_rmpp.c (!mad_send_wr->timeout) || (mad_send_wr->status != IB_WC_SUCCESS)) mad_send_wr 623 drivers/infiniband/core/mad_rmpp.c ib_mark_mad_done(mad_send_wr); mad_send_wr 628 drivers/infiniband/core/mad_rmpp.c wc.send_buf = &mad_send_wr->send_buf; mad_send_wr 629 drivers/infiniband/core/mad_rmpp.c ib_mad_complete_send_wr(mad_send_wr, &wc); mad_send_wr 660 drivers/infiniband/core/mad_rmpp.c struct ib_mad_send_wr_private *mad_send_wr; mad_send_wr 681 drivers/infiniband/core/mad_rmpp.c mad_send_wr = ib_find_send_mad(agent, mad_recv_wc); mad_send_wr 682 drivers/infiniband/core/mad_rmpp.c if (!mad_send_wr) { mad_send_wr 688 drivers/infiniband/core/mad_rmpp.c if ((mad_send_wr->last_ack == mad_send_wr->send_buf.seg_count) && mad_send_wr 689 drivers/infiniband/core/mad_rmpp.c (mad_send_wr->timeout)) { mad_send_wr 695 drivers/infiniband/core/mad_rmpp.c if ((mad_send_wr->last_ack == mad_send_wr->send_buf.seg_count) || mad_send_wr 696 drivers/infiniband/core/mad_rmpp.c (!mad_send_wr->timeout) || (mad_send_wr->status != IB_WC_SUCCESS)) mad_send_wr 699 drivers/infiniband/core/mad_rmpp.c if (seg_num > mad_send_wr->send_buf.seg_count || mad_send_wr 700 drivers/infiniband/core/mad_rmpp.c seg_num > mad_send_wr->newwin) { mad_send_wr 707 drivers/infiniband/core/mad_rmpp.c if (newwin < mad_send_wr->newwin || seg_num < mad_send_wr->last_ack) mad_send_wr 710 drivers/infiniband/core/mad_rmpp.c if (seg_num > mad_send_wr->last_ack) { mad_send_wr 711 drivers/infiniband/core/mad_rmpp.c adjust_last_ack(mad_send_wr, seg_num); mad_send_wr 712 drivers/infiniband/core/mad_rmpp.c mad_send_wr->retries_left = mad_send_wr->max_retries; mad_send_wr 714 drivers/infiniband/core/mad_rmpp.c mad_send_wr->newwin = newwin; mad_send_wr 715 drivers/infiniband/core/mad_rmpp.c if (mad_send_wr->last_ack == mad_send_wr->send_buf.seg_count) { mad_send_wr 717 drivers/infiniband/core/mad_rmpp.c if (!mad_send_wr->send_buf.timeout_ms) { mad_send_wr 720 drivers/infiniband/core/mad_rmpp.c ib_mark_mad_done(mad_send_wr); mad_send_wr 725 drivers/infiniband/core/mad_rmpp.c wc.send_buf = &mad_send_wr->send_buf; mad_send_wr 726 drivers/infiniband/core/mad_rmpp.c ib_mad_complete_send_wr(mad_send_wr, &wc); mad_send_wr 729 drivers/infiniband/core/mad_rmpp.c if (mad_send_wr->refcount == 1) mad_send_wr 730 drivers/infiniband/core/mad_rmpp.c ib_reset_mad_timeout(mad_send_wr, mad_send_wr 731 drivers/infiniband/core/mad_rmpp.c mad_send_wr->send_buf.timeout_ms); mad_send_wr 735 drivers/infiniband/core/mad_rmpp.c } else if (mad_send_wr->refcount == 1 && mad_send_wr 736 drivers/infiniband/core/mad_rmpp.c mad_send_wr->seg_num < mad_send_wr->newwin && mad_send_wr 737 drivers/infiniband/core/mad_rmpp.c mad_send_wr->seg_num < mad_send_wr->send_buf.seg_count) { mad_send_wr 739 drivers/infiniband/core/mad_rmpp.c ret = send_next_seg(mad_send_wr); mad_send_wr 743 drivers/infiniband/core/mad_rmpp.c mad_send_wr->refcount++; mad_send_wr 744 drivers/infiniband/core/mad_rmpp.c list_move_tail(&mad_send_wr->agent_list, mad_send_wr 745 drivers/infiniband/core/mad_rmpp.c &mad_send_wr->mad_agent_priv->send_list); mad_send_wr 851 drivers/infiniband/core/mad_rmpp.c static int init_newwin(struct ib_mad_send_wr_private *mad_send_wr) mad_send_wr 853 drivers/infiniband/core/mad_rmpp.c struct ib_mad_agent_private *agent = mad_send_wr->mad_agent_priv; mad_send_wr 854 drivers/infiniband/core/mad_rmpp.c struct ib_mad_hdr *mad_hdr = mad_send_wr->send_buf.mad; mad_send_wr 871 drivers/infiniband/core/mad_rmpp.c if (rdma_query_ah(mad_send_wr->send_buf.ah, &ah_attr)) mad_send_wr 884 drivers/infiniband/core/mad_rmpp.c int ib_send_rmpp_mad(struct ib_mad_send_wr_private *mad_send_wr) mad_send_wr 889 drivers/infiniband/core/mad_rmpp.c rmpp_mad = mad_send_wr->send_buf.mad; mad_send_wr 895 drivers/infiniband/core/mad_rmpp.c mad_send_wr->seg_num = 1; mad_send_wr 899 drivers/infiniband/core/mad_rmpp.c mad_send_wr->newwin = init_newwin(mad_send_wr); mad_send_wr 902 drivers/infiniband/core/mad_rmpp.c mad_send_wr->refcount += (mad_send_wr->timeout == 0); mad_send_wr 903 drivers/infiniband/core/mad_rmpp.c ret = send_next_seg(mad_send_wr); mad_send_wr 909 drivers/infiniband/core/mad_rmpp.c int ib_process_rmpp_send_wc(struct ib_mad_send_wr_private *mad_send_wr, mad_send_wr 915 drivers/infiniband/core/mad_rmpp.c rmpp_mad = mad_send_wr->send_buf.mad; mad_send_wr 924 drivers/infiniband/core/mad_rmpp.c mad_send_wr->status != IB_WC_SUCCESS) mad_send_wr 927 drivers/infiniband/core/mad_rmpp.c if (!mad_send_wr->timeout) mad_send_wr 930 drivers/infiniband/core/mad_rmpp.c if (mad_send_wr->last_ack == mad_send_wr->send_buf.seg_count) { mad_send_wr 931 drivers/infiniband/core/mad_rmpp.c mad_send_wr->timeout = mad_send_wr 932 drivers/infiniband/core/mad_rmpp.c msecs_to_jiffies(mad_send_wr->send_buf.timeout_ms); mad_send_wr 936 drivers/infiniband/core/mad_rmpp.c if (mad_send_wr->seg_num == mad_send_wr->newwin || mad_send_wr 937 drivers/infiniband/core/mad_rmpp.c mad_send_wr->seg_num == mad_send_wr->send_buf.seg_count) mad_send_wr 940 drivers/infiniband/core/mad_rmpp.c ret = send_next_seg(mad_send_wr); mad_send_wr 948 drivers/infiniband/core/mad_rmpp.c int ib_retry_rmpp(struct ib_mad_send_wr_private *mad_send_wr) mad_send_wr 953 drivers/infiniband/core/mad_rmpp.c rmpp_mad = mad_send_wr->send_buf.mad; mad_send_wr 958 drivers/infiniband/core/mad_rmpp.c if (mad_send_wr->last_ack == mad_send_wr->send_buf.seg_count) mad_send_wr 961 drivers/infiniband/core/mad_rmpp.c mad_send_wr->seg_num = mad_send_wr->last_ack; mad_send_wr 962 drivers/infiniband/core/mad_rmpp.c mad_send_wr->cur_seg = mad_send_wr->last_ack_seg; mad_send_wr 964 drivers/infiniband/core/mad_rmpp.c ret = send_next_seg(mad_send_wr); mad_send_wr 43 drivers/infiniband/core/mad_rmpp.h int ib_send_rmpp_mad(struct ib_mad_send_wr_private *mad_send_wr); mad_send_wr 49 drivers/infiniband/core/mad_rmpp.h int ib_process_rmpp_send_wc(struct ib_mad_send_wr_private *mad_send_wr, mad_send_wr 56 drivers/infiniband/core/mad_rmpp.h int ib_retry_rmpp(struct ib_mad_send_wr_private *mad_send_wr); mad_send_wr 18 include/trace/events/ib_mad.h static void create_mad_addr_info(struct ib_mad_send_wr_private *mad_send_wr,