Jim McCloskey wrote:
> I've been trying the new combined patch (combined_2.6.20.2.patch)
> posted by Larry Finger on Sun March 11.
> 
> This is a 4318 card:
> 
> ----------------------------------------------------------------------
> kernel: bcm43xx: Chip ID 0x4318, rev 0x2
> kernel: bcm43xx: Number of cores: 4
> kernel: bcm43xx: Core 0: ID 0x800, rev 0xd, vendor 0x4243
> kernel: bcm43xx: Core 1: ID 0x812, rev 0x9, vendor 0x4243
> kernel: bcm43xx: Core 2: ID 0x804, rev 0xc, vendor 0x4243
> kernel: bcm43xx: Core 3: ID 0x80d, rev 0x7, vendor 0x4243
> kernel: bcm43xx: PHY connected
> kernel: bcm43xx: Detected PHY: Analog: 3, Type 2, Revision 7
> kernel: bcm43xx: Detected Radio: ID: 8205017f (Manuf: 17f Ver: 2050 Rev: 8)
> ----------------------------------------------------------------------
> 
> Assocation seems to be about as reliable as before (best when in the
> same room as the access point, which is a LinkSys WRT54GL).
> 
> iwconfig reveals:
> 
> wlang     IEEE 802.11b/g  ESSID:"branci40"  Nickname:"Broadcom 4318"
>           Mode:Managed  Frequency=2.437 GHz  Access Point: 00:14:BF:BA:77:03  
>  
>           Bit Rate=54 Mb/s   Tx-Power=19 dBm   
>           RTS thr:off   Fragment thr:off
>           Encryption key:off
>           Link Quality=68/100  Signal level=-46 dBm  Noise level=-73 dBm
>           Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
>           Tx excessive retries:0  Invalid misc:0   Missed beacon:0
> 
> Using iperf on the internal network (iperf -c 192.168.1.100 -r), I get
> these speeds (averaged over 4 tries for each rate):
> 
>            6M: 16.4 Mbits/sec
>            9M: 16.9 Mbits/sec
>          (11M: 13.8 Mbits/sec)
>           12M: 17.5 Mbits/sec
>           18M: 17.6 Mbits/sec
>           24M: 18.0 Mbits/sec
>           36M: 18.2 Mbits/sec
>           48M: 18.2 Mbits/sec
>           54M: 18.2 Mbits/sec

You appear to have averaged transmit and receive speeds. It would be better to 
report them
separately, as the AP will always send at the highest rate it can.

The (not-yet completed) bash script that I use is attached. The main bug in 
this version is that it
sometimes gets a receive rate in the transmit data and vice-versa. I also want 
to add some
statistics such as max/min, mean and std. deviation for each rate.
> 
> By comparison, an Orinoco Gold card in exactly the same encironment:
> 
> wlan1     IEEE 802.11b  ESSID:"branci40"  Nickname:"HERMES I"
>           Mode:Managed  Frequency:2.437 GHz  Access Point: 00:14:BF:BA:77:03  
>  
>           Bit Rate:11 Mb/s   Sensitivity:1/3  
>           Retry limit:4   RTS thr:off   Fragment thr:off
>           Encryption key:off
>           Power Management:off
>           Link Quality=58/92  Signal level=-27 dBm  Noise level=-85 dBm
>           Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:16
>           Tx excessive retries:3  Invalid misc:0   Missed beacon:0
> 
> yields speeds in the range between 4.9 and 5.07 MBits/sec under iperf.
> 
> Using wget to get a large file from a distant host, I get download
> speeds in the range of 590--615 KB/sec (i.e. about 1min 30secs to
> download the bzipped tarball of the kernel source).

If you use a wired connection, what is your rate? How close is wireless to 
saturating your broadband
connection?

There is one patch that may help that is not in 2.6.21-rc4 - it does help my 
system at 48 Mbs. It is
also attached.

> Thanks once more,

You are welcome.

Larry

#!/bin/bash
# Shell script to test network performance of a wireless device using iperf 
with a server on the LAN
# Version of 03/18/07:     Larry Finger
#
# This script has three parameters - the name of the interface, the name of the 
iperf server, and
# an optional time per test that defaults to 10 seconds. The wireless utility 
'iwconfig' is used
# to change the wireless rate, therefore this script must be run as root.
#
# Sample: ./perf_test eth1 192.168.1.50 2
#
Usage() {
        echo
        echo "Usage: perf_test <interface> <server address>" [time]
        echo
        exit
}
#====================================================================================
#----------------------------------- main 
-------------------------------------------
#====================================================================================
#
# Check arguments
#
if [ "$1" == "" ] ; then
        Usage
