2008-04-16 02:27:37

by Miles Lane

[permalink] [raw]
Subject: 2.6.25-rc9 -- bcm4306 performance is in the toilet

Hi,

I have a bcm4306 card in my desktop machine. I am running a build of 2=
=2E6.25-rc9. I have tried fiddling with the network build options and =
no matter what I select, my network performance is absolutely terrible =
(between 0 - 24KBps). Connections take around 10-20 seconds to establi=
sh. I have a cable modem, and usually see nearly instantaneous connect=
ions and between 65-600KBps throughput. I just tried downloading somet=
hing and am seeing this: 223B/s. Everything is intermittent and and o=
ften times out.

I am attempting to collect a log for you to analyze. However, I am run=
ning into some snags.
1) The latest firmware, which is called for in the latest kernel code,=
won't work with my Ubuntu 8.10 kernel (2.6.24-16-386). I got the late=
st iw git code downloaded, but it won't build for me:

# make
CC interface.o
interface.c: In function =91get_if_type=92:
interface.c:50: error: =91NL80211_IFTYPE_MESH_POINT=92 undeclared (firs=
t use in this function)
interface.c:50: error: (Each undeclared identifier is reported only onc=
e
interface.c:50: error: for each function it appears in.)
interface.c: In function =91handle_interface_add=92:
interface.c:121: error: =91NL80211_ATTR_MESH_ID=92 undeclared (first us=
e in this function)
make: *** [interface.o] Error 1

I built with a bunch of network and wireless debugging options enabled =
and am seeing this is my kernel log:

