On 01/29/2010 03:05 AM, Orivej Desh wrote:
> Not sure if this helps, but on my system (Network controller [0280]: Broadcom 
> Corporation BCM4311 802.11b/g WLAN [14e4:4311] (rev 01); b43-phy0: Broadcom 
> 4311 
> WLAN found (core revision 10)) network controller no longer operates after 
> disconnect. That is, "iwlist wlan0 scan" finds nothing.
> 
> My other details are similar to Yuval's one — I've got the latest firmware, 
> the 
> problem appeared in 2.6.32, I've tested latest git without luck. Can't help 
> too 
> much, though, because there is no unprotected network over here (from which 
> laptop disconnects immediately), and on the protected one on-line time is too 
> large: at this session the first disconnect occured after 35 hours, the 
> second - 
> after half an hour after driver reset with ifconfig wlan0 down/up, the third 
> - 
> hour and an half after reset; this is not normal because I had no disconnects 
> before 2.6.32.

I installed my BCM4311/2 device to try to duplicate your results from above. I
found a problem with performance and have posted a patch for that. I set my AP,
which is a Linksys WRT54GL V1.1 running openWRT Kamikaze r16206 firmware. I set
my network to be unencrypted as  you said that made the failure to occur more
quickly. As I write this, my device has been running for 32 hours with no
dropouts. I cannot duplicate your results.

My system is wireless-testing 2.6.33-rc5 with the two patches below. Please add
them to your system and try again.

Larry

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


Index: wireless-testing/drivers/net/wireless/b43/main.c
===================================================================
--- wireless-testing.orig/drivers/net/wireless/b43/main.c
+++ wireless-testing/drivers/net/wireless/b43/main.c
@@ -637,10 +637,17 @@ static void b43_upload_card_macaddress(s
 static void b43_set_slot_time(struct b43_wldev *dev, u16 slot_time)
 {
        /* slot_time is in usec. */
-       if (dev->phy.type != B43_PHYTYPE_G)
+       /* This test used to exit for all but a G PHY. */
+       if (b43_current_band(dev->wl) == IEEE80211_BAND_5GHZ)
                return;
-       b43_write16(dev, 0x684, 510 + slot_time);
-       b43_shm_write16(dev, B43_SHM_SHARED, 0x0010, slot_time);
+       b43_write16(dev, B43_MMIO_IFSSLOT, 510 + slot_time);
+       /* Shared memory location 0x0010 is the slot time and should be
+        * set to slot_time; however, this register is initially 0 and changing
+        * the value adversely affects the transmit rate for BCM4311
+        * devices. Until this behavior is unterstood, delete this step
+        *
+        * b43_shm_write16(dev, B43_SHM_SHARED, 0x0010, slot_time);
+        */
 }

 static void b43_short_slot_timing_enable(struct b43_wldev *dev)
Index: wireless-testing/drivers/net/wireless/b43/b43.h
===================================================================
--- wireless-testing.orig/drivers/net/wireless/b43/b43.h
+++ wireless-testing/drivers/net/wireless/b43/b43.h
@@ -115,6 +115,7 @@
 #define B43_MMIO_TSF_2                 0x636   /* core rev < 3 only */
 #define B43_MMIO_TSF_3                 0x638   /* core rev < 3 only */
 #define B43_MMIO_RNG                   0x65A
+#define B43_MMIO_IFSSLOT               0x684   /* Interframe slot time */
 #define B43_MMIO_IFSCTL                        0x688 /* Interframe space 
control */
 #define  B43_MMIO_IFSCTL_USE_EDCF      0x0004
 #define B43_MMIO_POWERUP_DELAY         0x6A8

Index: wireless-testing/drivers/net/wireless/b43/main.c
===================================================================
--- wireless-testing.orig/drivers/net/wireless/b43/main.c
+++ wireless-testing/drivers/net/wireless/b43/main.c
@@ -3980,6 +3980,7 @@ static int b43_wireless_core_start(struc
        }

        /* We are ready to run. */
+       ieee80211_wake_queues(dev->wl->hw);
        b43_set_status(dev, B43_STAT_STARTED);

        /* Start data flow (TX/RX). */

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

Reply via email to