2010-03-02 20:51:14

by Andrew Morton

[permalink] [raw]
Subject: Re: [PATCH] rfkill bug fixed in rfkill_set_sw_state

Suitable cc's (from scripts/get_maintainer.pl) added.

On Fri, 26 Feb 2010 13:55:31 +0900
_________ <[email protected]> wrote:

> Don___t work expected operation in __rfkill_set_sw_state.
> when rfkill initialized. Rfkill___s blocked & unblocked is operating on the
> contrary.
>
> Signed-off-by: Jaehoon Chung <[email protected]>
>
> ---
> net/rfkill/core.c | 2 +-
> 1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/net/rfkill/core.c b/net/rfkill/core.c
> index c224cb2..dcc2d38 100644
> --- a/net/rfkill/core.c
> +++ b/net/rfkill/core.c
> @@ -488,7 +488,7 @@ static void __rfkill_set_sw_state(struct rfkill
> *rfkill, bool blocked)
> if (rfkill->state & RFKILL_BLOCK_SW_SETCALL)
> bit = RFKILL_BLOCK_SW_PREV;
>
> - if (blocked)
> + if (!blocked)
> rfkill->state |= bit;
> else
> rfkill->state &= ~bit;

Are you sure? What problems were you observing with the existing code?
Please fully describe your hardware and the driver's behaviour.

The current code _looks_ OK to me. If bool `blocked' is true, we set
the RFKILL_BLOCK_SW bit?



2010-03-03 00:47:33

by Jaehoon Chung

[permalink] [raw]
Subject: Re: [PATCH] rfkill bug fixed in rfkill_set_sw_state

Ok Next time, i will add sutatble cc's scripts/get_maintainer.pl. thanks..
> Suitable cc's (from scripts/get_maintainer.pl) added.
>
> On Fri, 26 Feb 2010 13:55:31 +0900
> _________<[email protected]> wrote:
>
>
>> Don___t work expected operation in __rfkill_set_sw_state.
>> when rfkill initialized. Rfkill___s blocked& unblocked is operating on the
>> contrary.
>>
>> Signed-off-by: Jaehoon Chung<[email protected]>
>>
>> ---
>> net/rfkill/core.c | 2 +-
>> 1 files changed, 1 insertions(+), 1 deletions(-)
>>
>> diff --git a/net/rfkill/core.c b/net/rfkill/core.c
>> index c224cb2..dcc2d38 100644
>> --- a/net/rfkill/core.c
>> +++ b/net/rfkill/core.c
>> @@ -488,7 +488,7 @@ static void __rfkill_set_sw_state(struct rfkill
>> *rfkill, bool blocked)
>> if (rfkill->state& RFKILL_BLOCK_SW_SETCALL)
>> bit = RFKILL_BLOCK_SW_PREV;
>>
>> - if (blocked)
>> + if (!blocked)
>> rfkill->state |= bit;
>> else
>> rfkill->state&= ~bit;
>>
> Are you sure? What problems were you observing with the existing code?
> Please fully describe your hardware and the driver's behaviour.
>
> The current code _looks_ OK to me. If bool `blocked' is true, we set
> the RFKILL_BLOCK_SW bit?
>
I implemented the wlan driver using rfkill.
In my source code, the wlan driver initalized to
RFKLL_USESR_STATE_UNBLOCKED..
if that is correct, maybe do working the unblocked...but not work
"unblocked"

below code is unblock's operation..right?
rfkill_init_sw_state(wlan, RFKILL_USER_STATE_UNBLOCKED);

but, do not operate unblocked.
please check that source code..

thanks for your comment, Andrew.


2010-03-03 09:36:14

by Alan Jenkins

[permalink] [raw]
Subject: Re: [PATCH] rfkill bug fixed in rfkill_set_sw_state

