> -----Original Message-----
> From: Suresh Shelvapille [mailto:[EMAIL PROTECTED]
> Steve:
> 
> This patch looks good on my system, meaning it did not break any of my
> usual
> tests (switch related).
> 
Suri, thanks for testing this.

Hal, I will resubmit the patch to the list to include the detailed
description as we discussed previously.

Thanks,
Steve 

> 
> > -----Original Message-----
> > From: [EMAIL PROTECTED] [mailto:general-
> [EMAIL PROTECTED] On Behalf
> > Of [EMAIL PROTECTED]
> > Sent: Wednesday, October 10, 2007 11:29 PM
> > To: [EMAIL PROTECTED]; [EMAIL PROTECTED];
> [email protected]
> > Subject: [ofa-general] [PATCH V3] infiniband/core: Enable loopback of DR
> SMP responses from userspace
> >
> >
> >
> >   Sean, Roland,
> >
> >   This patch [v3] replaces the [v2] patch; it includes those changes but
> renames
> >   the smi function testing returning SMP requests to the name Hal
> recommends.
> >
> >   This patch allows userspace DR SMP responses to be looped back and
> delivered
> >   to a local mad agent by the management stack.
> >
> >   Thanks, Steve
> >
> > Signed-off-by: Steve Welch <[EMAIL PROTECTED]>
> > ---
> >  drivers/infiniband/core/mad.c |    6 +++---
> >  drivers/infiniband/core/smi.h |   18 +++++++++++++++++-
> >  2 files changed, 20 insertions(+), 4 deletions(-)
> >
> > diff --git a/drivers/infiniband/core/mad.c
> b/drivers/infiniband/core/mad.c
> > index 6f42877..98148d6 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_returning_smp(smp, device) == IB_SMI_DISCARD)
> >             goto out;
> >
> >     local = kmalloc(sizeof *local, GFP_ATOMIC);
> > @@ -752,8 +753,7 @@ static int handle_outgoing_dr_smp(struct
> ib_mad_agent_private *mad_agent_priv,
> >             port_priv = ib_get_mad_port(mad_agent_priv->agent.device,
> >                                         mad_agent_priv->agent.port_num);
> >             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..aff96ba 100644
> > --- a/drivers/infiniband/core/smi.h
> > +++ b/drivers/infiniband/core/smi.h
> > @@ -59,7 +59,8 @@ extern enum smi_action smi_handle_dr_smp_send(struct
> ib_smp *smp,
> >                                           u8 node_type, int port_num);
> >
> >  /*
> > - * Return 1 if the SMP should be handled by the local SMA/SM via
> process_mad
> > + * Return IB_SMI_HANDLE if the SMP should be handled by the local
> SMA/SM
> > + * via process_mad
> >   */
> >  static inline enum smi_action smi_check_local_smp(struct ib_smp *smp,
> >                                               struct ib_device *device)
> > @@ -71,4 +72,19 @@ 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 IB_SMI_HANDLE if the SMP should be handled by the local
> SMA/SM
> > + * via process_mad
> > + */
> > +static inline enum smi_action smi_check_local_returning_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
> > [email protected]
> > http://lists.openfabrics.org/cgi-bin/mailman/listinfo/general
> >
> > To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-
> general

_______________________________________________
general mailing list
[email protected]
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general

Reply via email to