From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from silver.osuosl.org (smtp3.osuosl.org [140.211.166.136]) by ash.osuosl.org (Postfix) with ESMTP id E56F31C0974 for ; Wed, 8 Aug 2018 14:48:16 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by silver.osuosl.org (Postfix) with ESMTP id E29B9265B8 for ; Wed, 8 Aug 2018 14:48:16 +0000 (UTC) Received: from silver.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id BboaNfo95WlV for ; Wed, 8 Aug 2018 14:48:16 +0000 (UTC) Received: from esa4.microchip.iphmx.com (esa4.microchip.iphmx.com [68.232.154.123]) by silver.osuosl.org (Postfix) with ESMTPS id 3A7ED26424 for ; Wed, 8 Aug 2018 14:48:16 +0000 (UTC) Subject: Re: [PATCH] staging: most: do not show interface dependent attrs by default in sysfs References: <1533549790-19387-1-git-send-email-christian.gromm@microchip.com> <20180808121032.GA31988@kroah.com> From: Christian Gromm Message-ID: <45220943-8b47-caa8-c6e9-7b8cead79a06@microchip.com> Date: Wed, 8 Aug 2018 16:51:26 +0200 MIME-Version: 1.0 In-Reply-To: <20180808121032.GA31988@kroah.com> Content-Language: en-US List-Id: Linux Driver Project Developer List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="us-ascii"; Format="flowed" Errors-To: driverdev-devel-bounces@linuxdriverproject.org Sender: "devel" To: Greg KH Cc: driverdev-devel@linuxdriverproject.org On 08.08.2018 14:10, Greg KH wrote: > On Mon, Aug 06, 2018 at 12:03:10PM +0200, Christian Gromm wrote: >> The channel attribute dbr_size is only relevant for the DIM2 interface. So >> is the packets_per_xact for USB. Currently, all attrs are shown by default >> in sysfs for any channel. To get a clean content of a channel directory, >> this patch makes the attributes show up only on the channel they belong to. >> >> Signed-off-by: Christian Gromm >> --- >> drivers/staging/most/core.c | 12 +++++++++--- >> drivers/staging/most/core.h | 5 +++++ >> drivers/staging/most/dim2/dim2.c | 1 + >> drivers/staging/most/usb/usb.c | 1 + >> 4 files changed, 16 insertions(+), 3 deletions(-) >> >> diff --git a/drivers/staging/most/core.c b/drivers/staging/most/core.c >> index f4c4646..19694a1 100644 >> --- a/drivers/staging/most/core.c >> +++ b/drivers/staging/most/core.c >> @@ -25,6 +25,7 @@ >> >> #define MAX_CHANNELS 64 >> #define STRING_SIZE 80 >> +#define MAX_NUM_ATTRS 14 >> >> static struct ida mdev_id; >> static int dummy_num_buffers; >> @@ -459,7 +460,7 @@ static DEVICE_ATTR_RW(set_subbuffer_size); >> static DEVICE_ATTR_RW(set_packets_per_xact); >> static DEVICE_ATTR_RW(set_dbr_size); >> >> -static struct attribute *channel_attrs[] = { >> +static struct attribute *channel_attrs[MAX_NUM_ATTRS] = { > > Oh, this is ripe for abuse :) > >> DEV_ATTR(available_directions), >> DEV_ATTR(available_datatypes), >> DEV_ATTR(number_of_packet_buffers), >> @@ -472,8 +473,6 @@ static struct attribute *channel_attrs[] = { >> DEV_ATTR(set_direction), >> DEV_ATTR(set_datatype), >> DEV_ATTR(set_subbuffer_size), >> - DEV_ATTR(set_packets_per_xact), >> - DEV_ATTR(set_dbr_size), >> NULL, >> }; >> >> @@ -1416,6 +1415,13 @@ int most_register_interface(struct most_interface *iface) >> iface->dev.init_name = iface->p->name; >> iface->dev.bus = &mc.bus; >> iface->dev.parent = &mc.dev; >> + if (iface->extra_attrs == XACT_ATTRS) { >> + channel_attrs[12] = DEV_ATTR(set_packets_per_xact); >> + channel_attrs[13] = NULL; >> + } else if (iface->extra_attrs == DBR_ATTRS) { >> + channel_attrs[12] = DEV_ATTR(set_dbr_size); >> + channel_attrs[13] = NULL; >> + } > > No, please use the proper way of doing this. Your attribute can have a > callback when it is being created to test if it should be created or > not. Use that, this is exactly what it is there for. > Hmm, I don't see how to hook a custom callback to a device attribute as its structure does not provide any pointer to do so. I went down the rabbit hole staring at "device_register", but I couldn't find any code that checks for such a function before adding the attributes to sysfs. Can you please point out some driver code that makes use of such a callback you are talking about? That would be nice. all the best, Chris _______________________________________________ devel mailing list devel@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel