[openib-general] [PATCH] Consolidate access to ib_agent_port_list

Krishna Kumar
Tue Oct 26 10:26:50 PDT 2004


Hi Hal,

Thanks for applying the patch with the 2 fixes.

> I also don't understand why the patching resulted in the need to do some
> manual merging (as several hunks failed).

Sorry about this, but I am not sure why it happened - I did a svn update
a few minutes before sending the patch. I am not sure if my mailer is
mangling the patch - I will check that today.

Thanks,

- KK


On Tue, 26 Oct 2004, Hal Rosenstock wrote:

> Hi KK,
>
> On Mon, 2004-10-25 at 16:11, Krishna Kumar wrote:
> > This patch is similar to one for MAD that I sent some time earlier.
> >
> > I could also have split the search routine into two, a get_by_dev
> > and a get_by_agent, but I felt it was too cumbursome.
>
> Looks pretty good. A couple of minor points:
>
> >
> > Thanks,
> >
> > - KK
> >
> > --- ib_agent.c.org     2004-10-25 12:37:56.000000000 -0700
> > +++ ib_agent.c 2004-10-25 12:42:55.000000000 -0700
> > @@ -303,12 +303,52 @@
> >                                              slid, mad, mad_response);
> >  }
> >
> > +static inline struct ib_agent_port_private *
> > +__ib_get_agent_mad(struct ib_device *device, int port_num,
> > +                 struct ib_mad_agent *mad_agent)
> > +{
> > +      struct ib_agent_port_private *entry;
> > +
> > +      BUG_ON(!spin_is_locked(&ib_agent_port_list_lock);
>
>     BUG_ON(!spin_is_locked(&ib_agent_port_list_lock));
>
>
> > @@ -729,21 +733,14 @@
> >
> >  static int ib_agent_port_close(struct ib_device *device, int port_num)
> >  {
> > -      struct ib_agent_port_private *entry, *port_priv = NULL;
> > +      struct ib_agent_port_private *port_priv;
> >        unsigned long flags;
> >
> >        spin_lock_irqsave(&ib_agent_port_list_lock, flags);
> > -      list_for_each_entry(entry, &ib_agent_port_list, port_list) {
> > -              if (entry->dr_smp_agent->device == device &&
> > -                  entry->port_num == port_num) {
> > -                      port_priv = entry;
> > -                      break;
> > -              }
> > -      }
> > -
> > +      port_priv = __ib_get_agent_mad(NULL, 0, mad_agent);
>
> I think this needs to be:
>     port_priv = __ib_get_agent_mad(device, port_num, NULL);
> If that's the case, I'm all set.
>
> I also don't understand why the patching resulted in the need to do some
> manual merging (as several hunks failed).
>
> Thanks.
>
> -- Hal
>
>
>



More information about the openib-general mailing list