Search Linux Wireless

Re: p54: unknown rssi calibration data packing

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tuesday 15 December 2009 12:10:38 Gerhard van Gorkum wrote:
> Hello,
> 
> I have 3 Dell 1450 Wireless USB adapters, and 2 of them give me issues
> with 'unknown rssi calibration data packing'.  Should I just report it
> here?
yes.

Do you know the hardware revisions of all three devices?
(Usually, this is written on the sticker at the bottom).
A lsusb -v of all three would be nice as well.

> phy2: p54 detected a LM87 firmware
> phy2: unknown rssi calibration data packing  type:(1908) len:14.
> rssical:00 00 8f 09 87 00 71 fe 78 14 81 00 7c fe        ......q.x...|.
> phy2: please report this issue.
> phy2: hwaddr 00:14:a5:95:5e:78, MAC:isl3892 RF:Xbow
Gee! No wonder the drivers complains: They put an extra 2 NULL bytes header
before the calibration data. I've no idea why, but I can give you a workaround
(see attached patch) to fix the issue (for now).

> phy3: p54 detected a LM87 firmware
> phy3: unknown rssi calibration data packing  type:(1908) len:14.
> rssical:00 00 8f 09 85 00 76 fe 78 14 81 00 7c fe        ......v.x...|.
> phy3: please report this issue.
> phy3: hwaddr 00:14:a5:d0:0a:1a, MAC:isl3892 RF:Xbow
Interesting: Same problem, but different 2.4GHz data.
maybe you got 2 different (preproduction)-revisions? 

Regards,
	Chr
diff --git a/drivers/net/wireless/p54/eeprom.c b/drivers/net/wireless/p54/eeprom.c
index 8e3818f..8497c96 100644
--- a/drivers/net/wireless/p54/eeprom.c
+++ b/drivers/net/wireless/p54/eeprom.c
@@ -417,6 +417,17 @@ static void p54_parse_rssical(struct ieee80211_hw *dev, void *data, int len,
 	int num_entries = (type == PDR_RSSI_LINEAR_APPROXIMATION) ? 1 : 2;
 	int i;
 
+	/*
+	 * Workaround for _some_ Dell 1450 Wireless USB adapters revisions
+	 *
+	 * For no apparent reason Dell decided to add an extra 2-byte NULL
+	 * array at the beginning of the rssi calibration parameter table.
+	 */
+	if (len == 14) {
+		data += 2;
+		len -= 2;
+	}
+
 	if (len != (entry_size * num_entries)) {
 		printk(KERN_ERR "%s: unknown rssi calibration data packing "
 				 " type:(%x) len:%d.\n",

[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]
  Powered by Linux