public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Ivo van Doorn <ivdoorn@gmail.com>
To: Henrique de Moraes Holschuh <hmh@hmh.eng.br>
Cc: linux-kernel@vger.kernel.org,
	"John W. Linville" <linville@tuxdriver.com>,
	Dmitry Torokhov <dtor@mail.ru>
Subject: Re: [PATCH 8/8] rfkill: add parameter to disable radios by default
Date: Sat, 12 Apr 2008 12:36:46 +0200	[thread overview]
Message-ID: <200804121236.46626.IvDoorn@gmail.com> (raw)
In-Reply-To: <1207946244-14525-9-git-send-email-hmh@hmh.eng.br>

Hi,

> Currently, radios are always enabled when their rfkill interface is
> registered.  This is not optimal, the safest state for a radio is to be
> offline unless the user turns it on.

It defaults to the current state of the switch type.
What perhaps could be done, is that during registration it either reads
the status directly from rfkill to what the device initialized it to,
or call get_status() during registration to determine the new state itself.
That way we prevent series of module parameters and initialize to the state
the driver has indicated..

> Add a module parameter that causes all radios to be disabled when their
> rfkill interface is registered.  Add override parameters for each rfkill
> switch type as well, just in case the user wants the defaults to be
> different for a given radio type.

I am not a big fan of large series of module parameters, so in that aspect
I am not a fan of this patch.