Jaehoon Chung wrote:
> Ok Next time, i will add sutatble cc's scripts/get_maintainer.pl.
> thanks..
>> Suitable cc's (from scripts/get_maintainer.pl) added.
>>
>> On Fri, 26 Feb 2010 13:55:31 +0900
>> _________<[email protected]> wrote:
>>
>>
>>> Don___t work expected operation in __rfkill_set_sw_state.
>>> when rfkill initialized. Rfkill___s blocked& unblocked is operating
>>> on the
>>> contrary.
>>>
>>> Signed-off-by: Jaehoon Chung<[email protected]>
>>>
>>> ---
>>> net/rfkill/core.c | 2 +-
>>> 1 files changed, 1 insertions(+), 1 deletions(-)
>>>
>>> diff --git a/net/rfkill/core.c b/net/rfkill/core.c
>>> index c224cb2..dcc2d38 100644
>>> --- a/net/rfkill/core.c
>>> +++ b/net/rfkill/core.c
>>> @@ -488,7 +488,7 @@ static void __rfkill_set_sw_state(struct rfkill
>>> *rfkill, bool blocked)
>>> if (rfkill->state& RFKILL_BLOCK_SW_SETCALL)
>>> bit = RFKILL_BLOCK_SW_PREV;
>>>
>>> - if (blocked)
>>> + if (!blocked)
>>> rfkill->state |= bit;
>>> else
>>> rfkill->state&= ~bit;
>>>
>> Are you sure? What problems were you observing with the existing code?
>> Please fully describe your hardware and the driver's behaviour.
>>
>> The current code _looks_ OK to me. If bool `blocked' is true, we set
>> the RFKILL_BLOCK_SW bit?
>>
> I implemented the wlan driver using rfkill.
> In my source code, the wlan driver initalized to
> RFKLL_USESR_STATE_UNBLOCKED..
> if that is correct, maybe do working the unblocked...but not work
> "unblocked"
>
> below code is unblock's operation..right?
> rfkill_init_sw_state(wlan, RFKILL_USER_STATE_UNBLOCKED);
>
> but, do not operate unblocked.
> please check that source code..

I see the problem :). The hint is in the _USER_ - those constants are
not for use by drivers. You want this instead:

rfkill_init_sw_state(wlan, false);

(assuming you really want init_sw_state(). Please do check that your
device state is persistent, as described by the comment in rfkill.h).

Regards
Alan

2010-03-03 10:17:19

by Jaehoon Chung

[permalink] [raw]
Subject: Re: [PATCH] rfkill bug fixed in rfkill_set_sw_state

Alan Jenkins wrote:
> Jaehoon Chung wrote:
>> Ok Next time, i will add sutatble cc's scripts/get_maintainer.pl.
>> thanks..
>>> Suitable cc's (from scripts/get_maintainer.pl) added.
>>>
>>> On Fri, 26 Feb 2010 13:55:31 +0900
>>> _________<[email protected]> wrote:
>>>
>>>> Don___t work expected operation in __rfkill_set_sw_state.
>>>> when rfkill initialized. Rfkill___s blocked& unblocked is
>>>> operating on the
>>>> contrary.
>>>>
>>>> Signed-off-by: Jaehoon Chung<[email protected]>
>>>>
>>>> ---
>>>> net/rfkill/core.c | 2 +-
>>>> 1 files changed, 1 insertions(+), 1 deletions(-)
>>>>
>>>> diff --git a/net/rfkill/core.c b/net/rfkill/core.c
>>>> index c224cb2..dcc2d38 100644
>>>> --- a/net/rfkill/core.c
>>>> +++ b/net/rfkill/core.c
>>>> @@ -488,7 +488,7 @@ static void __rfkill_set_sw_state(struct rfkill
>>>> *rfkill, bool blocked)
>>>> if (rfkill->state& RFKILL_BLOCK_SW_SETCALL)
>>>> bit = RFKILL_BLOCK_SW_PREV;
>>>>
>>>> - if (blocked)
>>>> + if (!blocked)
>>>> rfkill->state |= bit;
>>>> else
>>>> rfkill->state&= ~bit;
>>> Are you sure? What problems were you observing with the existing code?
>>> Please fully describe your hardware and the driver's behaviour.
>>>
>>> The current code _looks_ OK to me. If bool `blocked' is true, we set
>>> the RFKILL_BLOCK_SW bit?
>> I implemented the wlan driver using rfkill.
>> In my source code, the wlan driver initalized to
>> RFKLL_USESR_STATE_UNBLOCKED..
>> if that is correct, maybe do working the unblocked...but not work
>> "unblocked"
>>
>> below code is unblock's operation..right?
>> rfkill_init_sw_state(wlan, RFKILL_USER_STATE_UNBLOCKED);
>>
>> but, do not operate unblocked.
>> please check that source code..
>
> I see the problem :). The hint is in the _USER_ - those constants are
> not for use by drivers. You want this instead:
>
> rfkill_init_sw_state(wlan, false);
>
> (assuming you really want init_sw_state(). Please do check that your
> device state is persistent, as described by the comment in rfkill.h).
>
> Regards
> Alan
>

Oh...i checked the comment in rfkill.h. i didn't see that comment.
thanks for your opinion..:)

Regards
Jaehoon Chung