• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/drivers/infiniband/core/

Lines Matching defs:qp_info

73 static int ib_mad_post_receive_mads(struct ib_mad_qp_info *qp_info,
286 mad_agent_priv->agent.mr = ib_get_dma_mr(port_priv->qp_info[qpn].qp->pd,
302 mad_agent_priv->qp_info = &port_priv->qp_info[qpn];
309 mad_agent_priv->agent.qp = port_priv->qp_info[qpn].qp;
400 static int register_snoop_agent(struct ib_mad_qp_info *qp_info,
407 spin_lock_irqsave(&qp_info->snoop_lock, flags);
409 for (i = 0; i < qp_info->snoop_table_size; i++)
410 if (!qp_info->snoop_table[i])
413 if (i == qp_info->snoop_table_size) {
415 new_snoop_table = krealloc(qp_info->snoop_table,
417 (qp_info->snoop_table_size + 1),
424 qp_info->snoop_table = new_snoop_table;
425 qp_info->snoop_table_size++;
427 qp_info->snoop_table[i] = mad_snoop_priv;
428 atomic_inc(&qp_info->snoop_count);
430 spin_unlock_irqrestore(&qp_info->snoop_lock, flags);
471 mad_snoop_priv->qp_info = &port_priv->qp_info[qpn];
476 mad_snoop_priv->agent.qp = port_priv->qp_info[qpn].qp;
481 &port_priv->qp_info[qpn],
522 port_priv = mad_agent_priv->qp_info->port_priv;
543 struct ib_mad_qp_info *qp_info;
546 qp_info = mad_snoop_priv->qp_info;
547 spin_lock_irqsave(&qp_info->snoop_lock, flags);
548 qp_info->snoop_table[mad_snoop_priv->snoop_index] = NULL;
549 atomic_dec(&qp_info->snoop_count);
550 spin_unlock_irqrestore(&qp_info->snoop_lock, flags);
595 static void snoop_send(struct ib_mad_qp_info *qp_info,
604 spin_lock_irqsave(&qp_info->snoop_lock, flags);
605 for (i = 0; i < qp_info->snoop_table_size; i++) {
606 mad_snoop_priv = qp_info->snoop_table[i];
612 spin_unlock_irqrestore(&qp_info->snoop_lock, flags);
616 spin_lock_irqsave(&qp_info->snoop_lock, flags);
618 spin_unlock_irqrestore(&qp_info->snoop_lock, flags);
621 static void snoop_recv(struct ib_mad_qp_info *qp_info,
629 spin_lock_irqsave(&qp_info->snoop_lock, flags);
630 for (i = 0; i < qp_info->snoop_table_size; i++) {
631 mad_snoop_priv = qp_info->snoop_table[i];
637 spin_unlock_irqrestore(&qp_info->snoop_lock, flags);
641 spin_lock_irqsave(&qp_info->snoop_lock, flags);
643 spin_unlock_irqrestore(&qp_info->snoop_lock, flags);
787 queue_work(mad_agent_priv->qp_info->port_priv->wq,
998 struct ib_mad_qp_info *qp_info;
1007 qp_info = mad_send_wr->mad_agent_priv->qp_info;
1009 mad_send_wr->mad_list.mad_queue = &qp_info->send_queue;
1025 spin_lock_irqsave(&qp_info->send_queue.lock, flags);
1026 if (qp_info->send_queue.count < qp_info->send_queue.max_active) {
1029 list = &qp_info->send_queue.list;
1032 list = &qp_info->overflow_list;
1036 qp_info->send_queue.count++;
1039 spin_unlock_irqrestore(&qp_info->send_queue.lock, flags);
1299 port_priv = agent_priv->qp_info->port_priv;
1365 port_priv = agent_priv->qp_info->port_priv;
1471 port_priv = agent_priv->qp_info->port_priv;
1837 struct ib_mad_qp_info *qp_info;
1845 qp_info = mad_list->mad_queue->qp_info;
1864 if (atomic_read(&qp_info->snoop_count))
1865 snoop_recv(qp_info, &recv->header.recv_wc, IB_MAD_SNOOP_RECVS);
1868 if (!validate_mad(&recv->mad.mad, qp_info->qp->qp_num))
1917 qp_info->qp->qp_num);
1941 qp_info->qp->qp_num);
1960 ib_mad_post_receive_mads(qp_info, response);
1964 ib_mad_post_receive_mads(qp_info, recv);
1986 queue_delayed_work(mad_agent_priv->qp_info->
2023 queue_delayed_work(mad_agent_priv->qp_info->port_priv->wq,
2093 struct ib_mad_qp_info *qp_info;
2104 qp_info = send_queue->qp_info;
2119 mad_list = container_of(qp_info->overflow_list.next,
2131 if (atomic_read(&qp_info->snoop_count))
2132 snoop_send(qp_info, &mad_send_wr->send_buf, &mad_send_wc,
2137 ret = ib_post_send(qp_info->qp, &queued_send_wr->send_wr,
2148 static void mark_sends_for_retry(struct ib_mad_qp_info *qp_info)
2154 spin_lock_irqsave(&qp_info->send_queue.lock, flags);
2155 list_for_each_entry(mad_list, &qp_info->send_queue.list, list) {
2161 spin_unlock_irqrestore(&qp_info->send_queue.lock, flags);
2168 struct ib_mad_qp_info *qp_info;
2174 qp_info = mad_list->mad_queue->qp_info;
2175 if (mad_list->mad_queue == &qp_info->recv_queue)
2194 ret = ib_post_send(qp_info->qp, &mad_send_wr->send_wr,
2208 ret = ib_modify_qp(qp_info->qp, attr,
2215 mark_sends_for_retry(qp_info);
2395 if (atomic_read(&recv_mad_agent->qp_info->snoop_count))
2396 snoop_recv(recv_mad_agent->qp_info,
2412 if (atomic_read(&mad_agent_priv->qp_info->snoop_count))
2413 snoop_send(mad_agent_priv->qp_info,
2485 queue_delayed_work(mad_agent_priv->qp_info->
2526 static int ib_mad_post_receive_mads(struct ib_mad_qp_info *qp_info,
2534 struct ib_mad_queue *recv_queue = &qp_info->recv_queue;
2538 sg_list.lkey = (*qp_info->port_priv->mr).lkey;
2558 sg_list.addr = ib_dma_map_single(qp_info->port_priv->device,
2572 ret = ib_post_recv(qp_info->qp, &recv_wr, &bad_recv_wr);
2578 ib_dma_unmap_single(qp_info->port_priv->device,
2595 static void cleanup_recv_queue(struct ib_mad_qp_info *qp_info)
2601 while (!list_empty(&qp_info->recv_queue.list)) {
2603 mad_list = list_entry(qp_info->recv_queue.list.next,
2614 ib_dma_unmap_single(qp_info->port_priv->device,
2622 qp_info->recv_queue.count = 0;
2641 qp = port_priv->qp_info[i].qp;
2683 ret = ib_mad_post_receive_mads(&port_priv->qp_info[i], NULL);
2696 struct ib_mad_qp_info *qp_info = qp_context;
2700 event->event, qp_info->qp->qp_num);
2703 static void init_mad_queue(struct ib_mad_qp_info *qp_info,
2706 mad_queue->qp_info = qp_info;
2713 struct ib_mad_qp_info *qp_info)
2715 qp_info->port_priv = port_priv;
2716 init_mad_queue(qp_info, &qp_info->send_queue);
2717 init_mad_queue(qp_info, &qp_info->recv_queue);
2718 INIT_LIST_HEAD(&qp_info->overflow_list);
2719 spin_lock_init(&qp_info->snoop_lock);
2720 qp_info->snoop_table = NULL;
2721 qp_info->snoop_table_size = 0;
2722 atomic_set(&qp_info->snoop_count, 0);
2725 static int create_mad_qp(struct ib_mad_qp_info *qp_info,
2732 qp_init_attr.send_cq = qp_info->port_priv->cq;
2733 qp_init_attr.recv_cq = qp_info->port_priv->cq;
2740 qp_init_attr.port_num = qp_info->port_priv->port_num;
2741 qp_init_attr.qp_context = qp_info;
2743 qp_info->qp = ib_create_qp(qp_info->port_priv->pd, &qp_init_attr);
2744 if (IS_ERR(qp_info->qp)) {
2747 ret = PTR_ERR(qp_info->qp);
2751 qp_info->send_queue.max_active = mad_sendq_size;
2752 qp_info->recv_queue.max_active = mad_recvq_size;
2759 static void destroy_mad_qp(struct ib_mad_qp_info *qp_info)
2761 ib_destroy_qp(qp_info->qp);
2762 kfree(qp_info->snoop_table);
2788 init_mad_qp(port_priv, &port_priv->qp_info[0]);
2789 init_mad_qp(port_priv, &port_priv->qp_info[1]);
2815 ret = create_mad_qp(&port_priv->qp_info[0], IB_QPT_SMI);
2818 ret = create_mad_qp(&port_priv->qp_info[1], IB_QPT_GSI);
2849 destroy_mad_qp(&port_priv->qp_info[1]);
2851 destroy_mad_qp(&port_priv->qp_info[0]);
2858 cleanup_recv_queue(&port_priv->qp_info[1]);
2859 cleanup_recv_queue(&port_priv->qp_info[0]);
2887 destroy_mad_qp(&port_priv->qp_info[1]);
2888 destroy_mad_qp(&port_priv->qp_info[0]);
2892 cleanup_recv_queue(&port_priv->qp_info[1]);
2893 cleanup_recv_queue(&port_priv->qp_info[0]);