[ 1959.456654] phy0: TX to low-level driver (len=3D68) FC=3D0x4108 DUR=3D=
0x00da A1=3D00:1b:2f:0e:ed:ba A2=3D00:0c:e5:53:2c:3e A3=3D00:1b:2f:0e:e=
d:ba
[ 1959.816931] phy0: TX to low-level driver (len=3D104) FC=3D0x4108 DUR=
=3D0x00da A1=3D00:1b:2f:0e:ed:ba A2=3D00:0c:e5:53:2c:3e A3=3D00:1b:2f:0=
e:ed:ba
[ 1960.485441] phy0: TX to low-level driver (len=3D68) FC=3D0x4108 DUR=3D=
0x00da A1=3D00:1b:2f:0e:ed:ba A2=3D00:0c:e5:53:2c:3e A3=3D00:1b:2f:0e:e=
d:ba
[ 1962.493413] phy0: TX to low-level driver (len=3D295) FC=3D0x4108 DUR=
=3D0x00da A1=3D00:1b:2f:0e:ed:ba A2=3D00:0c:e5:53:2c:3e A3=3D00:1b:2f:0=
e:ed:ba
[ 1962.591237] phy0: TX to low-level driver (len=3D112) FC=3D0x4108 DUR=
=3D0x00da A1=3D00:1b:2f:0e:ed:ba A2=3D00:0c:e5:53:2c:3e A3=3D00:1b:2f:0=
e:ed:ba
[ 1962.591824] phy0: TX to low-level driver (len=3D112) FC=3D0x4108 DUR=
=3D0x00da A1=3D00:1b:2f:0e:ed:ba A2=3D00:0c:e5:53:2c:3e A3=3D00:1b:2f:0=
e:ed:ba
[ 1963.590056] phy0: TX to low-level driver (len=3D51) FC=3D0x0040 DUR=3D=
0x00da A1=3D00:1b:2f:0e:ed:ba A2=3D00:0c:e5:53:2c:3e A3=3D00:1b:2f:0e:e=
d:ba
[ 1963.696498] printk: 6 messages suppressed.
[ 1963.696498] eth2: RX non-WEP frame, but expected encryption
[ 1968.081760] phy0: TX to low-level driver (len=3D285) FC=3D0x4108 DUR=
=3D0x00da A1=3D00:1b:2f:0e:ed:ba A2=3D00:0c:e5:53:2c:3e A3=3D00:1b:2f:0=
e:ed:ba
[ 1968.794538] phy0: TX to low-level driver (len=3D104) FC=3D0x4108 DUR=
=3D0x00da A1=3D00:1b:2f:0e:ed:ba A2=3D00:0c:e5:53:2c:3e A3=3D00:1b:2f:0=
e:ed:ba
[ 1969.334759] printk: 6 messages suppressed.
[ 1969.334759] eth2: RX non-WEP frame, but expected encryption
[ 1971.427823] phy0: TX to low-level driver (len=3D92) FC=3D0x4108 DUR=3D=
0x00da A1=3D00:1b:2f:0e:ed:ba A2=3D00:0c:e5:53:2c:3e A3=3D00:1b:2f:0e:e=
d:ba
[ 1977.083672] printk: 3 messages suppressed.
[ 1977.083672] eth2: RX non-WEP frame, but expected encryption
[ 1977.168797] phy0: TX to low-level driver (len=3D92) FC=3D0x4108 DUR=3D=
0x00da A1=3D00:1b:2f:0e:ed:ba A2=3D00:0c:e5:53:2c:3e A3=3D00:1b:2f:0e:e=
d:ba
[ 1977.747613] phy0: TX to low-level driver (len=3D112) FC=3D0x4108 DUR=
=3D0x00da A1=3D00:1b:2f:0e:ed:ba A2=3D00:0c:e5:53:2c:3e A3=3D00:1b:2f:0=
e:ed:ba
[ 1977.830750] phy0: TX to low-level driver (len=3D92) FC=3D0x4108 DUR=3D=
0x00da A1=3D00:1b:2f:0e:ed:ba A2=3D00:0c:e5:53:2c:3e A3=3D00:1b:2f:0e:e=
d:ba
[ 1977.830936] phy0: TX to low-level driver (len=3D92) FC=3D0x4108 DUR=3D=
0x00da A1=3D00:1b:2f:0e:ed:ba A2=3D00:0c:e5:53:2c:3e A3=3D00:1b:2f:0e:e=
d:ba
[ 1979.361252] HW CONFIG: channel=3D1 freq=3D2412 phymode=3D2
[ 1979.396044] phy0: TX to low-level driver (len=3D42) FC=3D0x0040 DUR=3D=
0x0000 A1=3Dff:ff:ff:ff:ff:ff A2=3D00:0c:e5:53:2c:3e A3=3Dff:ff:ff:ff:f=
f:ff
[ 1979.424945] HW CONFIG: channel=3D2 freq=3D2417 phymode=3D2
[ 1979.470621] phy0: TX to low-level driver (len=3D42) FC=3D0x0040 DUR=3D=
0x0000 A1=3Dff:ff:ff:ff:ff:ff A2=3D00:0c:e5:53:2c:3e A3=3Dff:ff:ff:ff:f=
f:ff
[ 1979.491637] HW CONFIG: channel=3D3 freq=3D2422 phymode=3D2
[ 1979.534201] phy0: TX to low-level driver (len=3D42) FC=3D0x0040 DUR=3D=
0x0000 A1=3Dff:ff:ff:ff:ff:ff A2=3D00:0c:e5:53:2c:3e A3=3Dff:ff:ff:ff:f=
f:ff
[ 1979.562325] HW CONFIG: channel=3D4 freq=3D2427 phymode=3D2
[ 1979.607111] phy0: TX to low-level driver (len=3D42) FC=3D0x0040 DUR=3D=
0x0000 A1=3Dff:ff:ff:ff:ff:ff A2=3D00:0c:e5:53:2c:3e A3=3Dff:ff:ff:ff:f=
f:ff
[ 1979.637328] HW CONFIG: channel=3D5 freq=3D2432 phymode=3D2
[ 1979.684702] phy0: TX to low-level driver (len=3D42) FC=3D0x0040 DUR=3D=
0x0000 A1=3Dff:ff:ff:ff:ff:ff A2=3D00:0c:e5:53:2c:3e A3=3Dff:ff:ff:ff:f=
f:ff
[ 1979.713532] HW CONFIG: channel=3D6 freq=3D2437 phymode=3D2
[ 1979.758496] phy0: TX to low-level driver (len=3D42) FC=3D0x0040 DUR=3D=
0x0000 A1=3Dff:ff:ff:ff:ff:ff A2=3D00:0c:e5:53:2c:3e A3=3Dff:ff:ff:ff:f=
f:ff
[ 1979.787576] HW CONFIG: channel=3D7 freq=3D2442 phymode=3D2
[ 1979.836341] phy0: TX to low-level driver (len=3D42) FC=3D0x0040 DUR=3D=
0x0000 A1=3Dff:ff:ff:ff:ff:ff A2=3D00:0c:e5:53:2c:3e A3=3Dff:ff:ff:ff:f=
f:ff
[ 1979.865464] HW CONFIG: channel=3D8 freq=3D2447 phymode=3D2
[ 1979.911072] phy0: TX to low-level driver (len=3D42) FC=3D0x0040 DUR=3D=
0x0000 A1=3Dff:ff:ff:ff:ff:ff A2=3D00:0c:e5:53:2c:3e A3=3Dff:ff:ff:ff:f=
f:ff
[ 1979.942569] HW CONFIG: channel=3D9 freq=3D2452 phymode=3D2
[ 1979.991364] phy0: TX to low-level driver (len=3D42) FC=3D0x0040 DUR=3D=
0x0000 A1=3Dff:ff:ff:ff:ff:ff A2=3D00:0c:e5:53:2c:3e A3=3Dff:ff:ff:ff:f=
f:ff
[ 1980.016228] HW CONFIG: channel=3D10 freq=3D2457 phymode=3D2
[ 1980.058783] phy0: TX to low-level driver (len=3D42) FC=3D0x0040 DUR=3D=
0x0000 A1=3Dff:ff:ff:ff:ff:ff A2=3D00:0c:e5:53:2c:3e A3=3Dff:ff:ff:ff:f=
f:ff
[ 1980.087823] HW CONFIG: channel=3D11 freq=3D2462 phymode=3D2
[ 1980.131718] phy0: TX to low-level driver (len=3D42) FC=3D0x0040 DUR=3D=
0x0000 A1=3Dff:ff:ff:ff:ff:ff A2=3D00:0c:e5:53:2c:3e A3=3Dff:ff:ff:ff:f=
f:ff
[ 1980.163187] HW CONFIG: channel=3D1 freq=3D2412 phymode=3D2
[ 1980.175182] phy0: TX to low-level driver (len=3D24) FC=3D0x0148 DUR=3D=
0x00da A1=3D00:1b:2f:0e:ed:ba A2=3D00:0c:e5:53:2c:3e A3=3D00:1b:2f:0e:e=
d:ba
[ 1980.838943] printk: 2 messages suppressed.
[ 1980.838943] eth2: RX non-WEP frame, but expected encryption
[ 1984.941340] printk: 3 messages suppressed.
[ 1984.941355] eth2: RX non-WEP frame, but expected encryption
[ 1986.486071] phy0: TX to low-level driver (len=3D104) FC=3D0x4108 DUR=
=3D0x00da A1=3D00:1b:2f:0e:ed:ba A2=3D00:0c:e5:53:2c:3e A3=3D00:1b:2f:0=
e:ed:ba
[ 1990.238587] printk: 7 messages suppressed.
[ 1990.238587] eth2: RX non-WEP frame, but expected encryption
[ 1994.877568] phy0: TX to low-level driver (len=3D92) FC=3D0x4108 DUR=3D=
0x00da A1=3D00:1b:2f:0e:ed:ba A2=3D00:0c:e5:53:2c:3e A3=3D00:1b:2f:0e:e=
d:ba
[ 1994.879422] phy0: TX to low-level driver (len=3D104) FC=3D0x4108 DUR=
=3D0x00da A1=3D00:1b:2f:0e:ed:ba A2=3D00:0c:e5:53:2c:3e A3=3D00:1b:2f:0=
e:ed:ba
[ 1994.881046] phy0: TX to low-level driver (len=3D92) FC=3D0x4108 DUR=3D=
0x00da A1=3D00:1b:2f:0e:ed:ba A2=3D00:0c:e5:53:2c:3e A3=3D00:1b:2f:0e:e=
d:ba
[ 1994.884351] phy0: TX to low-level driver (len=3D92) FC=3D0x4108 DUR=3D=
0x00da A1=3D00:1b:2f:0e:ed:ba A2=3D00:0c:e5:53:2c:3e A3=3D00:1b:2f:0e:e=
d:ba
[ 1995.065572] phy0: TX to low-level driver (len=3D80) FC=3D0x4108 DUR=3D=
0x00da A1=3D00:1b:2f:0e:ed:ba A2=3D00:0c:e5:53:2c:3e A3=3D00:1b:2f:0e:e=
d:ba
[ 1995.065572] phy0: TX to low-level driver (len=3D80) FC=3D0x4108 DUR=3D=
0x00da A1=3D00:1b:2f:0e:ed:ba A2=3D00:0c:e5:53:2c:3e A3=3D00:1b:2f:0e:e=
d:ba