fi
if [ "$2" == "" ] ; then
        Usage
fi
time="$3"
if [ "$time" == "" ] ; then
        time="10"
fi
# 
for i in 6 9 11 18 24 36 48 ; do
    iwconfig $1 rate "$i"M
    echo
    echo "iIwconfig rate set to $i Mbs"
    for j in 0 1 2 3 4; do
        iperf -f m -c $2 -r -t $time > perf.tmp 2>&1
        Trans['j']=`grep Mbits perf.tmp | grep 5\] | awk '{i=split($0,a) ; 
print a[i-1]}'`
        Recv['j']=`grep Mbits perf.tmp | grep 4\] | awk '{i=split($0,a) ; print 
a[i-1]}'`
    done
    echo -n "Transmit rate: "
    for j in 0 1 2 3 4; do
        echo -n "${Trans['j']} "
    done
    echo  " Mbits/sec"
    echo -n " Receive rate: "
    for j in 0 1 2 3 4; do
        echo -n "${Recv['j']} "
    done
    echo " Mbits/sec"
    unset Trans
    unset Recv
done
iwconfig $1 rate 24M
echo
echo "Iwconfig rate reset to 24 Mbs"
exit
There are several places where the PHY version and revision were interchanged.
These are changed in the specifications and now use the new name (analog) for 
version.

Signed-off-by: Larry Finger <[EMAIL PROTECTED]>
---

Index: wireless-2.6/drivers/net/wireless/bcm43xx/bcm43xx_radio.c
===================================================================
--- wireless-2.6.orig/drivers/net/wireless/bcm43xx/bcm43xx_radio.c
+++ wireless-2.6/drivers/net/wireless/bcm43xx/bcm43xx_radio.c
@@ -458,7 +458,7 @@ static void bcm43xx_calc_nrssi_offset(st
                bcm43xx_phy_write(bcm, 0x005A, 0x0480);
                bcm43xx_phy_write(bcm, 0x0059, 0x0810);
                bcm43xx_phy_write(bcm, 0x0058, 0x000D);
-               if (phy->rev == 0) {
+               if (phy->analog == 0) {
                        bcm43xx_phy_write(bcm, 0x0003, 0x0122);
                } else {
                        bcm43xx_phy_write(bcm, 0x000A,
@@ -570,9 +570,9 @@ void bcm43xx_calc_nrssi_slope(struct bcm
                nrssi0 = (s16)bcm43xx_phy_read(bcm, 0x0027);
                bcm43xx_radio_write16(bcm, 0x007A,
                                      bcm43xx_radio_read16(bcm, 0x007A) & 
0x007F);
-               if (phy->rev >= 2) {
+               if (phy->analog >= 2) {
                        bcm43xx_write16(bcm, 0x03E6, 0x0040);
-               } else if (phy->rev == 0) {
+               } else if (phy->analog == 0) {
                        bcm43xx_write16(bcm, 0x03E6, 0x0122);
                } else {
                        bcm43xx_write16(bcm, BCM43xx_MMIO_CHANNEL_EXT,
@@ -596,7 +596,7 @@ void bcm43xx_calc_nrssi_slope(struct bcm
                bcm43xx_phy_write(bcm, 0x0015, backup[5]);
                bcm43xx_phy_write(bcm, 0x002A, backup[6]);
                bcm43xx_synth_pu_workaround(bcm, radio->channel);
-               if (phy->rev != 0)
+               if (phy->analog != 0)
                        bcm43xx_write16(bcm, 0x03F4, backup[13]);
 
                bcm43xx_phy_write(bcm, 0x0020, backup[7]);
@@ -692,7 +692,7 @@ void bcm43xx_calc_nrssi_slope(struct bcm
 
                bcm43xx_radio_write16(bcm, 0x007A,
                                      bcm43xx_radio_read16(bcm, 0x007A) & 
0x007F);
-               if (phy->rev >= 2) {
+               if (phy->analog >= 2) {
                        bcm43xx_phy_write(bcm, 0x0003,
                                          (bcm43xx_phy_read(bcm, 0x0003)
                                           & 0xFF9F) | 0x0040);

---

_______________________________________________
Bcm43xx-dev mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/bcm43xx-dev

Reply via email to