linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Fabio Baltieri <fabio.baltieri@gmail.com>
To: Marc Kleine-Budde <mkl@pengutronix.de>
Cc: linux-can@vger.kernel.org, linux-kernel@vger.kernel.org,
	Oliver Hartkopp <socketcan@hartkopp.net>,
	Wolfgang Grandegger <wg@grandegger.com>
Subject: Re: [PATCH can-next v4] can: add tx/rx LED trigger support
Date: Wed, 1 Aug 2012 12:30:32 +0200	[thread overview]
Message-ID: <20120801103032.GA1385@gmail.com> (raw)
In-Reply-To: <5018F8B3.6080404@pengutronix.de>

On Wed, Aug 01, 2012 at 11:36:51AM +0200, Marc Kleine-Budde wrote:
> On 08/01/2012 12:05 AM, Fabio Baltieri wrote:
> > This patch implements the functions to add two LED triggers, named
> > <ifname>-tx and <ifname>-rx, to a canbus device driver.
> > 
> > Triggers are called from specific handlers by each CAN device driver and
> > can be disabled altogether with a Kconfig option.
> > 
> > The implementation keeps the LED on when the interface is UP and blinks
> > the LED on network activity at a configurable rate.
> > 
> > This only supports can-dev based drivers, as it uses some support field
> > in the can_priv structure.
> > 
> > Supported drivers should call can_led_init() and can_led_event() as
> > needed.
> > 
> > Cleanup is handled automatically by devres, so no *_exit function is
> > needed.
> > 
> > Supported events are:
> > - CAN_LED_EVENT_OPEN: turn on tx/rx LEDs
> > - CAN_LED_EVENT_STOP: turn off tx/rx LEDs
> > - CAN_LED_EVENT_TX: trigger tx LED blink
> > - CAN_LED_EVENT_RX: trigger tx LED blink
> > 
> > Cc: Oliver Hartkopp <socketcan@hartkopp.net>
> > Cc: Wolfgang Grandegger <wg@grandegger.com>
> > Cc: Marc Kleine-Budde <mkl@pengutronix.de>
> > Signed-off-by: Fabio Baltieri <fabio.baltieri@gmail.com>
> > ---
> > 
> > Hi!
> > 
> > So, here is the v4.
> > 
> > Changes against v3:
> > - add a netdev_err message in kasprintf error path
> > - implement a devres_alloc release function to de-allocate strings and trigger
> > - can_led_exit is now unneeded and gone
> > 
> > Is that what you had in mind Marc?
> 
> Yes, that's it. Can you add a devm_ prefix to can_led_init() please.

Okay.

> 
> > I like the devres implementation, as callers don't have to care about exit
> > function anymore... still it looks like a bit of an hack to me.
> 
> No :)

Fair enough :)

