Quoting Florian Fainelli <florian@xxxxxxxxxxx>:
Hello,
I am running Debian testing kernel 3.1.0-1-amd64, using a 079b:0062 Sagem
XG-76NA 802.11bg stick.
Upon zd1211rw interface
bringup (ifconfig wlan0 up) I get the following timeout:
[ 950.330573] zd1211rw 1-3:1.0: phy2
[ 955.108510] zd1211rw 1-3:1.0: firmware version 4725
[ 955.148532] zd1211rw 1-3:1.0: zd1211b chip 079b:0062 v4810 high 00-19-70
AL2230_RF pa0 g--NS
[snip]
[ 955.204072] zd1211rw 1-3:1.0: error ioread32(CR_REG1): -110
A second ifconfig wlan0 up brings the interface up without problems.
After a bit more debugging, the call trace is the following:
[10241.028130] zd1211rw 1-3:1.0: zd_chip_lock_phy_regs: error
ioread32(CR_REG1): -110
[10241.028140] zd1211rw 1-3:1.0: zd_switch_radio_on: failed to lock PHY regs
[10241.028148] zd1211rw 1-3:1.0: zd_op_start: failed to set radio on
The following small modification works around the issue:
diff --git a/zd_mac.c b/zd_mac.c
index cabfae1..6bfb673 100644
--- a/zd_mac.c
+++ b/zd_mac.c
@@ -306,9 +306,14 @@ int zd_op_start(struct ieee80211_hw *hw)
r = set_mc_hash(mac);
if (r)
goto disable_int;
+
+ msleep(10);
+
r = zd_chip_switch_radio_on(chip);
- if (r < 0)
+ if (r < 0) {
+ dev_err(zd_chip_dev(chip), "%s: failed to set radio on\n",
__func__);
goto disable_int;
+ }
r = zd_chip_enable_rxtx(chip);
if (r < 0)
goto disable_radio;
Is it possible that some chips require more time between a set_mc_hash and a
radio on? Or in general that consequent writes to the PHY regs
should be timed
appropriately?
Yes, it is possible. Vendor driver appears to have quite alot sleeps
spread around in RF-chip handling code. I might have seen this myself
sometimes when zd1211 device has firmware freeze and has to be
reseted. But since freeze is hard to reproduce and reset didn't fail
always, I didn't bother with it.
Can you give your "Signed-off-by" line for the patch?
-Jussi
When I googled for this timeout issue, I could see quite some
reports of other
people having this error while the chip was already operating.
Thanks
--
Florian
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html