2008-04-16 17:33:00

by Johannes Berg

[permalink] [raw]
Subject: Re: 2.6.25-rc9 -- bcm4306 performance is in the toilet


> interface.c: In function 'get_if_type':
> interface.c:50: error: 'NL80211_IFTYPE_MESH_POINT' undeclared (first
> use in this function)
> interface.c:50: error: (Each undeclared identifier is reported only once
> interface.c:50: error: for each function it appears in.)
> interface.c: In function 'handle_interface_add':
> interface.c:121: error: 'NL80211_ATTR_MESH_ID' undeclared (first use
> in this function)

You need a newer copy of nl80211.h or revert back to an older revision
of iw before the mesh code was added.

johannes


Attachments:
signature.asc (828.00 B)
This is a digitally signed message part

2008-04-16 18:02:26

by Johannes Berg

[permalink] [raw]
Subject: Re: 2.6.25-rc9 -- bcm4306 performance is in the toilet


> Am I required to get the linux-wireless git kernel tree in order to
> get the newer nl80211.h?

No, you can just get it from gitweb too :) But other than that,
probably. Or a compat tarball would work.

> I checked in the 2.6.25-rc9 tree and was surprised to find four copies
> of nl80211.h:
> 0 2008-04-14 23:48 ./include/config/nl80211.h
> 10074 2008-04-11 16:32 ./include/linux/nl80211.h
> 510 2008-04-11 16:32 ./net/wireless/nl80211.h
> 10074 2008-04-15 05:50 ./usr/include/linux/nl80211.h
>
> It seems interesting that two copies have the same byte count and that
> one of the files is empty. What's up with that?

