This patch adds the necessary bits to the adm8211 and rt2x00 family of drivers
for them to report wireless statistics to the d80211 stack in the wireless-dev
tree. At present as discussed with Ivo van Doorn (rt2x00) and Michael Wu
(adm2311), the needed values of maxssi, noise and signal are totally bogus, with
prominent FIXME's. As the proper quantities are available, these sections will
be changed.
This patch has been compile tested only. I do not have the necessary hardware.
To preserve white space and prevent line wraps, the patch is attached.
Signed-Off-By: Larry Finger <[EMAIL PROTECTED]>
diff --git a/drivers/net/wireless/d80211/adm8211/adm8211.c
b/drivers/net/wireless/d80211/adm8211/adm8211.c
index dcabeab..6845f40 100644
--- a/drivers/net/wireless/d80211/adm8211/adm8211.c
+++ b/drivers/net/wireless/d80211/adm8211/adm8211.c
@@ -558,6 +558,16 @@ static void adm8211_interrupt_rci(struct
if (dev->flags & IFF_PROMISC)
skb_trim(skb, skb->len - FCS_LEN);
+
+/* FIXME: The following set of assignments supply additional data for wireless
statistics. The
+ necessary quantities are (1) "maxssi", the maximum value ssi (above)
can reach,
+ (2) the "noise" value in dBm, and (3) the "signal" value in dBm. The
present code
+ supplies dummy values for these three quantities. */
+
+ rx_status.maxssi = 100; /* FIXME */
+ rx_status.noise = -85; /* FIXME */
+ rx_status.signal = rx_status.ssi - rx_status.maxssi; /*
FIXME */
+
ieee80211_rx_irqsafe(dev, skb, &rx_status);
}
diff --git a/drivers/net/wireless/d80211/rt2x00/rt2400pci.c
b/drivers/net/wireless/d80211/rt2x00/rt2400pci.c
index 96bcdf4..38b655c 100644
--- a/drivers/net/wireless/d80211/rt2x00/rt2400pci.c
+++ b/drivers/net/wireless/d80211/rt2x00/rt2400pci.c
@@ -1746,6 +1746,16 @@ static void rt2400pci_rxdone(void *data)
rt2x00dev->rx_params.ssi =
rt2x00_get_field32(rxd->word2, RXD_W2_RSSI);
+/* FIXME: The following set of assignments supply additional data for wireless
statistics. The
+ necessary quantities are (1) "maxssi", the maximum value ssi (above)
can reach,
+ (2) the "noise" value in dBm, and (3) the "signal" value in dBm. The
present code
+ supplies dummy values for these three quantities. */
+
+ rt2x00dev->rx_params.maxssi = 100; /* FIXME */
+ rt2x00dev->rx_params.noise = -85; /* FIXME */
+ rt2x00dev->rx_params.signal =
+ rt2x00dev->rx_params.ssi -
rt2x00dev->rx_params.maxssi; /* FIXME */
+
__ieee80211_rx(ring->net_dev,
skb, &rt2x00dev->rx_params);
}
diff --git a/drivers/net/wireless/d80211/rt2x00/rt2500pci.c
b/drivers/net/wireless/d80211/rt2x00/rt2500pci.c
index 20095aa..40b543d 100644
--- a/drivers/net/wireless/d80211/rt2x00/rt2500pci.c
+++ b/drivers/net/wireless/d80211/rt2x00/rt2500pci.c
@@ -1890,6 +1890,16 @@ static void rt2500pci_rxdone(void *data)
rt2x00dev->rx_params.ssi =
rt2x00_get_field32(rxd->word2, RXD_W2_RSSI);
+/* FIXME: The following set of assignments supply additional data for wireless
statistics. The
+ necessary quantities are (1) "maxssi", the maximum value ssi (above)
can reach,
+ (2) the "noise" value in dBm, and (3) the "signal" value in dBm. The
present code
+ supplies dummy values for these three quantities. */
+
+ rt2x00dev->rx_params.maxssi = 100; /* FIXME */
+ rt2x00dev->rx_params.noise = -85; /* FIXME */
+ rt2x00dev->rx_params.signal =
+ rt2x00dev->rx_params.ssi -
rt2x00dev->rx_params.maxssi; /* FIXME */
+
__ieee80211_rx(ring->net_dev,
skb, &rt2x00dev->rx_params);
diff --git a/drivers/net/wireless/d80211/rt2x00/rt2500usb.c
b/drivers/net/wireless/d80211/rt2x00/rt2500usb.c
index 383f4a9..f375c52 100644
--- a/drivers/net/wireless/d80211/rt2x00/rt2500usb.c
+++ b/drivers/net/wireless/d80211/rt2x00/rt2500usb.c
@@ -1623,6 +1623,16 @@ static void rt2500usb_rxdone(void *data)
rt2x00dev->rx_params.ssi =
rt2x00_get_field32(rxd->word1, RXD_W1_RSSI);
+/* FIXME: The following set of assignments supply additional data for wireless
statistics. The
+ necessary quantities are (1) "maxssi", the maximum value ssi (above)
can reach,
+ (2) the "noise" value in dBm, and (3) the "signal" value in dBm. The
present code
+ supplies dummy values for these three quantities. */
+
+ rt2x00dev->rx_params.maxssi = 100; /* FIXME */
+ rt2x00dev->rx_params.noise = -85; /* FIXME */
+ rt2x00dev->rx_params.signal =
+ rt2x00dev->rx_params.ssi -
rt2x00dev->rx_params.maxssi; /* FIXME */
+
__ieee80211_rx(ring->net_dev,
skb, &rt2x00dev->rx_params);
diff --git a/drivers/net/wireless/d80211/rt2x00/rt61pci.c
b/drivers/net/wireless/d80211/rt2x00/rt61pci.c
index cc6789e..5d2a9ff 100644
--- a/drivers/net/wireless/d80211/rt2x00/rt61pci.c
+++ b/drivers/net/wireless/d80211/rt2x00/rt61pci.c
@@ -2337,6 +2337,16 @@ static void rt61pci_rxdone(void *data)
rt2x00dev->rx_params.ssi =
rt2x00_get_field32(rxd->word1, RXD_W1_RSSI);
+/* FIXME: The following set of assignments supply additional data for wireless
statistics. The
+ necessary quantities are (1) "maxssi", the maximum value ssi (above)
can reach,
+ (2) the "noise" value in dBm, and (3) the "signal" value in dBm. The
present code
+ supplies dummy values for these three quantities. */
+
+ rt2x00dev->rx_params.maxssi = 100; /* FIXME */
+ rt2x00dev->rx_params.noise = -85; /* FIXME */
+ rt2x00dev->rx_params.signal =
+ rt2x00dev->rx_params.ssi -
rt2x00dev->rx_params.maxssi; /* FIXME */
+
__ieee80211_rx(ring->net_dev,
skb, &rt2x00dev->rx_params);
diff --git a/drivers/net/wireless/d80211/rt2x00/rt73usb.c
b/drivers/net/wireless/d80211/rt2x00/rt73usb.c
index 682d078..5a90fb9 100644
--- a/drivers/net/wireless/d80211/rt2x00/rt73usb.c
+++ b/drivers/net/wireless/d80211/rt2x00/rt73usb.c
@@ -1907,6 +1907,16 @@ static void rt73usb_rxdone(void *data)
rt2x00dev->rx_params.ssi =
rt2x00_get_field32(rxd->word1, RXD_W1_RSSI);
+/* FIXME: The following set of assignments supply additional data for wireless
statistics. The
+ necessary quantities are (1) "maxssi", the maximum value ssi (above)
can reach,
+ (2) the "noise" value in dBm, and (3) the "signal" value in dBm. The
present code
+ supplies dummy values for these three quantities. */
+
+ rt2x00dev->rx_params.maxssi = 100; /* FIXME */
+ rt2x00dev->rx_params.noise = -85; /* FIXME */
+ rt2x00dev->rx_params.signal =
+ rt2x00dev->rx_params.ssi -
rt2x00dev->rx_params.maxssi; /* FIXME */
+
__ieee80211_rx(ring->net_dev,
skb, &rt2x00dev->rx_params);