2010-02-04 20:58:08

by Rafał Miłecki

[permalink] [raw]
Subject: [RFC][PATCH] b43: LP-PHY: always adjust gain table on channel switch

---
Gábor: I think you missed specs here. Could you check whole routine just for
sure, please? I don't understand whole radio and chanspec magic yet.
---
drivers/net/wireless/b43/phy_lp.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/net/wireless/b43/phy_lp.c b/drivers/net/wireless/b43/phy_lp.c
index 185219e..61009ee 100644
--- a/drivers/net/wireless/b43/phy_lp.c
+++ b/drivers/net/wireless/b43/phy_lp.c
@@ -2655,8 +2655,8 @@ static int b43_lpphy_op_switch_channel(struct b43_wldev *dev,
if (err)
return err;
lpphy_set_analog_filter(dev, new_channel);
- lpphy_adjust_gain_table(dev, channel2freq_lp(new_channel));
}
+ lpphy_adjust_gain_table(dev, channel2freq_lp(new_channel));

lpphy->channel = new_channel;
b43_write16(dev, B43_MMIO_CHANNEL, new_channel);
--
1.6.4.2



2010-02-06 00:06:08

by Larry Finger

[permalink] [raw]
Subject: Re: [RFC][PATCH] b43: LP-PHY: always adjust gain table on channel switch

On 02/05/2010 10:27 AM, Gábor Stefanik wrote:
> On Fri, Feb 5, 2010 at 4:24 AM, Larry Finger <[email protected]> wrote:
>> On 02/04/2010 02:57 PM, Rafał Miłecki wrote:
>>> ---
>>> Gábor: I think you missed specs here. Could you check whole routine just for
>>> sure, please? I don't understand whole radio and chanspec magic yet.
>>> ---
>>> drivers/net/wireless/b43/phy_lp.c | 2 +-
>>> 1 files changed, 1 insertions(+), 1 deletions(-)
>>>
>>> diff --git a/drivers/net/wireless/b43/phy_lp.c b/drivers/net/wireless/b43/phy_lp.c
>>> index 185219e..61009ee 100644
>>> --- a/drivers/net/wireless/b43/phy_lp.c
>>> +++ b/drivers/net/wireless/b43/phy_lp.c
>>> @@ -2655,8 +2655,8 @@ static int b43_lpphy_op_switch_channel(struct b43_wldev *dev,
>>> if (err)
>>> return err;
>>> lpphy_set_analog_filter(dev, new_channel);
>>> - lpphy_adjust_gain_table(dev, channel2freq_lp(new_channel));
>>> }
>>> + lpphy_adjust_gain_table(dev, channel2freq_lp(new_channel));
>>>
>>> lpphy->channel = new_channel;
>>> b43_write16(dev, B43_MMIO_CHANNEL, new_channel);
>>
>> Both the lpphy_set_analog_filter() and lpphy_adjust_gain_table() calls should be
>> outside the if statement. I changed the spec a little. It used to test "radio
>> enabled", but I have found that is always true for our driver.
>>
>> Larry
>>
>>
>
> Isn't set_analog_filter() rev0/1-specific?

The new routines are described in

http://bcm-v4.sipsolutions.net/802.11/PHY/LP/TxFilterInit

http://bcm-v4.sipsolutions.net/802.11/PHY/LP/TxDigFiltUcodeRev2

The revised routines are:

http://bcm-v4.sipsolutions.net/802.11/PHY/LP/SetChanSpecLPPHY

http://bcm-v4.sipsolutions.net/802.11/PHY/LP/PR41573

Larry


2010-02-05 16:27:47

by Gábor Stefanik

[permalink] [raw]
Subject: Re: [RFC][PATCH] b43: LP-PHY: always adjust gain table on channel switch