> > Also, I made an initial version with the four pointers in a separate can_led
> > struct to be allocated as a payload of devres_alloc - but I think this one
> > looks cleaner and is more cache-friendly.
> 
> If you allocate the 4 pointers in a separate struct you only save 3
> points, as you need the pointer to the struct anyways.
> 
> > What you think about this?
> 
> Looks good. See comment inline,
> 
> Marc
> 
> > +/*
> > + * Register CAN LED triggers for a CAN device
> > + *
> > + * This is normally called from a driver's probe function
> > + */
> > +void can_led_init(struct net_device *netdev)
> > +{
> > +	struct can_priv *priv = netdev_priv(netdev);
> > +	void *res;
> > +
> > +	res = devres_alloc(can_led_release, 0, GFP_KERNEL);
>                                             ^
> I'm not really sure if this is working. For example, pinctrl [1]
> allocates a double pointer here. The res pointer here and in
> can_led_release simply points to invalid memory. But as long as you
> don't dereference it, it should work.
> 
> [1] http://lxr.free-electrons.com/source/drivers/pinctrl/core.c#L862

Actually that's also used by libata-core (not in lxr yet) and dma-mapping:

http://lxr.free-electrons.com/source/drivers/base/dma-mapping.c#L193

actually, res should point at the end of some internal devres structure,
and is only used as return value in this case.

Of course, in this case the release function can only use the struct
device pointer.

I've run some fail test and ftraced the whole thing and it seems to work
pretty good!  I'll send a v5 with the rename later.

Thanks,
Fabio

  parent reply	other threads:[~2012-08-01 10:28 UTC|newest]

Thread overview: 67+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-07-30 19:20 [PATCH can-next v3 1/2] can: add tx/rx LED trigger support Fabio Baltieri
2012-07-30 19:20 ` [PATCH can-next v3 2/2] can: flexcan: add " Fabio Baltieri
2012-07-30 21:17 ` [PATCH can-next v3 1/2] can: add tx/rx " Marc Kleine-Budde
2012-07-31  6:57   ` Fabio Baltieri
2012-07-31  7:10     ` Marc Kleine-Budde
2012-07-31 11:57       ` Fabio Baltieri
2012-07-31 12:00         ` Marc Kleine-Budde
2012-07-31 22:05           ` [PATCH can-next v4] " Fabio Baltieri
2012-08-01  9:36             ` Marc Kleine-Budde
2012-08-01 10:07               ` Marc Kleine-Budde
2012-08-01 10:30               ` Fabio Baltieri [this message]
2012-08-01 11:37                 ` Marc Kleine-Budde
2012-08-01 11:49               ` [PATCH can-next v5 1/2] " Fabio Baltieri
2012-08-01 11:49                 ` [PATCH can-next v5 2/2] can: flexcan: add " Fabio Baltieri
2012-08-01 11:53                   ` Marc Kleine-Budde
2012-08-01 12:24                     ` Fabio Baltieri
2012-08-01 12:30                       ` Marc Kleine-Budde
2012-08-01 21:02                   ` Marc Kleine-Budde
2012-08-01 11:59                 ` [PATCH can-next v5 1/2] can: add tx/rx " Marc Kleine-Budde
2012-08-01 12:06                 ` Oliver Hartkopp
2012-08-01 12:18                   ` Marc Kleine-Budde
2012-08-01 18:21                     ` [PATCH can-next v6] " Fabio Baltieri
2012-08-01 21:00                       ` Marc Kleine-Budde
2012-08-01 22:38                         ` Fabio Baltieri
2012-08-01 21:05                       ` Oliver Hartkopp
2012-08-24  5:10                       ` Kurt Van Dijck
2012-08-24 11:28                         ` Marc Kleine-Budde
2012-08-24 12:42                           ` Kurt Van Dijck
2012-08-24 22:01                             ` Fabio Baltieri
2012-08-25 20:25                               ` Kurt Van Dijck
2012-09-03 12:40                               ` Marc Kleine-Budde
2012-09-03 18:13                                 ` Kurt Van Dijck
2012-09-03 18:29                                   ` Fabio Baltieri
2012-09-03 20:54                                     ` Oliver Hartkopp
2012-09-04  7:11                                       ` Kurt Van Dijck
2012-09-04  9:29                                         ` [PATCH] can: rename LED trigger name on netdev renames Kurt Van Dijck
2012-09-06 18:59                                           ` Fabio Baltieri
2012-09-06 19:31                                             ` Oliver Hartkopp
2012-09-06 20:46                                               ` Fabio Baltieri
2012-09-07  7:19                                                 ` Kurt Van Dijck
2012-09-09 16:17                                                   ` [PATCH v2] " Fabio Baltieri
2012-09-10 14:25                                                     ` [PATCH] can: export a safe netdev_priv wrapper for candev Kurt Van Dijck
2012-09-10 18:22                                                       ` Oliver Hartkopp
2012-09-10 18:29                                                       ` Fabio Baltieri
2012-09-10 19:55                                                         ` [PATCH v2] " Kurt Van Dijck
2012-09-10 14:28                                                     ` [PATCH v3] can: rename LED trigger name on netdev renames Kurt Van Dijck
2012-09-10 18:25                                                       ` Oliver Hartkopp
2012-09-10 18:40                                                         ` Fabio Baltieri
2012-09-10 19:01                                                           ` Oliver Hartkopp
2012-09-10 20:08                                                             ` Kurt Van Dijck
2012-09-11  5:42                                                               ` Oliver Hartkopp
2012-09-11  7:13                                                                 ` Fabio Baltieri
2012-09-12  7:22                                                                   ` Kurt Van Dijck
2012-09-11  8:05                                                               ` Kurt Van Dijck
2012-09-10 20:06                                                           ` [PATCH v4] " Kurt Van Dijck
2012-09-11 21:04                                                             ` Fabio Baltieri
2012-09-04 20:15                                         ` [PATCH can-next v6] can: add tx/rx LED trigger support Fabio Baltieri
2012-09-06 10:33                                           ` Kurt Van Dijck
2012-09-06 11:17                                             ` Fabio Baltieri
2012-09-06 15:11                                               ` Kurt Van Dijck
2012-09-06 20:57                                                 ` Fabio Baltieri
2012-09-07  7:04                                                   ` Kurt Van Dijck
2012-09-07 18:59                                                     ` Fabio Baltieri
2012-07-31  8:46 ` [PATCH can-next v3 1/2] " Wolfgang Grandegger
2012-07-31 10:12   ` Marc Kleine-Budde
2012-07-31 11:55     ` Fabio Baltieri
2012-07-31 12:14   ` Fabio Baltieri

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20120801103032.GA1385@gmail.com \
    --to=fabio.baltieri@gmail.com \
    --cc=linux-can@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mkl@pengutronix.de \
    --cc=socketcan@hartkopp.net \
    --cc=wg@grandegger.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).