> We don't change the module default, but I'd really recommed doing so in a
> future patch.
> 
> The parameters are called "default_state" (global), and
> "default_<type>_state", where <type> is: "wlan", "bluetooth", "uwb",
> "wimax", or "any".  Note that "any" realy is a type and does not mean every
> radio type (use the global "default_state" parameter for that.
> 
> The precedence order is "most specific first".
> 
> Signed-off-by: Henrique de Moraes Holschuh <hmh@hmh.eng.br>
> Cc: Ivo van Doorn <IvDoorn@gmail.com>
> Cc: John W. Linville <linville@tuxdriver.com>
> Cc: Dmitry Torokhov <dtor@mail.ru>
> ---
>  net/rfkill/rfkill.c |   59 ++++++++++++++++++++++++++++++++++++++++++++++++++-
>  1 files changed, 58 insertions(+), 1 deletions(-)
> 
> diff --git a/net/rfkill/rfkill.c b/net/rfkill/rfkill.c
> index 9d3bffb..421de8c 100644
> --- a/net/rfkill/rfkill.c
> +++ b/net/rfkill/rfkill.c
> @@ -39,6 +39,34 @@ MODULE_LICENSE("GPL");
>  static LIST_HEAD(rfkill_list);	/* list of registered rf switches */
>  static DEFINE_MUTEX(rfkill_mutex);
>  
> +static unsigned int rfkill_default_state = RFKILL_STATE_ON;
> +static unsigned int rfkill_default_state_wlan = UINT_MAX;
> +static unsigned int rfkill_default_state_bluetooth = UINT_MAX;
> +static unsigned int rfkill_default_state_uwb = UINT_MAX;
> +static unsigned int rfkill_default_state_wimax = UINT_MAX;
> +static unsigned int rfkill_default_state_wwan = UINT_MAX;
> +static unsigned int rfkill_default_state_any = UINT_MAX;
> +
> +module_param_named(default_state, rfkill_default_state, uint, 0444);
> +MODULE_PARM_DESC(default_state,
> +		 "Default initial state for all radio types, 0 = radio off");
> +
> +#define RFKILL_RADIO_DEFAULT(__type) \
> +	module_param_named(default_##__type##_state, \
> +			   rfkill_default_state_##__type, uint, 0444); \
> +	MODULE_PARM_DESC(default_##__type##_state, \
> +			 "Override initial state for radios of type " \
> +			 #__type ", 0 = radio off");
> +
> +RFKILL_RADIO_DEFAULT(wlan)
> +RFKILL_RADIO_DEFAULT(bluetooth)
> +RFKILL_RADIO_DEFAULT(uwb)
> +RFKILL_RADIO_DEFAULT(wimax)
> +RFKILL_RADIO_DEFAULT(wwan)
> +RFKILL_RADIO_DEFAULT(any)
> +
> +#undef RFKILL_RADIO_DEFAULT
> +
>  static enum rfkill_state rfkill_states[RFKILL_TYPE_MAX];
>  
>  
> @@ -485,6 +513,17 @@ void rfkill_unregister(struct rfkill *rfkill)
>  }
>  EXPORT_SYMBOL(rfkill_unregister);
>  
> +static int __init rfkill_init_states(unsigned int state, enum rfkill_type type)
> +{
> +	if (state == UINT_MAX)
> +		return 0;
> +	else if (state == RFKILL_STATE_OFF || state == RFKILL_STATE_ON) {
> +		rfkill_states[type] = state;
> +		return 0;
> +	}
> +	return 1;
> +}
> +
>  /*
>   * Rfkill module initialization/deinitialization.
>   */
> @@ -493,8 +532,26 @@ static int __init rfkill_init(void)
>  	int error;
>  	int i;
>  
> +	if (rfkill_default_state != RFKILL_STATE_OFF &&
> +	    rfkill_default_state != RFKILL_STATE_ON)
> +		return -EINVAL;
> +
>  	for (i = 0; i < ARRAY_SIZE(rfkill_states); i++)
> -		rfkill_states[i] = RFKILL_STATE_ON;
> +		rfkill_states[i] = rfkill_default_state;
> +
> +	if (rfkill_init_states(rfkill_default_state_wlan,
> +				  RFKILL_TYPE_WLAN)
> +	    || rfkill_init_states(rfkill_default_state_bluetooth,
> +				  RFKILL_TYPE_BLUETOOTH)
> +	    || rfkill_init_states(rfkill_default_state_uwb,
> +				  RFKILL_TYPE_UWB)
> +	    || rfkill_init_states(rfkill_default_state_wimax,
> +				  RFKILL_TYPE_WIMAX)
> +	    || rfkill_init_states(rfkill_default_state_wwan,
> +				  RFKILL_TYPE_WWAN)
> +	    || rfkill_init_states(rfkill_default_state_any,
> +				  RFKILL_TYPE_ANY))
> +		return -EINVAL;
>  
>  	error = class_register(&rfkill_class);
>  	if (error) {



  reply	other threads:[~2008-04-12 10:36 UTC|newest]

Thread overview: 61+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-04-11 20:37 [GIT PATCH] rfkill support for r/w and r/o rfkill switches Henrique de Moraes Holschuh
2008-04-11 20:37 ` [PATCH 1/8] rfkill: clarify meaning of rfkill states Henrique de Moraes Holschuh
2008-04-14  4:22   ` Dmitry Torokhov
2008-04-11 20:37 ` [PATCH 2/8] rfkill: fix minor typo in kernel doc Henrique de Moraes Holschuh
2008-04-11 20:37 ` [PATCH 3/8] rfkill: handle KEY_RADIO and SW_RADIO events Henrique de Moraes Holschuh
2008-04-12 10:36   ` Ivo van Doorn
2008-04-12 12:05     ` Henrique de Moraes Holschuh
2008-04-12 12:23       ` Ivo van Doorn
2008-04-12 13:08         ` Henrique de Moraes Holschuh
2008-04-12 13:17           ` Ivo van Doorn
2008-04-12 15:47   ` Dmitry Torokhov
2008-04-12 18:02     ` Henrique de Moraes Holschuh
2008-04-12 18:14       ` Ivo van Doorn
2008-04-12 19:09         ` Carlos Corbacho
2008-04-12 20:36           ` Henrique de Moraes Holschuh
2008-04-11 20:37 ` [PATCH 4/8] rfkill: add read-write rfkill switch support Henrique de Moraes Holschuh
2008-04-12 10:36   ` Ivo van Doorn
2008-04-14  1:20     ` Henrique de Moraes Holschuh
2008-04-14 12:00       ` Ivo van Doorn
2008-04-14 14:16         ` Dmitry Torokhov
2008-04-14 14:36           ` Henrique de Moraes Holschuh
2008-04-14 15:19             ` Dmitry Torokhov
2008-04-14 16:33               ` Henrique de Moraes Holschuh
2008-04-14 18:05                 ` Dmitry Torokhov
2008-04-14 21:41                   ` Henrique de Moraes Holschuh
2008-04-14 19:06         ` Carlos Corbacho
2008-04-14 20:23           ` Dmitry Torokhov
2008-04-15  7:27             ` Carlos Corbacho
2008-04-15 12:58               ` Dmitry Torokhov
2008-04-14 21:04           ` Ivo van Doorn
2008-04-14 21:46             ` Henrique de Moraes Holschuh
2008-04-15  8:14               ` Ivo Van Doorn
2008-04-11 20:37 ` [PATCH 5/8] rfkill: add read-only " Henrique de Moraes Holschuh
2008-04-11 20:37 ` [PATCH 6/8] rfkill: add the WWAN radio type Henrique de Moraes Holschuh
2008-04-11 20:44   ` Inaky Perez-Gonzalez
2008-04-11 20:53     ` Henrique de Moraes Holschuh
2008-04-12 10:36   ` Ivo van Doorn
2008-04-12 12:15     ` Henrique de Moraes Holschuh
2008-04-12 12:28       ` Ivo van Doorn
2008-04-12 23:23       ` Inaky Perez-Gonzalez
2008-04-13 17:25         ` Henrique de Moraes Holschuh
2008-04-13 17:37           ` Ivo van Doorn
2008-04-13 18:16             ` Henrique de Moraes Holschuh
2008-04-14  4:20               ` Dmitry Torokhov
2008-04-11 20:37 ` [PATCH 7/8] rfkill: add an "any radio" switch type and functionality Henrique de Moraes Holschuh
2008-04-12 19:57   ` Pavel Machek
2008-04-13 17:40     ` Henrique de Moraes Holschuh
2008-04-11 20:37 ` [PATCH 8/8] rfkill: add parameter to disable radios by default Henrique de Moraes Holschuh
2008-04-12 10:36   ` Ivo van Doorn [this message]
2008-04-12 12:56     ` Henrique de Moraes Holschuh
2008-04-12 13:43       ` Ivo van Doorn
2008-04-12 14:43         ` Henrique de Moraes Holschuh
2008-04-12 16:24           ` Ivo van Doorn
2008-04-12 18:36             ` Henrique de Moraes Holschuh
2008-04-12 19:15               ` Ivo van Doorn
2008-04-12 10:36 ` [GIT PATCH] rfkill support for r/w and r/o rfkill switches Ivo van Doorn
2008-04-16 18:37 ` John W. Linville
2008-04-16 19:26   ` Ivo van Doorn
2008-04-16 19:58     ` John W. Linville
2008-04-16 20:40       ` Ivo van Doorn
2008-04-17  1:29         ` David Miller

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=200804121236.46626.IvDoorn@gmail.com \
    --to=ivdoorn@gmail.com \
    --cc=dtor@mail.ru \
    --cc=hmh@hmh.eng.br \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linville@tuxdriver.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