On Fri, Feb 5, 2010 at 4:24 AM, Larry Finger <[email protected]> wrote:
> On 02/04/2010 02:57 PM, Rafał Miłecki wrote:
>> ---
>> Gábor: I think you missed specs here. Could you check whole routine just for
>> sure, please? I don't understand whole radio and chanspec magic yet.
>> ---
>>  drivers/net/wireless/b43/phy_lp.c |    2 +-
>>  1 files changed, 1 insertions(+), 1 deletions(-)
>>
>> diff --git a/drivers/net/wireless/b43/phy_lp.c b/drivers/net/wireless/b43/phy_lp.c
>> index 185219e..61009ee 100644
>> --- a/drivers/net/wireless/b43/phy_lp.c
>> +++ b/drivers/net/wireless/b43/phy_lp.c
>> @@ -2655,8 +2655,8 @@ static int b43_lpphy_op_switch_channel(struct b43_wldev *dev,
>>               if (err)
>>                       return err;
>>               lpphy_set_analog_filter(dev, new_channel);
>> -             lpphy_adjust_gain_table(dev, channel2freq_lp(new_channel));
>>       }
>> +     lpphy_adjust_gain_table(dev, channel2freq_lp(new_channel));
>>
>>       lpphy->channel = new_channel;
>>       b43_write16(dev, B43_MMIO_CHANNEL, new_channel);
>
> Both the lpphy_set_analog_filter() and lpphy_adjust_gain_table() calls should be
> outside the if statement. I changed the spec a little. It used to test "radio
> enabled", but I have found that is always true for our driver.
>
> Larry
>
>

Isn't set_analog_filter() rev0/1-specific?

--
Vista: [V]iruses, [I]ntruders, [S]pyware, [T]rojans and [A]dware. :-)

2010-02-05 18:46:42

by Gábor Stefanik

[permalink] [raw]
Subject: Re: [RFC][PATCH] b43: LP-PHY: always adjust gain table on channel switch

On Fri, Feb 5, 2010 at 7:09 PM, Larry Finger <[email protected]> wrote:
> On 02/05/2010 10:41 AM, Gábor Stefanik wrote:
>> On Fri, Feb 5, 2010 at 4:24 AM, Larry Finger <[email protected]> wrote:
>>> On 02/04/2010 02:57 PM, Rafał Miłecki wrote:
>>>> ---
>>>> Gábor: I think you missed specs here. Could you check whole routine just for
>>>> sure, please? I don't understand whole radio and chanspec magic yet.
>>>> ---
>>>>  drivers/net/wireless/b43/phy_lp.c |    2 +-
>>>>  1 files changed, 1 insertions(+), 1 deletions(-)
>>>>
>>>> diff --git a/drivers/net/wireless/b43/phy_lp.c b/drivers/net/wireless/b43/phy_lp.c
>>>> index 185219e..61009ee 100644
>>>> --- a/drivers/net/wireless/b43/phy_lp.c
>>>> +++ b/drivers/net/wireless/b43/phy_lp.c
>>>> @@ -2655,8 +2655,8 @@ static int b43_lpphy_op_switch_channel(struct b43_wldev *dev,
>>>>               if (err)
>>>>                       return err;
>>>>               lpphy_set_analog_filter(dev, new_channel);
>>>> -             lpphy_adjust_gain_table(dev, channel2freq_lp(new_channel));
>>>>       }
>>>> +     lpphy_adjust_gain_table(dev, channel2freq_lp(new_channel));
>>>>
>>>>       lpphy->channel = new_channel;
>>>>       b43_write16(dev, B43_MMIO_CHANNEL, new_channel);
>>>
>>> Both the lpphy_set_analog_filter() and lpphy_adjust_gain_table() calls should be
>>> outside the if statement. I changed the spec a little. It used to test "radio
>>> enabled", but I have found that is always true for our driver.
>>>
>>> Larry
>>>
>>>
>>
>> Isn't set_analog_filter() rev0/1-specific?
>
> It was in the 4.174.64.19 driver that I RE'd when you wrote the LP PHY code.
> That as changed in 5.10.56.46, which I am now doing. It will take me a while to
> complete the new routine "LP PHY TX Filter Init" and a routine that it calls.
>
> Certainly, there is no hurry that these changes be made. Whenever you or Rafał
> have time. There is no guarantee that these changes will have any effect on the
> LP PHY operations. Hitting a moving target is not easy.
>
> Larry
>

Just out of curiosity, is 5.10.56.46 available anywhere (for firmware reasons)?

--
Vista: [V]iruses, [I]ntruders, [S]pyware, [T]rojans and [A]dware. :-)

2010-02-06 19:24:38

by Gábor Stefanik

[permalink] [raw]
Subject: Re: [RFC][PATCH] b43: LP-PHY: always adjust gain table on channel switch

On Sat, Feb 6, 2010 at 1:06 AM, Larry Finger <[email protected]> wrote:
> On 02/05/2010 10:27 AM, Gábor Stefanik wrote:
>> On Fri, Feb 5, 2010 at 4:24 AM, Larry Finger <[email protected]> wrote:
>>> On 02/04/2010 02:57 PM, Rafał Miłecki wrote:
>>>> ---
>>>> Gábor: I think you missed specs here. Could you check whole routine just for
>>>> sure, please? I don't understand whole radio and chanspec magic yet.
>>>> ---
>>>>  drivers/net/wireless/b43/phy_lp.c |    2 +-
>>>>  1 files changed, 1 insertions(+), 1 deletions(-)
>>>>
>>>> diff --git a/drivers/net/wireless/b43/phy_lp.c b/drivers/net/wireless/b43/phy_lp.c
>>>> index 185219e..61009ee 100644
>>>> --- a/drivers/net/wireless/b43/phy_lp.c
>>>> +++ b/drivers/net/wireless/b43/phy_lp.c
>>>> @@ -2655,8 +2655,8 @@ static int b43_lpphy_op_switch_channel(struct b43_wldev *dev,
>>>>               if (err)
>>>>                       return err;
>>>>               lpphy_set_analog_filter(dev, new_channel);
>>>> -             lpphy_adjust_gain_table(dev, channel2freq_lp(new_channel));
>>>>       }
>>>> +     lpphy_adjust_gain_table(dev, channel2freq_lp(new_channel));
>>>>
>>>>       lpphy->channel = new_channel;
>>>>       b43_write16(dev, B43_MMIO_CHANNEL, new_channel);
>>>
>>> Both the lpphy_set_analog_filter() and lpphy_adjust_gain_table() calls should be
>>> outside the if statement. I changed the spec a little. It used to test "radio
>>> enabled", but I have found that is always true for our driver.
>>>
>>> Larry
>>>
>>>
>>
>> Isn't set_analog_filter() rev0/1-specific?
>
> The new routines are described in
>
> http://bcm-v4.sipsolutions.net/802.11/PHY/LP/TxFilterInit
>
> http://bcm-v4.sipsolutions.net/802.11/PHY/LP/TxDigFiltUcodeRev2
>
> The revised routines are:
>
> http://bcm-v4.sipsolutions.net/802.11/PHY/LP/SetChanSpecLPPHY
>
> http://bcm-v4.sipsolutions.net/802.11/PHY/LP/PR41573
>
> Larry
>
>

Note to implementors: Chanspec is broadcrap, please do NOT use in b43.
Use a struct if you need the extra parameters contained in chanspec.

--
Vista: [V]iruses, [I]ntruders, [S]pyware, [T]rojans and [A]dware. :-)

2010-02-05 19:19:58

by Larry Finger

[permalink] [raw]
Subject: Re: [RFC][PATCH] b43: LP-PHY: always adjust gain table on channel switch

On 02/05/2010 12:46 PM, Gábor Stefanik wrote:
> On Fri, Feb 5, 2010 at 7:09 PM, Larry Finger <[email protected]> wrote:
>> On 02/05/2010 10:41 AM, Gábor Stefanik wrote:
>>> On Fri, Feb 5, 2010 at 4:24 AM, Larry Finger <[email protected]> wrote:
>>>> On 02/04/2010 02:57 PM, Rafał Miłecki wrote:
>>>>> ---
>>>>> Gábor: I think you missed specs here. Could you check whole routine just for
>>>>> sure, please? I don't understand whole radio and chanspec magic yet.
>>>>> ---
>>>>> drivers/net/wireless/b43/phy_lp.c | 2 +-
>>>>> 1 files changed, 1 insertions(+), 1 deletions(-)
>>>>>
>>>>> diff --git a/drivers/net/wireless/b43/phy_lp.c b/drivers/net/wireless/b43/phy_lp.c
>>>>> index 185219e..61009ee 100644
>>>>> --- a/drivers/net/wireless/b43/phy_lp.c
>>>>> +++ b/drivers/net/wireless/b43/phy_lp.c
>>>>> @@ -2655,8 +2655,8 @@ static int b43_lpphy_op_switch_channel(struct b43_wldev *dev,
>>>>> if (err)
>>>>> return err;
>>>>> lpphy_set_analog_filter(dev, new_channel);
>>>>> - lpphy_adjust_gain_table(dev, channel2freq_lp(new_channel));
>>>>> }
>>>>> + lpphy_adjust_gain_table(dev, channel2freq_lp(new_channel));
>>>>>
>>>>> lpphy->channel = new_channel;
>>>>> b43_write16(dev, B43_MMIO_CHANNEL, new_channel);
>>>>
>>>> Both the lpphy_set_analog_filter() and lpphy_adjust_gain_table() calls should be
>>>> outside the if statement. I changed the spec a little. It used to test "radio
>>>> enabled", but I have found that is always true for our driver.
>>>>
>>>> Larry
>>>>
>>>>
>>>
>>> Isn't set_analog_filter() rev0/1-specific?
>>
>> It was in the 4.174.64.19 driver that I RE'd when you wrote the LP PHY code.
>> That as changed in 5.10.56.46, which I am now doing. It will take me a while to
>> complete the new routine "LP PHY TX Filter Init" and a routine that it calls.
>>
>> Certainly, there is no hurry that these changes be made. Whenever you or Rafał
>> have time. There is no guarantee that these changes will have any effect on the
>> LP PHY operations. Hitting a moving target is not easy.
>>
>> Larry
>>
>
> Just out of curiosity, is 5.10.56.46 available anywhere (for firmware reasons)?

I'm not sure what the driver version is, but a file with 508 ucode dated 6/26/09
is found at:

http://www.linksysbycisco.com/gpl/wrt610n_v2.00.00.05_us.tar.gz

The binaries are in directory wrt610n_v2.00.00.05_us/release/src/wl/linux/. I
used Daniel Lenski's script names b43_fwcutter.py can extract the firmware from
wl_apsta.o. Included are ucode_2w20 - Rev 20 802.11 cores have an SSLPN PHY.

I'm still looking for a file with 5XX firmware that is not a huge download. This
file contains everything needed to build the firmware for a WRT610N AP and is
356 MB. If anyone knows of a smaller file, please let me know.

Larry

2010-02-05 03:25:04

by Larry Finger

[permalink] [raw]
Subject: Re: [RFC][PATCH] b43: LP-PHY: always adjust gain table on channel switch

On 02/04/2010 02:57 PM, Rafał Miłecki wrote:
> ---
> Gábor: I think you missed specs here. Could you check whole routine just for
> sure, please? I don't understand whole radio and chanspec magic yet.
> ---
> drivers/net/wireless/b43/phy_lp.c | 2 +-
> 1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/drivers/net/wireless/b43/phy_lp.c b/drivers/net/wireless/b43/phy_lp.c
> index 185219e..61009ee 100644
> --- a/drivers/net/wireless/b43/phy_lp.c
> +++ b/drivers/net/wireless/b43/phy_lp.c
> @@ -2655,8 +2655,8 @@ static int b43_lpphy_op_switch_channel(struct b43_wldev *dev,
> if (err)
> return err;
> lpphy_set_analog_filter(dev, new_channel);
> - lpphy_adjust_gain_table(dev, channel2freq_lp(new_channel));
> }
> + lpphy_adjust_gain_table(dev, channel2freq_lp(new_channel));
>
> lpphy->channel = new_channel;
> b43_write16(dev, B43_MMIO_CHANNEL, new_channel);

Both the lpphy_set_analog_filter() and lpphy_adjust_gain_table() calls should be
outside the if statement. I changed the spec a little. It used to test "radio
enabled", but I have found that is always true for our driver.

Larry


2010-02-05 18:10:11

by Larry Finger

[permalink] [raw]
Subject: Re: [RFC][PATCH] b43: LP-PHY: always adjust gain table on channel switch

On 02/05/2010 10:41 AM, Gábor Stefanik wrote:
> On Fri, Feb 5, 2010 at 4:24 AM, Larry Finger <[email protected]> wrote:
>> On 02/04/2010 02:57 PM, Rafał Miłecki wrote:
>>> ---
>>> Gábor: I think you missed specs here. Could you check whole routine just for
>>> sure, please? I don't understand whole radio and chanspec magic yet.
>>> ---
>>> drivers/net/wireless/b43/phy_lp.c | 2 +-
>>> 1 files changed, 1 insertions(+), 1 deletions(-)
>>>
>>> diff --git a/drivers/net/wireless/b43/phy_lp.c b/drivers/net/wireless/b43/phy_lp.c
>>> index 185219e..61009ee 100644
>>> --- a/drivers/net/wireless/b43/phy_lp.c
>>> +++ b/drivers/net/wireless/b43/phy_lp.c
>>> @@ -2655,8 +2655,8 @@ static int b43_lpphy_op_switch_channel(struct b43_wldev *dev,
>>> if (err)
>>> return err;
>>> lpphy_set_analog_filter(dev, new_channel);
>>> - lpphy_adjust_gain_table(dev, channel2freq_lp(new_channel));
>>> }
>>> + lpphy_adjust_gain_table(dev, channel2freq_lp(new_channel));
>>>
>>> lpphy->channel = new_channel;
>>> b43_write16(dev, B43_MMIO_CHANNEL, new_channel);
>>
>> Both the lpphy_set_analog_filter() and lpphy_adjust_gain_table() calls should be
>> outside the if statement. I changed the spec a little. It used to test "radio
>> enabled", but I have found that is always true for our driver.
>>
>> Larry
>>
>>
>
> Isn't set_analog_filter() rev0/1-specific?

It was in the 4.174.64.19 driver that I RE'd when you wrote the LP PHY code.
That as changed in 5.10.56.46, which I am now doing. It will take me a while to
complete the new routine "LP PHY TX Filter Init" and a routine that it calls.

Certainly, there is no hurry that these changes be made. Whenever you or Rafał
have time. There is no guarantee that these changes will have any effect on the
LP PHY operations. Hitting a moving target is not easy.

Larry






2010-02-05 16:51:03

by Gábor Stefanik

[permalink] [raw]
Subject: Re: [RFC][PATCH] b43: LP-PHY: always adjust gain table on channel switch

On Fri, Feb 5, 2010 at 4:24 AM, Larry Finger <[email protected]> wrote:
> On 02/04/2010 02:57 PM, Rafał Miłecki wrote:
>> ---
>> Gábor: I think you missed specs here. Could you check whole routine just for
>> sure, please? I don't understand whole radio and chanspec magic yet.
>> ---
>>  drivers/net/wireless/b43/phy_lp.c |    2 +-
>>  1 files changed, 1 insertions(+), 1 deletions(-)
>>
>> diff --git a/drivers/net/wireless/b43/phy_lp.c b/drivers/net/wireless/b43/phy_lp.c
>> index 185219e..61009ee 100644
>> --- a/drivers/net/wireless/b43/phy_lp.c
>> +++ b/drivers/net/wireless/b43/phy_lp.c
>> @@ -2655,8 +2655,8 @@ static int b43_lpphy_op_switch_channel(struct b43_wldev *dev,
>>               if (err)
>>                       return err;
>>               lpphy_set_analog_filter(dev, new_channel);
>> -             lpphy_adjust_gain_table(dev, channel2freq_lp(new_channel));
>>       }
>> +     lpphy_adjust_gain_table(dev, channel2freq_lp(new_channel));
>>
>>       lpphy->channel = new_channel;
>>       b43_write16(dev, B43_MMIO_CHANNEL, new_channel);
>
> Both the lpphy_set_analog_filter() and lpphy_adjust_gain_table() calls should be
> outside the if statement. I changed the spec a little. It used to test "radio
> enabled", but I have found that is always true for our driver.
>
> Larry
>
>

Isn't set_analog_filter() rev0/1-specific?

--
Vista: [V]iruses, [I]ntruders, [S]pyware, [T]rojans and [A]dware. :-)