The empty one is created when you configure, because there's a kconfig
symbol for nl80211. I'm not sure why it is empty, it should have
"#define CONFIG_NL80211 1" or so in it. The ./usr one is a copy of
the ./include one, that's done by headers_install (IIRC), the
net/wireless/nl80211.h one is for some local stuff in that dir.

johannes


Attachments:
signature.asc (828.00 B)
This is a digitally signed message part

2008-04-16 17:12:50

by Miles Lane

[permalink] [raw]
Subject: Re: 2.6.25-rc9 -- bcm4306 performance is in the toilet

On Wed, Apr 16, 2008 at 10:30 AM, Larry Finger
<[email protected]> wrote:
> Miles Lane wrote:
>
> > Hi,
> >
> > I have a bcm4306 card in my desktop machine. I am running a build of
> 2.6.25-rc9. I have tried fiddling with the network build options and no
> matter what I select, my network performance is absolutely terrible (between
> 0 - 24KBps). Connections take around 10-20 seconds to establish. I have a
> cable modem, and usually see nearly instantaneous connections and between
> 65-600KBps throughput. I just tried downloading something and am seeing
> this: 223B/s. Everything is intermittent and and often times out.
> >
> > I am attempting to collect a log for you to analyze. However, I am
> running into some snags.
> > 1) The latest firmware, which is called for in the latest kernel code,
> won't work with my Ubuntu 8.10 kernel (2.6.24-16-386). I got the latest iw
> git code downloaded, but it won't build for me:
> >
>
> Which revision of the BCM4306 do you have? Which driver (b43, b43legacy, or
> bcm43xx) are you running?
>
> Based on comment 1) above, I think you are using b43, but why should I have
> to guess?

Point taken.

This information is collected while running the Ubuntu 2.6.24-16-386 kernel:
b43 113952 0
ssb 31236 1 b43
mac80211 162708 1 b43
led_class 5124 1 b43
input_polldev 5000 1 b43
rfkill 7568 3 b43,rfkill_input

01:06.0 Network controller: Broadcom Corporation BCM4306 802.11b/g
Wireless LAN Controller (rev 03)

[ 80.331869] b43-phy0: Broadcom 4306 WLAN found
[ 80.404197] phy0: Selected rate control algorithm 'simple'
...
[ 94.554107] input: b43-phy0 as /devices/virtual/input/input6
[ 96.164622] Registered led device: b43-phy0:tx
[ 96.165130] Registered led device: b43-phy0:rx
[ 96.165535] Registered led device: b43-phy0:radio
...

Any idea why iw won't build?

interface.c: In function 'get_if_type':
interface.c:50: error: 'NL80211_IFTYPE_MESH_POINT' undeclared (first
use in this function)
interface.c:50: error: (Each undeclared identifier is reported only once
interface.c:50: error: for each function it appears in.)
interface.c: In function 'handle_interface_add':
interface.c:121: error: 'NL80211_ATTR_MESH_ID' undeclared (first use
in this function)

2008-04-16 17:45:50

by Miles Lane

[permalink] [raw]
Subject: Re: 2.6.25-rc9 -- bcm4306 performance is in the toilet

On Wed, Apr 16, 2008 at 1:30 PM, Johannes Berg
<[email protected]> wrote:
>
> > interface.c: In function 'get_if_type':
> > interface.c:50: error: 'NL80211_IFTYPE_MESH_POINT' undeclared (first
> > use in this function)
> > interface.c:50: error: (Each undeclared identifier is reported only once
> > interface.c:50: error: for each function it appears in.)
> > interface.c: In function 'handle_interface_add':
> > interface.c:121: error: 'NL80211_ATTR_MESH_ID' undeclared (first use
> > in this function)
>
> You need a newer copy of nl80211.h or revert back to an older revision
> of iw before the mesh code was added.

Am I required to get the linux-wireless git kernel tree in order to
get the newer nl80211.h?

I checked in the 2.6.25-rc9 tree and was surprised to find four copies
of nl80211.h:
0 2008-04-14 23:48 ./include/config/nl80211.h
10074 2008-04-11 16:32 ./include/linux/nl80211.h
510 2008-04-11 16:32 ./net/wireless/nl80211.h
10074 2008-04-15 05:50 ./usr/include/linux/nl80211.h

It seems interesting that two copies have the same byte count and that
one of the files is empty. What's up with that?

Thanks,
Miles

2008-04-16 15:58:20

by Holger Schurig

[permalink] [raw]
Subject: Re: 2.6.25-rc9 -- bcm4306 performance is in the toilet

> I built with a bunch of network and wireless debugging options
> enabled and am seeing this is my kernel log:
>
> [...]

Beware of sniffing in the toilet :-)

2008-04-16 17:55:10

by Pavel Roskin

[permalink] [raw]
Subject: Re: 2.6.25-rc9 -- bcm4306 performance is in the toilet

On Wed, 2008-04-16 at 13:45 -0400, Miles Lane wrote:

> Am I required to get the linux-wireless git kernel tree in order to
> get the newer nl80211.h?

You can take the latest compat-wireless, as suggested on the iw page:
http://linuxwireless.org/en/users/Documentation/iw

> I checked in the 2.6.25-rc9 tree and was surprised to find four copies
> of nl80211.h:
> 0 2008-04-14 23:48 ./include/config/nl80211.h
> 10074 2008-04-11 16:32 ./include/linux/nl80211.h
> 510 2008-04-11 16:32 ./net/wireless/nl80211.h
> 10074 2008-04-15 05:50 ./usr/include/linux/nl80211.h
>
> It seems interesting that two copies have the same byte count and that
> one of the files is empty. What's up with that?

Only files in "include" are for external use. Files under
"include/config" indicate kernel configuration. You don't need that.
That leaves include/linux/nl80211.h

Another approach. iw sources include linux/nl80211.h, and defconfig
refers to "include". That gives the same answer.

--
Regards,
Pavel Roskin

2008-04-16 14:30:14

by Larry Finger

[permalink] [raw]
Subject: Re: 2.6.25-rc9 -- bcm4306 performance is in the toilet

Miles Lane wrote:
> Hi,
>
> I have a bcm4306 card in my desktop machine. I am running a build of
> 2.6.25-rc9. I have tried fiddling with the network build options and no
> matter what I select, my network performance is absolutely terrible
> (between 0 - 24KBps). Connections take around 10-20 seconds to
> establish. I have a cable modem, and usually see nearly instantaneous
> connections and between 65-600KBps throughput. I just tried downloading
> something and am seeing this: 223B/s. Everything is intermittent and
> and often times out.
>
> I am attempting to collect a log for you to analyze. However, I am
> running into some snags.
> 1) The latest firmware, which is called for in the latest kernel code,
> won't work with my Ubuntu 8.10 kernel (2.6.24-16-386). I got the latest
> iw git code downloaded, but it won't build for me:

Which revision of the BCM4306 do you have? Which driver (b43,
b43legacy, or bcm43xx) are you running?

Based on comment 1) above, I think you are using b43, but why should I
have to guess?

Larry