On Wed, Apr 17, 2024 at 11:01:08PM -0700, Shradha Gupta wrote: > > > > > +static ssize_t mana_attr_show(struct device *dev, > > > > > + struct device_attribute *attr, char *buf) > > > > > +{ > > > > > + struct pci_dev *pdev = to_pci_dev(dev); > > > > > + struct gdma_context *gc = pci_get_drvdata(pdev); > > > > > + struct mana_context *ac = gc->mana.driver_data; > > > > > + > > > > > + if (strcmp(attr->attr.name, "mport") == 0) > > > > > + return snprintf(buf, PAGE_SIZE, "%d\n", ac->num_ports); > > > > > + else if (strcmp(attr->attr.name, "adapter_mtu") == 0) > > > > > + return snprintf(buf, PAGE_SIZE, "%d\n", gc->adapter_mtu); > > > > > + else if (strcmp(attr->attr.name, "msix") == 0) > > > > > + return snprintf(buf, PAGE_SIZE, "%d\n", gc->max_num_msix); > > > > > + else > > > > > + return -EINVAL; > > > > > + > > > > > > > > That is not how sysfs should be implemented at all, please find a > > > > good example to copy from. Every attribute should use its own function > > > > with the macros to link it into an attributes group and sysfs_emit > > > > should be used for printing > > > > > > Not sure if this file drivers/infiniband/hw/usnic/usnic_ib_sysfs.c is a good > > > example or not. > > > > The first question should be, what are these values used for? You can > > then decide on debugfs or sysfs. debugfs is easier to use, and you > > avoid any ABI, which will make long term support easier. > > Hi Andrew, > We want to eventually use these attributes to make the device settings configurable > and also improve debuggability for MANA devices. I feel having these attributes > in sysfs would make more sense as we plan to extend the attribute list and also make > them settable. >From an RDMA perspective this is all available from other APIs already at least and I wouldn't want to see new sysfs unless there is a netdev justification. Jason