mad_snoop_priv 503 drivers/infiniband/core/mad.c struct ib_mad_snoop_private *mad_snoop_priv) mad_snoop_priv 518 drivers/infiniband/core/mad.c sizeof mad_snoop_priv * mad_snoop_priv 529 drivers/infiniband/core/mad.c qp_info->snoop_table[i] = mad_snoop_priv; mad_snoop_priv 546 drivers/infiniband/core/mad.c struct ib_mad_snoop_private *mad_snoop_priv; mad_snoop_priv 567 drivers/infiniband/core/mad.c mad_snoop_priv = kzalloc(sizeof *mad_snoop_priv, GFP_KERNEL); mad_snoop_priv 568 drivers/infiniband/core/mad.c if (!mad_snoop_priv) { mad_snoop_priv 574 drivers/infiniband/core/mad.c mad_snoop_priv->qp_info = &port_priv->qp_info[qpn]; mad_snoop_priv 575 drivers/infiniband/core/mad.c mad_snoop_priv->agent.device = device; mad_snoop_priv 576 drivers/infiniband/core/mad.c mad_snoop_priv->agent.recv_handler = recv_handler; mad_snoop_priv 577 drivers/infiniband/core/mad.c mad_snoop_priv->agent.snoop_handler = snoop_handler; mad_snoop_priv 578 drivers/infiniband/core/mad.c mad_snoop_priv->agent.context = context; mad_snoop_priv 579 drivers/infiniband/core/mad.c mad_snoop_priv->agent.qp = port_priv->qp_info[qpn].qp; mad_snoop_priv 580 drivers/infiniband/core/mad.c mad_snoop_priv->agent.port_num = port_num; mad_snoop_priv 581 drivers/infiniband/core/mad.c mad_snoop_priv->mad_snoop_flags = mad_snoop_flags; mad_snoop_priv 582 drivers/infiniband/core/mad.c init_completion(&mad_snoop_priv->comp); mad_snoop_priv 584 drivers/infiniband/core/mad.c err = ib_mad_agent_security_setup(&mad_snoop_priv->agent, qp_type); mad_snoop_priv 590 drivers/infiniband/core/mad.c mad_snoop_priv->snoop_index = register_snoop_agent( mad_snoop_priv 592 drivers/infiniband/core/mad.c mad_snoop_priv); mad_snoop_priv 593 drivers/infiniband/core/mad.c if (mad_snoop_priv->snoop_index < 0) { mad_snoop_priv 594 drivers/infiniband/core/mad.c ret = ERR_PTR(mad_snoop_priv->snoop_index); mad_snoop_priv 598 drivers/infiniband/core/mad.c atomic_set(&mad_snoop_priv->refcount, 1); mad_snoop_priv 599 drivers/infiniband/core/mad.c return &mad_snoop_priv->agent; mad_snoop_priv 601 drivers/infiniband/core/mad.c ib_mad_agent_security_cleanup(&mad_snoop_priv->agent); mad_snoop_priv 603 drivers/infiniband/core/mad.c kfree(mad_snoop_priv); mad_snoop_priv 615 drivers/infiniband/core/mad.c static inline void deref_snoop_agent(struct ib_mad_snoop_private *mad_snoop_priv) mad_snoop_priv 617 drivers/infiniband/core/mad.c if (atomic_dec_and_test(&mad_snoop_priv->refcount)) mad_snoop_priv 618 drivers/infiniband/core/mad.c complete(&mad_snoop_priv->comp); mad_snoop_priv 653 drivers/infiniband/core/mad.c static void unregister_mad_snoop(struct ib_mad_snoop_private *mad_snoop_priv) mad_snoop_priv 658 drivers/infiniband/core/mad.c qp_info = mad_snoop_priv->qp_info; mad_snoop_priv 660 drivers/infiniband/core/mad.c qp_info->snoop_table[mad_snoop_priv->snoop_index] = NULL; mad_snoop_priv 664 drivers/infiniband/core/mad.c deref_snoop_agent(mad_snoop_priv); mad_snoop_priv 665 drivers/infiniband/core/mad.c wait_for_completion(&mad_snoop_priv->comp); mad_snoop_priv 667 drivers/infiniband/core/mad.c ib_mad_agent_security_cleanup(&mad_snoop_priv->agent); mad_snoop_priv 669 drivers/infiniband/core/mad.c kfree(mad_snoop_priv); mad_snoop_priv 680 drivers/infiniband/core/mad.c struct ib_mad_snoop_private *mad_snoop_priv; mad_snoop_priv 689 drivers/infiniband/core/mad.c mad_snoop_priv = container_of(mad_agent, mad_snoop_priv 692 drivers/infiniband/core/mad.c unregister_mad_snoop(mad_snoop_priv); mad_snoop_priv 714 drivers/infiniband/core/mad.c struct ib_mad_snoop_private *mad_snoop_priv; mad_snoop_priv 720 drivers/infiniband/core/mad.c mad_snoop_priv = qp_info->snoop_table[i]; mad_snoop_priv 721 drivers/infiniband/core/mad.c if (!mad_snoop_priv || mad_snoop_priv 722 drivers/infiniband/core/mad.c !(mad_snoop_priv->mad_snoop_flags & mad_snoop_flags)) mad_snoop_priv 725 drivers/infiniband/core/mad.c atomic_inc(&mad_snoop_priv->refcount); mad_snoop_priv 727 drivers/infiniband/core/mad.c mad_snoop_priv->agent.snoop_handler(&mad_snoop_priv->agent, mad_snoop_priv 729 drivers/infiniband/core/mad.c deref_snoop_agent(mad_snoop_priv); mad_snoop_priv 739 drivers/infiniband/core/mad.c struct ib_mad_snoop_private *mad_snoop_priv; mad_snoop_priv 745 drivers/infiniband/core/mad.c mad_snoop_priv = qp_info->snoop_table[i]; mad_snoop_priv 746 drivers/infiniband/core/mad.c if (!mad_snoop_priv || mad_snoop_priv 747 drivers/infiniband/core/mad.c !(mad_snoop_priv->mad_snoop_flags & mad_snoop_flags)) mad_snoop_priv 750 drivers/infiniband/core/mad.c atomic_inc(&mad_snoop_priv->refcount); mad_snoop_priv 752 drivers/infiniband/core/mad.c mad_snoop_priv->agent.recv_handler(&mad_snoop_priv->agent, NULL, mad_snoop_priv 754 drivers/infiniband/core/mad.c deref_snoop_agent(mad_snoop_priv);