On 11/14/2009 06:51 AM, Daniel Schmitt wrote:
> Hello group,
> 
> I managed to get AP with my bcm4306 rev 2 running using b43legacy and hostapd.
> I'm using compat-wireless-2009-11-13 with patches from openwrt trunk for my 
> b43legacy driver. I use libnl HEAD version und hostapd 0.6.9.
> 
> Now I have two issues.
> 
> 1)
> I'm using Miktorik RB/14 4miniPCI => 1PCI Adapter for driving my bcm4306 in 
> x86 
> PC. It always delivers a signal on minipci PIN 13 which powers down the 
> radio. 
> About this nothing is posted in dmesg. If I disconnect PIN13 in minipci card, 
> the radio is online and I can scan for nets and start ap.
> Letting b43legacy_is_hw_radio_enabled() always return 1 in rfkill.c did not 
> help.
> Here is my dmesg when I modprobe b43legacy and do "ifconfig wlan0 0.0.0.0 up":

I think this is the first time we have seen a device that uses b43legacy with
any radio kill hardware. I suspect that the b43legacy_is_hw_radio_enabled() is
not looking at the correct bit. The hardware will obey the value on PIN13, no
matter what the driver does. That is why changing ...enabled() did no good.

Please build with the attached patch, and run 2 times, once with PIN13 connected
and once with PIN13 disconnected. That should let us see where the state of that
pin shows up.

> I'm only interested in 802.11b so I allowed only bitrates 1,2,5.5 and 11 in 
> hostapd.conf. By using a WLAN client and doing flood pings with 4096 bytes 
> (ping 
> -s 4095 -c 1000 -f), I get several PHY transmission errors

Are these related to large packets? If you reduce the size to 1000, does it
still err?

Larry
Index: wireless-testing/drivers/net/wireless/b43legacy/rfkill.c
===================================================================
--- wireless-testing.orig/drivers/net/wireless/b43legacy/rfkill.c
+++ wireless-testing/drivers/net/wireless/b43legacy/rfkill.c
@@ -25,15 +25,34 @@
 #include "radio.h"
 #include "b43legacy.h"
 
+int count = 0;
 
 /* Returns TRUE, if the radio is enabled in hardware. */
 bool b43legacy_is_hw_radio_enabled(struct b43legacy_wldev *dev)
 {
        if (dev->phy.rev >= 3) {
+               if (count++ < 10)
+                       printk(KERN_INFO "b43legacy: phy rev >= 3: "
+                              "RADIO_ENAB_HI 0x%X\n",
+                              b43legacy_read32(dev,
+                              B43legacy_MMIO_RADIO_HWENABLED_HI));
+                       printk(KERN_INFO "b43legacy: "
+                              "RADIO_ENAB_LO 0x%X\n",
+                              b43legacy_read16(dev,
+                              B43legacy_MMIO_RADIO_HWENABLED_LO));
                if (!(b43legacy_read32(dev, B43legacy_MMIO_RADIO_HWENABLED_HI)
                      & B43legacy_MMIO_RADIO_HWENABLED_HI_MASK))
                        return 1;
        } else {
+               if (count++ < 10)
+                       printk(KERN_INFO "b43legacy: phy rev < 3: "
+                              "RADIO_ENAB_LO 0x%X\n",
+                              b43legacy_read16(dev,
+                              B43legacy_MMIO_RADIO_HWENABLED_LO));
+                       printk(KERN_INFO "b43legacy: "
+                              "RADIO_ENAB_HI 0x%X\n",
+                              b43legacy_read32(dev,
+                              B43legacy_MMIO_RADIO_HWENABLED_HI));
                if (b43legacy_read16(dev, B43legacy_MMIO_RADIO_HWENABLED_LO)
                    & B43legacy_MMIO_RADIO_HWENABLED_LO_MASK)
                        return 1;
_______________________________________________
Bcm43xx-dev mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/bcm43xx-dev

Reply via email to