Re: [PATCH 11/13] RDMA/qib: Use attributes for the port sysfs

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, May 17, 2021 at 02:13:47PM -0300, Jason Gunthorpe wrote:
> On Mon, May 17, 2021 at 07:11:52PM +0200, Greg KH wrote:
> > On Mon, May 17, 2021 at 01:47:39PM -0300, Jason Gunthorpe wrote:
> > > qib should not be creating a mess of kobjects to attach to the port
> > > kobject - this is all attributes. The proper API is to create an
> > > attribute_group list and create it against the port's kobject.
> > > 
> > > Signed-off-by: Jason Gunthorpe <jgg@xxxxxxxxxx>
> > >  drivers/infiniband/hw/qib/qib.h       |   5 +-
> > >  drivers/infiniband/hw/qib/qib_sysfs.c | 596 +++++++++++---------------
> > >  2 files changed, 248 insertions(+), 353 deletions(-)
> > > 
> > > diff --git a/drivers/infiniband/hw/qib/qib.h b/drivers/infiniband/hw/qib/qib.h
> > > index 88497739029e02..3decd6d0843172 100644
> > > +++ b/drivers/infiniband/hw/qib/qib.h
> > > @@ -521,10 +521,7 @@ struct qib_pportdata {
> > >  
> > >  	struct qib_devdata *dd;
> > >  	struct qib_chippport_specific *cpspec; /* chip-specific per-port */
> > > -	struct kobject pport_kobj;
> > > -	struct kobject pport_cc_kobj;
> > > -	struct kobject sl2vl_kobj;
> > > -	struct kobject diagc_kobj;
> > > +	const struct attribute_group *groups[5];
> > 
> > As you initialize these all at once, why not just make this:
> > 	struct attribute_group **groups;
> > 
> > and then set the groups up at build time instead of runtime as part of a
> > larger structure like the ATTRIBUTE_GROUPS() macro does for "simple"
> > drivers?  That way you aren't fixed at the array size here and someone
> > has to go and check to verify you really have properly 0 terminated the
> > list and set up the pointers properly.
> 
> qib has a variable list of group memberships that can only be
> determined at runtime:
> 
>         if (qib_cc_table_size && ppd->congestion_entries_shadow)
>                 *cur_group++ = &port_ccmgta_attribute_group;
> 
> So it can't be setup statically at compile time.

That attribute group can have a is_visable() callback to allow those
files to show up or not, instead of having to determine this when you
are setting up the list of groups.

But that's your call, not a big deal, overall this series looks like a
lot of good cleanups to me, thanks for doing it.

greg k-h



[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Photo]     [Yosemite News]     [Yosemite Photos]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux