[RFC AR6000 patch V3] Set hardware unavailable during wext_ioctl when the suspend or rfkill is send

Werner Almesberger werner at openmoko.org
Tue Mar 31 15:11:37 CEST 2009

Michael Trimarchi wrote:
> I hope that this one is little bit better :)

*Much* nicer ! :-) However, ...

> +    init_rwsem(&ar->arHwAvail);
> +    up_write(&ar->arHwAvail);

The rwsem is already unlocked after init_rwsem. So I'm not sure what
the up_write does. Probably nothing good.

Did you test if it works ?

> +#define DECLARE_LOCKED_VERSION(_name) \

Nice use of macros ! In your original patch, I hadn't even noticed
just how many functions you had to change :)

One small nit: mixed-case names aren't common in the kernel. How
about lock_ar6000 or such ?

> +    ret = _name(dev, info, p, data); \
> +    ret = ar6000_hw_avail_unlock(ar); \
> +    return ret; \

Ignoring return values ? Tsk, tsk :-) Since it cannot fail, you
probably don't want ar6000_hw_avail_unlock to return a status at all.

In fact, you could trim this down to simply

	AR_SOFTC_T *ar = (AR_SOFTC_T *) netdev_priv(dev);	\
	int ret = -EAGAIN;					\
	if (down_read_trylock(&ar->arHwAvail))			\
		ret = _name(dev, info, p, data);		\
	up_read(&ar->arHwAvail);				\
	return ret;						\

This compiles into even less code than your version (after fixing
it) and you can see all that's happening at one glance.

- Werner

More information about the openmoko-kernel mailing list