Hi John,
This is unrelated to WE-21. It just adds bitrate information
to the scan result in the Prism54 driver, like some/most other driver
do.
Rediffed and retested with 2.6.18-rc, apply with fuzz to
wireless-2.6 (ask me for a clean wireless-2.6 patch).
Have fun...
Jean
Signed-off-by: Jean Tourrilhes <[EMAIL PROTECTED]>
-----------------------------------------------------------
diff -u -p linux/drivers/net/wireless/prism54/isl_ioctl.r1.c
linux/drivers/net/wireless/prism54/isl_ioctl.c
--- linux/drivers/net/wireless/prism54/isl_ioctl.r1.c 2006-04-03
17:12:45.000000000 -0700
+++ linux/drivers/net/wireless/prism54/isl_ioctl.c 2006-04-03
17:15:35.000000000 -0700
@@ -42,6 +42,10 @@ static size_t prism54_wpa_ie_get(islpci_
static int prism54_set_wpa(struct net_device *, struct iw_request_info *,
__u32 *, char *);
+/* In 500 kbps */
+static const unsigned char scan_rate_list[] = { 2, 4, 11, 22,
+ 12, 18, 24, 36,
+ 48, 72, 96, 108 };
/**
* prism54_mib_mode_helper - MIB change mode helper function
@@ -649,6 +653,32 @@ prism54_translate_bss(struct net_device
kfree(buf);
}
}
+ /* Do the bitrates */
+ {
+ char * current_val = current_ev + IW_EV_LCP_LEN;
+ int i;
+ int mask;
+
+ iwe.cmd = SIOCGIWRATE;
+ /* Those two flags are ignored... */
+ iwe.u.bitrate.fixed = iwe.u.bitrate.disabled = 0;
+
+ /* Parse the bitmask */
+ mask = 0x1;
+ for(i = 0; i < sizeof(scan_rate_list); i++) {
+ if(bss->rates & mask) {
+ iwe.u.bitrate.value = (scan_rate_list[i] *
500000);
+ current_val = iwe_stream_add_value(current_ev,
current_val,
+ end_buf,
&iwe,
+
IW_EV_PARAM_LEN);
+ }
+ mask <<= 1;
+ }
+ /* Check if we added any event */
+ if ((current_val - current_ev) > IW_EV_LCP_LEN)
+ current_ev = current_val;
+ }
+
return current_ev;
}
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html