Lines Matching refs:qp_info

59 			  struct ib_mad_qp_info *qp_info,  in create_mad_addr_info()  argument
97 static int ib_mad_post_receive_mads(struct ib_mad_qp_info *qp_info,
358 if (!port_priv->qp_info[qpn].qp) { in ib_register_mad_agent()
381 mad_agent_priv->qp_info = &port_priv->qp_info[qpn]; in ib_register_mad_agent()
388 mad_agent_priv->agent.qp = port_priv->qp_info[qpn].qp; in ib_register_mad_agent()
497 port_priv = mad_agent_priv->qp_info->port_priv; in unregister_mad_agent()
608 size_t mad_size = port_mad_size(mad_agent_priv->qp_info->port_priv); in handle_outgoing_dr_smp()
611 bool opa = rdma_cap_opa_mad(mad_agent_priv->qp_info->port_priv->device, in handle_outgoing_dr_smp()
612 mad_agent_priv->qp_info->port_priv->port_num); in handle_outgoing_dr_smp()
759 queue_work(mad_agent_priv->qp_info->port_priv->wq, in handle_outgoing_dr_smp()
995 struct ib_mad_qp_info *qp_info; in ib_send_mad() local
1003 qp_info = mad_send_wr->mad_agent_priv->qp_info; in ib_send_mad()
1004 mad_send_wr->mad_list.mad_queue = &qp_info->send_queue; in ib_send_mad()
1031 spin_lock_irqsave(&qp_info->send_queue.lock, flags); in ib_send_mad()
1032 if (qp_info->send_queue.count < qp_info->send_queue.max_active) { in ib_send_mad()
1033 trace_ib_mad_ib_send_mad(mad_send_wr, qp_info); in ib_send_mad()
1036 list = &qp_info->send_queue.list; in ib_send_mad()
1039 list = &qp_info->overflow_list; in ib_send_mad()
1043 qp_info->send_queue.count++; in ib_send_mad()
1046 spin_unlock_irqrestore(&qp_info->send_queue.lock, flags); in ib_send_mad()
1284 port_priv = agent_priv->qp_info->port_priv; in add_nonoui_reg_req()
1348 port_priv = agent_priv->qp_info->port_priv; in add_oui_reg_req()
1450 port_priv = agent_priv->qp_info->port_priv; in remove_mad_reg_req()
1615 const struct ib_mad_qp_info *qp_info, in validate_mad() argument
1619 u32 qp_num = qp_info->qp->qp_num; in validate_mad()
1857 const struct ib_mad_qp_info *qp_info, in handle_ib_smi() argument
1898 qp_info->qp->qp_num, in handle_ib_smi()
1944 struct ib_mad_qp_info *qp_info, in handle_opa_smi() argument
1988 qp_info->qp->qp_num, in handle_opa_smi()
2000 struct ib_mad_qp_info *qp_info, in handle_smi() argument
2011 return handle_opa_smi(port_priv, qp_info, wc, port_num, recv, in handle_smi()
2014 return handle_ib_smi(port_priv, qp_info, wc, port_num, recv, response); in handle_smi()
2022 struct ib_mad_qp_info *qp_info; in ib_mad_recv_done() local
2043 qp_info = mad_list->mad_queue->qp_info; in ib_mad_recv_done()
2046 opa = rdma_cap_opa_mad(qp_info->port_priv->device, in ib_mad_recv_done()
2047 qp_info->port_priv->port_num); in ib_mad_recv_done()
2073 if (!validate_mad((const struct ib_mad_hdr *)recv->mad, qp_info, opa)) in ib_mad_recv_done()
2076 trace_ib_mad_recv_done_handler(qp_info, wc, in ib_mad_recv_done()
2091 if (handle_smi(port_priv, qp_info, wc, port_num, recv, in ib_mad_recv_done()
2116 qp_info->qp->qp_num, in ib_mad_recv_done()
2136 qp_info->qp->qp_num, mad_size, opa); in ib_mad_recv_done()
2142 ib_mad_post_receive_mads(qp_info, response); in ib_mad_recv_done()
2145 ib_mad_post_receive_mads(qp_info, recv); in ib_mad_recv_done()
2166 mod_delayed_work(mad_agent_priv->qp_info->port_priv->wq, in adjust_timeout()
2202 mod_delayed_work(mad_agent_priv->qp_info->port_priv->wq, in wait_for_response()
2272 struct ib_mad_qp_info *qp_info; in ib_mad_send_done() local
2289 qp_info = send_queue->qp_info; in ib_mad_send_done()
2307 mad_list = container_of(qp_info->overflow_list.next, in ib_mad_send_done()
2322 trace_ib_mad_send_done_resend(queued_send_wr, qp_info); in ib_mad_send_done()
2323 ret = ib_post_send(qp_info->qp, &queued_send_wr->send_wr.wr, in ib_mad_send_done()
2335 static void mark_sends_for_retry(struct ib_mad_qp_info *qp_info) in mark_sends_for_retry() argument
2341 spin_lock_irqsave(&qp_info->send_queue.lock, flags); in mark_sends_for_retry()
2342 list_for_each_entry(mad_list, &qp_info->send_queue.list, list) { in mark_sends_for_retry()
2348 spin_unlock_irqrestore(&qp_info->send_queue.lock, flags); in mark_sends_for_retry()
2356 struct ib_mad_qp_info *qp_info = mad_list->mad_queue->qp_info; in ib_mad_send_error() local
2370 trace_ib_mad_error_handler(mad_send_wr, qp_info); in ib_mad_send_error()
2371 ret = ib_post_send(qp_info->qp, &mad_send_wr->send_wr.wr, in ib_mad_send_error()
2384 ret = ib_modify_qp(qp_info->qp, attr, in ib_mad_send_error()
2392 mark_sends_for_retry(qp_info); in ib_mad_send_error()
2507 opa = rdma_cap_opa_mad(mad_agent_priv->qp_info->port_priv->device, in local_completions()
2508 mad_agent_priv->qp_info->port_priv->port_num); in local_completions()
2638 queue_delayed_work(mad_agent_priv->qp_info-> in timeout_sends()
2668 static int ib_mad_post_receive_mads(struct ib_mad_qp_info *qp_info, in ib_mad_post_receive_mads() argument
2676 struct ib_mad_queue *recv_queue = &qp_info->recv_queue; in ib_mad_post_receive_mads()
2679 sg_list.lkey = qp_info->port_priv->pd->local_dma_lkey; in ib_mad_post_receive_mads()
2692 mad_priv = alloc_mad_private(port_mad_size(qp_info->port_priv), in ib_mad_post_receive_mads()
2700 sg_list.addr = ib_dma_map_single(qp_info->port_priv->device, in ib_mad_post_receive_mads()
2704 if (unlikely(ib_dma_mapping_error(qp_info->port_priv->device, in ib_mad_post_receive_mads()
2720 ret = ib_post_recv(qp_info->qp, &recv_wr, NULL); in ib_mad_post_receive_mads()
2726 ib_dma_unmap_single(qp_info->port_priv->device, in ib_mad_post_receive_mads()
2731 dev_err(&qp_info->port_priv->device->dev, in ib_mad_post_receive_mads()
2743 static void cleanup_recv_queue(struct ib_mad_qp_info *qp_info) in cleanup_recv_queue() argument
2749 if (!qp_info->qp) in cleanup_recv_queue()
2752 while (!list_empty(&qp_info->recv_queue.list)) { in cleanup_recv_queue()
2754 mad_list = list_entry(qp_info->recv_queue.list.next, in cleanup_recv_queue()
2765 ib_dma_unmap_single(qp_info->port_priv->device, in cleanup_recv_queue()
2772 qp_info->recv_queue.count = 0; in cleanup_recv_queue()
2795 qp = port_priv->qp_info[i].qp; in ib_mad_port_start()
2844 if (!port_priv->qp_info[i].qp) in ib_mad_port_start()
2847 ret = ib_mad_post_receive_mads(&port_priv->qp_info[i], NULL); in ib_mad_port_start()
2861 struct ib_mad_qp_info *qp_info = qp_context; in qp_event_handler() local
2864 dev_err(&qp_info->port_priv->device->dev, in qp_event_handler()
2866 event->event, qp_info->qp->qp_num); in qp_event_handler()
2869 static void init_mad_queue(struct ib_mad_qp_info *qp_info, in init_mad_queue() argument
2872 mad_queue->qp_info = qp_info; in init_mad_queue()
2879 struct ib_mad_qp_info *qp_info) in init_mad_qp() argument
2881 qp_info->port_priv = port_priv; in init_mad_qp()
2882 init_mad_queue(qp_info, &qp_info->send_queue); in init_mad_qp()
2883 init_mad_queue(qp_info, &qp_info->recv_queue); in init_mad_qp()
2884 INIT_LIST_HEAD(&qp_info->overflow_list); in init_mad_qp()
2887 static int create_mad_qp(struct ib_mad_qp_info *qp_info, in create_mad_qp() argument
2894 qp_init_attr.send_cq = qp_info->port_priv->cq; in create_mad_qp()
2895 qp_init_attr.recv_cq = qp_info->port_priv->cq; in create_mad_qp()
2902 qp_init_attr.port_num = qp_info->port_priv->port_num; in create_mad_qp()
2903 qp_init_attr.qp_context = qp_info; in create_mad_qp()
2905 qp_info->qp = ib_create_qp(qp_info->port_priv->pd, &qp_init_attr); in create_mad_qp()
2906 if (IS_ERR(qp_info->qp)) { in create_mad_qp()
2907 dev_err(&qp_info->port_priv->device->dev, in create_mad_qp()
2910 ret = PTR_ERR(qp_info->qp); in create_mad_qp()
2914 qp_info->send_queue.max_active = mad_sendq_size; in create_mad_qp()
2915 qp_info->recv_queue.max_active = mad_recvq_size; in create_mad_qp()
2922 static void destroy_mad_qp(struct ib_mad_qp_info *qp_info) in destroy_mad_qp() argument
2924 if (!qp_info->qp) in destroy_mad_qp()
2927 ib_destroy_qp(qp_info->qp); in destroy_mad_qp()
2958 init_mad_qp(port_priv, &port_priv->qp_info[0]); in ib_mad_port_open()
2959 init_mad_qp(port_priv, &port_priv->qp_info[1]); in ib_mad_port_open()
2982 ret = create_mad_qp(&port_priv->qp_info[0], IB_QPT_SMI); in ib_mad_port_open()
2986 ret = create_mad_qp(&port_priv->qp_info[1], IB_QPT_GSI); in ib_mad_port_open()
3016 destroy_mad_qp(&port_priv->qp_info[1]); in ib_mad_port_open()
3018 destroy_mad_qp(&port_priv->qp_info[0]); in ib_mad_port_open()
3021 cleanup_recv_queue(&port_priv->qp_info[1]); in ib_mad_port_open()
3022 cleanup_recv_queue(&port_priv->qp_info[0]); in ib_mad_port_open()
3052 destroy_mad_qp(&port_priv->qp_info[1]); in ib_mad_port_close()
3053 destroy_mad_qp(&port_priv->qp_info[0]); in ib_mad_port_close()
3056 cleanup_recv_queue(&port_priv->qp_info[1]); in ib_mad_port_close()
3057 cleanup_recv_queue(&port_priv->qp_info[0]); in ib_mad_port_close()