Lines Matching refs:port_priv

75 					struct ib_mad_port_private *port_priv,
204 struct ib_mad_port_private *port_priv; in ib_register_mad_agent() local
318 port_priv = ib_get_mad_port(device, port_num); in ib_register_mad_agent()
319 if (!port_priv) { in ib_register_mad_agent()
327 if (!port_priv->qp_info[qpn].qp) { in ib_register_mad_agent()
341 mad_agent_priv->agent.mr = ib_get_dma_mr(port_priv->qp_info[qpn].qp->pd, in ib_register_mad_agent()
357 mad_agent_priv->qp_info = &port_priv->qp_info[qpn]; in ib_register_mad_agent()
364 mad_agent_priv->agent.qp = port_priv->qp_info[qpn].qp; in ib_register_mad_agent()
378 spin_lock_irqsave(&port_priv->reg_lock, flags); in ib_register_mad_agent()
388 class = port_priv->version[mad_reg_req-> in ib_register_mad_agent()
402 vendor = port_priv->version[mad_reg_req-> in ib_register_mad_agent()
423 list_add_tail(&mad_agent_priv->agent_list, &port_priv->agent_list); in ib_register_mad_agent()
424 spin_unlock_irqrestore(&port_priv->reg_lock, flags); in ib_register_mad_agent()
429 spin_unlock_irqrestore(&port_priv->reg_lock, flags); in ib_register_mad_agent()
498 struct ib_mad_port_private *port_priv; in ib_register_mad_snoop() local
514 port_priv = ib_get_mad_port(device, port_num); in ib_register_mad_snoop()
515 if (!port_priv) { in ib_register_mad_snoop()
527 mad_snoop_priv->qp_info = &port_priv->qp_info[qpn]; in ib_register_mad_snoop()
532 mad_snoop_priv->agent.qp = port_priv->qp_info[qpn].qp; in ib_register_mad_snoop()
537 &port_priv->qp_info[qpn], in ib_register_mad_snoop()
568 struct ib_mad_port_private *port_priv; in unregister_mad_agent() local
578 port_priv = mad_agent_priv->qp_info->port_priv; in unregister_mad_agent()
581 spin_lock_irqsave(&port_priv->reg_lock, flags); in unregister_mad_agent()
584 spin_unlock_irqrestore(&port_priv->reg_lock, flags); in unregister_mad_agent()
586 flush_workqueue(port_priv->wq); in unregister_mad_agent()
733 struct ib_mad_port_private *port_priv; in handle_outgoing_dr_smp() local
811 port_priv = ib_get_mad_port(mad_agent_priv->agent.device, in handle_outgoing_dr_smp()
813 if (port_priv) { in handle_outgoing_dr_smp()
815 recv_mad_agent = find_mad_agent(port_priv, in handle_outgoing_dr_smp()
818 if (!port_priv || !recv_mad_agent) { in handle_outgoing_dr_smp()
843 queue_work(mad_agent_priv->qp_info->port_priv->wq, in handle_outgoing_dr_smp()
1367 struct ib_mad_port_private *port_priv; in add_nonoui_reg_req() local
1372 port_priv = agent_priv->qp_info->port_priv; in add_nonoui_reg_req()
1373 class = &port_priv->version[mad_reg_req->mgmt_class_version].class; in add_nonoui_reg_req()
1428 struct ib_mad_port_private *port_priv; in add_oui_reg_req() local
1438 port_priv = agent_priv->qp_info->port_priv; in add_oui_reg_req()
1439 vendor_table = &port_priv->version[ in add_oui_reg_req()
1528 struct ib_mad_port_private *port_priv; in remove_mad_reg_req() local
1544 port_priv = agent_priv->qp_info->port_priv; in remove_mad_reg_req()
1546 class = port_priv->version[ in remove_mad_reg_req()
1564 port_priv->version[ in remove_mad_reg_req()
1577 vendor = port_priv->version[ in remove_mad_reg_req()
1609 port_priv->version[ in remove_mad_reg_req()
1624 find_mad_agent(struct ib_mad_port_private *port_priv, in find_mad_agent() argument
1630 spin_lock_irqsave(&port_priv->reg_lock, flags); in find_mad_agent()
1640 list_for_each_entry(entry, &port_priv->agent_list, agent_list) { in find_mad_agent()
1661 class = port_priv->version[ in find_mad_agent()
1674 vendor = port_priv->version[ in find_mad_agent()
1699 dev_notice(&port_priv->device->dev, in find_mad_agent()
1701 &mad_agent->agent, port_priv->port_num); in find_mad_agent()
1706 spin_unlock_irqrestore(&port_priv->reg_lock, flags); in find_mad_agent()
1947 static void ib_mad_recv_done_handler(struct ib_mad_port_private *port_priv, in ib_mad_recv_done_handler() argument
1965 ib_dma_unmap_single(port_priv->device, in ib_mad_recv_done_handler()
1987 dev_err(&port_priv->device->dev, in ib_mad_recv_done_handler()
1992 if (port_priv->device->node_type == RDMA_NODE_IB_SWITCH) in ib_mad_recv_done_handler()
1995 port_num = port_priv->port_num; in ib_mad_recv_done_handler()
2002 port_priv->device->node_type, in ib_mad_recv_done_handler()
2004 port_priv->device->phys_port_cnt) == in ib_mad_recv_done_handler()
2014 port_priv->device->node_type, in ib_mad_recv_done_handler()
2018 if (smi_check_local_smp(&recv->mad.smp, port_priv->device) == IB_SMI_DISCARD) in ib_mad_recv_done_handler()
2020 } else if (port_priv->device->node_type == RDMA_NODE_IB_SWITCH) { in ib_mad_recv_done_handler()
2029 port_priv->device, in ib_mad_recv_done_handler()
2039 if (port_priv->device->process_mad) { in ib_mad_recv_done_handler()
2040 ret = port_priv->device->process_mad(port_priv->device, 0, in ib_mad_recv_done_handler()
2041 port_priv->port_num, in ib_mad_recv_done_handler()
2051 port_priv->device, in ib_mad_recv_done_handler()
2059 mad_agent = find_mad_agent(port_priv, &recv->mad.mad); in ib_mad_recv_done_handler()
2070 port_priv->device, port_num, qp_info->qp->qp_num); in ib_mad_recv_done_handler()
2101 mod_delayed_work(mad_agent_priv->qp_info->port_priv->wq, in adjust_timeout()
2136 mod_delayed_work(mad_agent_priv->qp_info->port_priv->wq, in wait_for_response()
2200 static void ib_mad_send_done_handler(struct ib_mad_port_private *port_priv, in ib_mad_send_done_handler() argument
2252 dev_err(&port_priv->device->dev, in ib_mad_send_done_handler()
2277 static void mad_error_handler(struct ib_mad_port_private *port_priv, in mad_error_handler() argument
2310 ib_mad_send_done_handler(port_priv, wc); in mad_error_handler()
2312 ib_mad_send_done_handler(port_priv, wc); in mad_error_handler()
2325 dev_err(&port_priv->device->dev, in mad_error_handler()
2331 ib_mad_send_done_handler(port_priv, wc); in mad_error_handler()
2340 struct ib_mad_port_private *port_priv; in ib_mad_completion_handler() local
2343 port_priv = container_of(work, struct ib_mad_port_private, work); in ib_mad_completion_handler()
2344 ib_req_notify_cq(port_priv->cq, IB_CQ_NEXT_COMP); in ib_mad_completion_handler()
2346 while (ib_poll_cq(port_priv->cq, 1, &wc) == 1) { in ib_mad_completion_handler()
2350 ib_mad_send_done_handler(port_priv, &wc); in ib_mad_completion_handler()
2353 ib_mad_recv_done_handler(port_priv, &wc); in ib_mad_completion_handler()
2360 mad_error_handler(port_priv, &wc); in ib_mad_completion_handler()
2601 port_priv->wq, in timeout_sends()
2629 struct ib_mad_port_private *port_priv = cq->cq_context; in ib_mad_thread_completion_handler() local
2633 if (!list_empty(&port_priv->port_list)) in ib_mad_thread_completion_handler()
2634 queue_work(port_priv->wq, &port_priv->work); in ib_mad_thread_completion_handler()
2653 sg_list.lkey = (*qp_info->port_priv->mr).lkey; in ib_mad_post_receive_mads()
2668 dev_err(&qp_info->port_priv->device->dev, in ib_mad_post_receive_mads()
2674 sg_list.addr = ib_dma_map_single(qp_info->port_priv->device, in ib_mad_post_receive_mads()
2679 if (unlikely(ib_dma_mapping_error(qp_info->port_priv->device, in ib_mad_post_receive_mads()
2699 ib_dma_unmap_single(qp_info->port_priv->device, in ib_mad_post_receive_mads()
2705 dev_err(&qp_info->port_priv->device->dev, in ib_mad_post_receive_mads()
2739 ib_dma_unmap_single(qp_info->port_priv->device, in cleanup_recv_queue()
2753 static int ib_mad_port_start(struct ib_mad_port_private *port_priv) in ib_mad_port_start() argument
2762 dev_err(&port_priv->device->dev, in ib_mad_port_start()
2767 ret = ib_find_pkey(port_priv->device, port_priv->port_num, in ib_mad_port_start()
2773 qp = port_priv->qp_info[i].qp; in ib_mad_port_start()
2787 dev_err(&port_priv->device->dev, in ib_mad_port_start()
2796 dev_err(&port_priv->device->dev, in ib_mad_port_start()
2806 dev_err(&port_priv->device->dev, in ib_mad_port_start()
2813 ret = ib_req_notify_cq(port_priv->cq, IB_CQ_NEXT_COMP); in ib_mad_port_start()
2815 dev_err(&port_priv->device->dev, in ib_mad_port_start()
2822 if (!port_priv->qp_info[i].qp) in ib_mad_port_start()
2825 ret = ib_mad_post_receive_mads(&port_priv->qp_info[i], NULL); in ib_mad_port_start()
2827 dev_err(&port_priv->device->dev, in ib_mad_port_start()
2842 dev_err(&qp_info->port_priv->device->dev, in qp_event_handler()
2856 static void init_mad_qp(struct ib_mad_port_private *port_priv, in init_mad_qp() argument
2859 qp_info->port_priv = port_priv; in init_mad_qp()
2876 qp_init_attr.send_cq = qp_info->port_priv->cq; in create_mad_qp()
2877 qp_init_attr.recv_cq = qp_info->port_priv->cq; in create_mad_qp()
2884 qp_init_attr.port_num = qp_info->port_priv->port_num; in create_mad_qp()
2887 qp_info->qp = ib_create_qp(qp_info->port_priv->pd, &qp_init_attr); in create_mad_qp()
2889 dev_err(&qp_info->port_priv->device->dev, in create_mad_qp()
2921 struct ib_mad_port_private *port_priv; in ib_mad_port_open() local
2927 port_priv = kzalloc(sizeof *port_priv, GFP_KERNEL); in ib_mad_port_open()
2928 if (!port_priv) { in ib_mad_port_open()
2933 port_priv->device = device; in ib_mad_port_open()
2934 port_priv->port_num = port_num; in ib_mad_port_open()
2935 spin_lock_init(&port_priv->reg_lock); in ib_mad_port_open()
2936 INIT_LIST_HEAD(&port_priv->agent_list); in ib_mad_port_open()
2937 init_mad_qp(port_priv, &port_priv->qp_info[0]); in ib_mad_port_open()
2938 init_mad_qp(port_priv, &port_priv->qp_info[1]); in ib_mad_port_open()
2945 port_priv->cq = ib_create_cq(port_priv->device, in ib_mad_port_open()
2947 NULL, port_priv, cq_size, 0); in ib_mad_port_open()
2948 if (IS_ERR(port_priv->cq)) { in ib_mad_port_open()
2950 ret = PTR_ERR(port_priv->cq); in ib_mad_port_open()
2954 port_priv->pd = ib_alloc_pd(device); in ib_mad_port_open()
2955 if (IS_ERR(port_priv->pd)) { in ib_mad_port_open()
2957 ret = PTR_ERR(port_priv->pd); in ib_mad_port_open()
2961 port_priv->mr = ib_get_dma_mr(port_priv->pd, IB_ACCESS_LOCAL_WRITE); in ib_mad_port_open()
2962 if (IS_ERR(port_priv->mr)) { in ib_mad_port_open()
2964 ret = PTR_ERR(port_priv->mr); in ib_mad_port_open()
2969 ret = create_mad_qp(&port_priv->qp_info[0], IB_QPT_SMI); in ib_mad_port_open()
2973 ret = create_mad_qp(&port_priv->qp_info[1], IB_QPT_GSI); in ib_mad_port_open()
2978 port_priv->wq = create_singlethread_workqueue(name); in ib_mad_port_open()
2979 if (!port_priv->wq) { in ib_mad_port_open()
2983 INIT_WORK(&port_priv->work, ib_mad_completion_handler); in ib_mad_port_open()
2986 list_add_tail(&port_priv->port_list, &ib_mad_port_list); in ib_mad_port_open()
2989 ret = ib_mad_port_start(port_priv); in ib_mad_port_open()
2999 list_del_init(&port_priv->port_list); in ib_mad_port_open()
3002 destroy_workqueue(port_priv->wq); in ib_mad_port_open()
3004 destroy_mad_qp(&port_priv->qp_info[1]); in ib_mad_port_open()
3006 destroy_mad_qp(&port_priv->qp_info[0]); in ib_mad_port_open()
3008 ib_dereg_mr(port_priv->mr); in ib_mad_port_open()
3010 ib_dealloc_pd(port_priv->pd); in ib_mad_port_open()
3012 ib_destroy_cq(port_priv->cq); in ib_mad_port_open()
3013 cleanup_recv_queue(&port_priv->qp_info[1]); in ib_mad_port_open()
3014 cleanup_recv_queue(&port_priv->qp_info[0]); in ib_mad_port_open()
3016 kfree(port_priv); in ib_mad_port_open()
3028 struct ib_mad_port_private *port_priv; in ib_mad_port_close() local
3032 port_priv = __ib_get_mad_port(device, port_num); in ib_mad_port_close()
3033 if (port_priv == NULL) { in ib_mad_port_close()
3038 list_del_init(&port_priv->port_list); in ib_mad_port_close()
3041 destroy_workqueue(port_priv->wq); in ib_mad_port_close()
3042 destroy_mad_qp(&port_priv->qp_info[1]); in ib_mad_port_close()
3043 destroy_mad_qp(&port_priv->qp_info[0]); in ib_mad_port_close()
3044 ib_dereg_mr(port_priv->mr); in ib_mad_port_close()
3045 ib_dealloc_pd(port_priv->pd); in ib_mad_port_close()
3046 ib_destroy_cq(port_priv->cq); in ib_mad_port_close()
3047 cleanup_recv_queue(&port_priv->qp_info[1]); in ib_mad_port_close()
3048 cleanup_recv_queue(&port_priv->qp_info[0]); in ib_mad_port_close()
3051 kfree(port_priv); in ib_mad_port_close()