[ofa-general] [PATCH] infiniband/core: Enable loopback of DR SMP responses from userspace
Sean Hefty
mshefty at ichips.intel.com
Wed Oct 10 11:31:59 PDT 2007
Does anyone know what happened with this patch? Steve?
I last remember a couple of minor changes being requested, but that was it.
- Sean
> > diff --git a/drivers/infiniband/core/mad.c b/drivers/infiniband/core/mad.c
> > index 6f42877..9ec910b 100644
> > --- a/drivers/infiniband/core/mad.c
> > +++ b/drivers/infiniband/core/mad.c
> > @@ -701,7 +701,8 @@ static int handle_outgoing_dr_smp(struct ib_mad_agent_private *mad_agent_priv,
> > }
> >
> > /* Check to post send on QP or process locally */
> > - if (smi_check_local_smp(smp, device) == IB_SMI_DISCARD)
> > + if (smi_check_local_smp(smp, device) == IB_SMI_DISCARD &&
> > + smi_check_local_resp_smp(smp, device) == IB_SMI_DISCARD)
> > goto out;
> >
> > local = kmalloc(sizeof *local, GFP_ATOMIC);
> > @@ -754,6 +755,7 @@ static int handle_outgoing_dr_smp(struct ib_mad_agent_private *mad_agent_priv,
> > if (port_priv) {
> > mad_priv->mad.mad.mad_hdr.tid =
> > ((struct ib_mad *)smp)->mad_hdr.tid;
> > + memcpy(&mad_priv->mad.mad, smp, sizeof(struct ib_mad));
> > recv_mad_agent = find_mad_agent(port_priv,
> > &mad_priv->mad.mad);
> > }
> > diff --git a/drivers/infiniband/core/smi.h b/drivers/infiniband/core/smi.h
> > index 1cfc298..d96fc8e 100644
> > --- a/drivers/infiniband/core/smi.h
> > +++ b/drivers/infiniband/core/smi.h
> > @@ -71,4 +71,18 @@ static inline enum smi_action smi_check_local_smp(struct ib_smp *smp,
> > (smp->hop_ptr == smp->hop_cnt + 1)) ?
> > IB_SMI_HANDLE : IB_SMI_DISCARD);
> > }
> > +
> > +/*
> > + * Return 1 if the SMP response should be handled by the local management stack
> > + */
> > +static inline enum smi_action smi_check_local_resp_smp(struct ib_smp *smp,
> > + struct ib_device *device)
> > +{
> > + /* C14-13:3 -- We're at the end of the DR segment of path */
> > + /* C14-13:4 -- Hop Pointer == 0 -> give to SM */
> > + return ((device->process_mad &&
> > + ib_get_smp_direction(smp) &&
> > + !smp->hop_ptr) ? IB_SMI_HANDLE : IB_SMI_DISCARD);
> > +}
> > +
> > #endif /* __SMI_H_ */
> _______________________________________________
> general mailing list
> general at lists.openfabrics.org
> http://lists.openfabrics.org/cgi-bin/mailman/listinfo/general
>
> To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general
>
More information about the general
mailing list