2007-02-07 06:02:52

by Larry Finger

[permalink] [raw]
Subject: RFT: The real fix for BCM4311 and BCM4312

The patch I sent out earlier was wrong; however, it provided a clue as to what was wrong in the
specs and in the code. As it turned out, the mistake I made earlier only affected 4 places in the
code and it was easy to test them in turn. According to Murphy's law, the wrong one was the last one
tested. If you don't know about Murphy, his law can be paraphrased as "Anything that can go wrong will".

The patch below will only affect cards with PHY revision 8, which I think are only BCM4311 and
BCM4312. At least those are the only ones in the database.

Sorry about the false step earlier, but I was so excited to get the 4311 working that I screwed up
the test of the 4318.

Larry

==============



Index: linux-2.6/drivers/net/wireless/bcm43xx/bcm43xx_phy.c
===================================================================
--- linux-2.6.orig/drivers/net/wireless/bcm43xx/bcm43xx_phy.c
+++ linux-2.6/drivers/net/wireless/bcm43xx/bcm43xx_phy.c
@@ -1225,7 +1225,7 @@ static void bcm43xx_phy_initg(struct bcm
}
if (phy->rev < 3 && phy->connected)
bcm43xx_phy_write(bcm, 0x047E, 0x0078);
- if (phy->rev >= 6 && phy->rev <= 8) {
+ if (phy->rev >= 6 && phy->rev < 8) {
bcm43xx_phy_write(bcm, 0x0801, bcm43xx_phy_read(bcm, 0x0801) | 0x0080);
bcm43xx_phy_write(bcm, 0x043E, bcm43xx_phy_read(bcm, 0x043E) | 0x0004);
}




2007-02-07 13:44:25

by Rafael J. Wysocki

[permalink] [raw]
Subject: Re: RFT: The real fix for BCM4311 and BCM4312

On Wednesday, 7 February 2007 07:34, Pavel Roskin wrote:
> On Wed, 2007-02-07 at 00:02 -0600, Larry Finger wrote:
> > The patch below will only affect cards with PHY revision 8, which I think are only BCM4311 and
> > BCM4312. At least those are the only ones in the database.
>
> BCM4312, old patch: 1.7M/s
> no patch: 26k/s
> no patch, rate 1: 100k/s
> new patch: 1.7M/s
> new patch, rate 1: 1.1M/s
> new patch, rate 2: 1.5M/s
> new patch, rate 5.5: 1.7M/s
> new patch, rate 18: 2.2M/s
> new patch, rate 36: 2.2M/s
>
> Yes, it looks like the new patch is as good as the previous one for my card.

The patch is apparently sufficient for me too. Moreover, the D-Link APs that
were previously "invisible" are now listed by "iwlist ... scan" and I can
connect with them. Thanks again!

Greetings,
Rafael

2007-02-13 21:38:32

by John W. Linville

[permalink] [raw]
Subject: Re: RFT: The real fix for BCM4311 and BCM4312

On Sat, Feb 10, 2007 at 05:41:06PM -0600, Larry Finger wrote:
> Miles Lane wrote:
> > I am testing this patch applied to the wireless-net git tree.
> > The card is a Linksys WPC54G. The card is still getting very
> > weak signal strength and the connection seems unresponsive
> > most of the time.
>
> As the subject says, the patch was for 4311 and 4312 cards. The 4318's are not yet fixed.
>
> As measured by my RF receiver, the amplitude of the 4318 is about -70 dBm, the 4311 is about -60 dBm
> and the 4306 is -50 dBm. All should have the -50 reading with my test setup.
>
> I'm working on the power routines and will let you know.

FWIW, this patch seems to have helped some BCM4311 and BCM4312 wielding
Fedora users.

John
--
John W. Linville
[email protected]

2007-02-13 23:36:56

by Stephen Sinclair

[permalink] [raw]
Subject: Re: RFT: The real fix for BCM4311 and BCM4312

> I think most, if not all, the 4311 and 4312's are helped. I will be submitting a set of
> patches this afternoon that help most cards.

I just wanted to express my thanks for all your work on this driver,
and everyone else who's contributed to it. Since this patch has fixed
the speed issues, I haven't had to boot to Windows on my laptop in
like a week. I wonder if I ever will again. It's the way it should
be, and it's just fantastic. Thank you! If I could, I'd definitely
buy you a beer. ;-)


Steve

2007-02-10 23:30:17

by Miles Lane

[permalink] [raw]
Subject: Re: RFT: The real fix for BCM4311 and BCM4312

I am testing this patch applied to the wireless-net git tree.
The card is a Linksys WPC54G. The card is still getting very
weak signal strength and the connection seems unresponsive
most of the time.

lspci shows:
Broadcom Corporation BCM4318 [AirForce One 54g] 802.11g Wireless LAN
Controller (rev 02)

Here is the output of "dmesg | grep bcm":

bcm43xx driver
bcm43xx: Chip ID 0x4318, rev 0x2
bcm43xx: Number of cores: 4
bcm43xx: Core 0: ID 0x800, rev 0xd, vendor 0x4243
bcm43xx: Core 1: ID 0x812, rev 0x9, vendor 0x4243
bcm43xx: Core 2: ID 0x804, rev 0xc, vendor 0x4243
bcm43xx: Core 3: ID 0x80d, rev 0x7, vendor 0x4243
bcm43xx: PHY connected
bcm43xx: Detected PHY: Version: 3, Type 2, Revision 7
bcm43xx: Detected Radio: ID: 8205017f (Manuf: 17f Ver: 2050 Rev: 8)
bcm43xx: Radio turned off
bcm43xx: Radio turned off
bcm43xx: PHY connected
bcm43xx: Microcode rev 0x127, pl 0xe (2005-04-18 02:36:27)
bcm43xx: Radio turned on
bcm43xx: ASSERTION FAILED (radio_attenuation < 10) at:
drivers/net/wireless/bcm43xx/bcm43xx_phy.c:1496:bcm43xx_find_lopair()
bcm43xx: ASSERTION FAILED (radio_attenuation < 10) at:
drivers/net/wireless/bcm43xx/bcm43xx_phy.c:1496:bcm43xx_find_lopair()
bcm43xx: ASSERTION FAILED (radio_attenuation < 10) at:
drivers/net/wireless/bcm43xx/bcm43xx_phy.c:1496:bcm43xx_find_lopair()
bcm43xx: Chip initialized
bcm43xx: 32-bit DMA initialized
bcm43xx: Keys cleared
bcm43xx: Selected 802.11 core (phytype 2)
bcm43xx: ASSERTION FAILED (radio_attenuation < 10) at:
drivers/net/wireless/bcm43xx/bcm43xx_phy.c:1496:bcm43xx_find_lopair()
bcm43xx: set security called, .level = 0, .enabled = 0, .encrypt = 0
bcm43xx: set security called, .level = 0, .enabled = 0, .encrypt = 0
bcm43xx: set security called, .level = 0, .enabled = 0, .encrypt = 0
bcm43xx: set security called, .level = 0, .enabled = 0, .encrypt = 0
bcm43xx: set security called, .level = 0, .enabled = 0, .encrypt = 0
bcm43xx: set security called, .level = 0, .enabled = 0, .encrypt = 0
bcm43xx: Radio turned off
bcm43xx: DMA-32 0x0200 (RX) max used slots: 2/64
bcm43xx: DMA-32 0x02A0 (TX) max used slots: 0/512
bcm43xx: DMA-32 0x0280 (TX) max used slots: 0/512
bcm43xx: DMA-32 0x0260 (TX) max used slots: 0/512
bcm43xx: DMA-32 0x0240 (TX) max used slots: 0/512
bcm43xx: DMA-32 0x0220 (TX) max used slots: 2/512
bcm43xx: DMA-32 0x0200 (TX) max used slots: 0/512
bcm43xx: Microcode rev 0x127, pl 0xe (2005-04-18 02:36:27)
bcm43xx: Radio turned on
bcm43xx: ASSERTION FAILED (radio_attenuation < 10) at:
drivers/net/wireless/bcm43xx/bcm43xx_phy.c:1496:bcm43xx_find_lopair()
bcm43xx: ASSERTION FAILED (radio_attenuation < 10) at:
drivers/net/wireless/bcm43xx/bcm43xx_phy.c:1496:bcm43xx_find_lopair()
bcm43xx: Chip initialized
bcm43xx: 32-bit DMA initialized
bcm43xx: Keys cleared
bcm43xx: Selected 802.11 core (phytype 2)
bcm43xx: ASSERTION FAILED (radio_attenuation < 10) at:
drivers/net/wireless/bcm43xx/bcm43xx_phy.c:1496:bcm43xx_find_lopair()
bcm43xx: set security called, .level = 0, .enabled = 0, .encrypt = 0
bcm43xx: set security called, .level = 0, .enabled = 0, .encrypt = 0
bcm43xx: set security called, .level = 0, .enabled = 0, .encrypt = 0
bcm43xx: set security called, .level = 0, .enabled = 0, .encrypt = 0
bcm43xx: Radio turned off
bcm43xx: DMA-32 0x0200 (RX) max used slots: 1/64
bcm43xx: DMA-32 0x02A0 (TX) max used slots: 0/512
bcm43xx: DMA-32 0x0280 (TX) max used slots: 0/512
bcm43xx: DMA-32 0x0260 (TX) max used slots: 0/512
bcm43xx: DMA-32 0x0240 (TX) max used slots: 0/512
bcm43xx: DMA-32 0x0220 (TX) max used slots: 5/512
bcm43xx: DMA-32 0x0200 (TX) max used slots: 0/512
bcm43xx: set security called, .level = 0, .enabled = 0, .encrypt = 0
bcm43xx: Microcode rev 0x127, pl 0xe (2005-04-18 02:36:27)
bcm43xx: Radio turned on
bcm43xx: ASSERTION FAILED (radio_attenuation < 10) at:
drivers/net/wireless/bcm43xx/bcm43xx_phy.c:1496:bcm43xx_find_lopair()
bcm43xx: ASSERTION FAILED (radio_attenuation < 10) at:
drivers/net/wireless/bcm43xx/bcm43xx_phy.c:1496:bcm43xx_find_lopair()
bcm43xx: Chip initialized
bcm43xx: 32-bit DMA initialized
bcm43xx: Keys cleared
bcm43xx: Selected 802.11 core (phytype 2)
bcm43xx: ASSERTION FAILED (radio_attenuation < 10) at:
drivers/net/wireless/bcm43xx/bcm43xx_phy.c:1496:bcm43xx_find_lopair()
bcm43xx: set security called, .level = 0, .enabled = 0, .encrypt = 0
bcm43xx: set security called, .level = 0, .enabled = 0, .encrypt = 0
bcm43xx: set security called, .level = 0, .enabled = 0, .encrypt = 0
bcm43xx: set security called, .level = 0, .enabled = 0, .encrypt = 0
bcm43xx: Radio turned off
bcm43xx: DMA-32 0x0200 (RX) max used slots: 1/64
bcm43xx: DMA-32 0x02A0 (TX) max used slots: 0/512
bcm43xx: DMA-32 0x0280 (TX) max used slots: 0/512
bcm43xx: DMA-32 0x0260 (TX) max used slots: 0/512
bcm43xx: DMA-32 0x0240 (TX) max used slots: 0/512
bcm43xx: DMA-32 0x0220 (TX) max used slots: 9/512
bcm43xx: DMA-32 0x0200 (TX) max used slots: 0/512
bcm43xx: set security called, .level = 0, .enabled = 0, .encrypt = 0
bcm43xx: Microcode rev 0x127, pl 0xe (2005-04-18 02:36:27)
bcm43xx: Radio turned on
bcm43xx: ASSERTION FAILED (radio_attenuation < 10) at:
drivers/net/wireless/bcm43xx/bcm43xx_phy.c:1496:bcm43xx_find_lopair()
bcm43xx: ASSERTION FAILED (radio_attenuation < 10) at:
drivers/net/wireless/bcm43xx/bcm43xx_phy.c:1496:bcm43xx_find_lopair()
bcm43xx: Chip initialized
bcm43xx: 32-bit DMA initialized
bcm43xx: Keys cleared
bcm43xx: Selected 802.11 core (phytype 2)
bcm43xx: ASSERTION FAILED (radio_attenuation < 10) at:
drivers/net/wireless/bcm43xx/bcm43xx_phy.c:1496:bcm43xx_find_lopair()
bcm43xx: set security called, .level = 0, .enabled = 0, .encrypt = 0
bcm43xx: set security called, .level = 0, .enabled = 0, .encrypt = 0
bcm43xx: set security called, .level = 0, .enabled = 0, .encrypt = 0
bcm43xx: set security called, .level = 0, .enabled = 0, .encrypt = 0

I just tried the firmware that was included with the card. It looks
like it is an earlier revision. The performance seems the same.

2007-02-07 13:53:29

by Larry Finger

[permalink] [raw]
Subject: Re: RFT: The real fix for BCM4311 and BCM4312

Rafael J. Wysocki wrote:
> On Wednesday, 7 February 2007 07:34, Pavel Roskin wrote:
>> On Wed, 2007-02-07 at 00:02 -0600, Larry Finger wrote:
>>> The patch below will only affect cards with PHY revision 8, which I think are only BCM4311 and
>>> BCM4312. At least those are the only ones in the database.
>> BCM4312, old patch: 1.7M/s
>> no patch: 26k/s
>> no patch, rate 1: 100k/s
>> new patch: 1.7M/s
>> new patch, rate 1: 1.1M/s
>> new patch, rate 2: 1.5M/s
>> new patch, rate 5.5: 1.7M/s
>> new patch, rate 18: 2.2M/s
>> new patch, rate 36: 2.2M/s
>>
>> Yes, it looks like the new patch is as good as the previous one for my card.
>
> The patch is apparently sufficient for me too. Moreover, the D-Link APs that
> were previously "invisible" are now listed by "iwlist ... scan" and I can
> connect with them. Thanks again!

Great - a two-for-one! That must have been a signal strength issue.

Larry

2007-02-10 23:41:08

by Larry Finger

[permalink] [raw]
Subject: Re: RFT: The real fix for BCM4311 and BCM4312

Miles Lane wrote:
> I am testing this patch applied to the wireless-net git tree.
> The card is a Linksys WPC54G. The card is still getting very
> weak signal strength and the connection seems unresponsive
> most of the time.

As the subject says, the patch was for 4311 and 4312 cards. The 4318's are not yet fixed.

As measured by my RF receiver, the amplitude of the 4318 is about -70 dBm, the 4311 is about -60 dBm
and the 4306 is -50 dBm. All should have the -50 reading with my test setup.

I'm working on the power routines and will let you know.

Larry

2007-02-07 06:34:35

by Pavel Roskin

[permalink] [raw]
Subject: Re: RFT: The real fix for BCM4311 and BCM4312

On Wed, 2007-02-07 at 00:02 -0600, Larry Finger wrote:
> The patch below will only affect cards with PHY revision 8, which I think are only BCM4311 and
> BCM4312. At least those are the only ones in the database.

BCM4312, old patch: 1.7M/s
no patch: 26k/s
no patch, rate 1: 100k/s
new patch: 1.7M/s
new patch, rate 1: 1.1M/s
new patch, rate 2: 1.5M/s
new patch, rate 5.5: 1.7M/s
new patch, rate 18: 2.2M/s
new patch, rate 36: 2.2M/s

Yes, it looks like the new patch is as good as the previous one for my card.

The rates are reported by wget, so they are not nearly precise, but the
difference of 2 orders of magnitude just cannot be explained by anything
other than the fix to the driver.

--
Regards,
Pavel Roskin


2007-02-13 22:20:04

by Larry Finger

[permalink] [raw]
Subject: Re: RFT: The real fix for BCM4311 and BCM4312

John W. Linville wrote:
> On Sat, Feb 10, 2007 at 05:41:06PM -0600, Larry Finger wrote:
>> Miles Lane wrote:
>>> I am testing this patch applied to the wireless-net git tree.
>>> The card is a Linksys WPC54G. The card is still getting very
>>> weak signal strength and the connection seems unresponsive
>>> most of the time.
>> As the subject says, the patch was for 4311 and 4312 cards. The 4318's are not yet fixed.
>>
>> As measured by my RF receiver, the amplitude of the 4318 is about -70 dBm, the 4311 is about -60 dBm
>> and the 4306 is -50 dBm. All should have the -50 reading with my test setup.
>>
>> I'm working on the power routines and will let you know.
>
> FWIW, this patch seems to have helped some BCM4311 and BCM4312 wielding
> Fedora users.

I think most, if not all, the 4311 and 4312's are helped. I will be submitting a set of patches this
afternoon that help most cards.

Larry