aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/rt2x00
diff options
context:
space:
mode:
authorBruno Randolf <br1@einfach.org>2008-05-08 13:15:40 -0400
committerJohn W. Linville <linville@tuxdriver.com>2008-05-14 16:29:49 -0400
commit566bfe5a8bcde13188a356f77666f8115813cf31 (patch)
tree785412c505e9efbd0fac477d71c8ca6945ffce04 /drivers/net/wireless/rt2x00
parentfac371d9f09f461dfe9fbbceb2a38e2e12164dda (diff)
mac80211: use hardware flags for signal/noise units
trying to clean up the signal/noise code. the previous code in mac80211 had confusing names for the related variables, did not have much definition of what units of signal and noise were provided and used implicit mechanisms from the wireless extensions. this patch introduces hardware capability flags to let the hardware specify clearly if it can provide signal and noise level values and which units it can provide. this also anticipates possible new units like RCPI in the future. for signal: IEEE80211_HW_SIGNAL_UNSPEC - unspecified, unknown, hw specific IEEE80211_HW_SIGNAL_DB - dB difference to unspecified reference point IEEE80211_HW_SIGNAL_DBM - dBm, difference to 1mW for noise we currently only have dBm: IEEE80211_HW_NOISE_DBM - dBm, difference to 1mW if IEEE80211_HW_SIGNAL_UNSPEC or IEEE80211_HW_SIGNAL_DB is used the driver has to provide the maximum value (max_signal) it reports in order for applications to make sense of the signal values. i tried my best to find out for each driver what it can provide and update it but i'm not sure (?) for some of them and used the more conservative guess in doubt. this can be fixed easily after this patch has been merged by changing the hardware flags of the driver. DRIVER SIGNAL MAX NOISE QUAL ----------------------------------------------------------------- adm8211 unspec(?) 100 n/a missing at76_usb unspec(?) (?) unused missing ath5k dBm dBm percent rssi b43legacy dBm dBm percent jssi(?) b43 dBm dBm percent jssi(?) iwl-3945 dBm dBm percent snr+more iwl-4965 dBm dBm percent snr+more p54 unspec 127 n/a missing rt2x00 dBm n/a percent rssi+tx/rx frame success rt2400 dBm n/a rt2500pci dBm n/a rt2500usb dBm n/a rt61pci dBm n/a rt73usb dBm n/a rtl8180 unspec(?) 65 n/a (?) rtl8187 unspec(?) 65 (?) noise(?) zd1211 dB(?) 100 n/a percent drivers/net/wireless/ath5k/base.c: Changes-licensed-under: 3-Clause-BSD Signed-off-by: Bruno Randolf <br1@einfach.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/rt2x00')
-rw-r--r--drivers/net/wireless/rt2x00/rt2400pci.c5
-rw-r--r--drivers/net/wireless/rt2x00/rt2500pci.c6
-rw-r--r--drivers/net/wireless/rt2x00/rt2500usb.c6
-rw-r--r--drivers/net/wireless/rt2x00/rt2x00dev.c4
-rw-r--r--drivers/net/wireless/rt2x00/rt61pci.c5
-rw-r--r--drivers/net/wireless/rt2x00/rt73usb.c5
6 files changed, 14 insertions, 17 deletions
diff --git a/drivers/net/wireless/rt2x00/rt2400pci.c b/drivers/net/wireless/rt2x00/rt2400pci.c
index 247fbbfb0f2b..afa565c63621 100644
--- a/drivers/net/wireless/rt2x00/rt2400pci.c
+++ b/drivers/net/wireless/rt2x00/rt2400pci.c
@@ -1361,10 +1361,9 @@ static void rt2400pci_probe_hw_mode(struct rt2x00_dev *rt2x00dev)
1361 /* 1361 /*
1362 * Initialize all hw fields. 1362 * Initialize all hw fields.
1363 */ 1363 */
1364 rt2x00dev->hw->flags = IEEE80211_HW_HOST_BROADCAST_PS_BUFFERING; 1364 rt2x00dev->hw->flags = IEEE80211_HW_HOST_BROADCAST_PS_BUFFERING |
1365 IEEE80211_HW_SIGNAL_DBM;
1365 rt2x00dev->hw->extra_tx_headroom = 0; 1366 rt2x00dev->hw->extra_tx_headroom = 0;
1366 rt2x00dev->hw->max_signal = MAX_SIGNAL;
1367 rt2x00dev->hw->max_rssi = MAX_RX_SSI;
1368 rt2x00dev->hw->queues = 2; 1367 rt2x00dev->hw->queues = 2;
1369 1368
1370 SET_IEEE80211_DEV(rt2x00dev->hw, &rt2x00dev_pci(rt2x00dev)->dev); 1369 SET_IEEE80211_DEV(rt2x00dev->hw, &rt2x00dev_pci(rt2x00dev)->dev);
diff --git a/drivers/net/wireless/rt2x00/rt2500pci.c b/drivers/net/wireless/rt2x00/rt2500pci.c
index 0d53c75d55dd..c06f1b5e5887 100644
--- a/drivers/net/wireless/rt2x00/rt2500pci.c
+++ b/drivers/net/wireless/rt2x00/rt2500pci.c
@@ -1680,10 +1680,10 @@ static void rt2500pci_probe_hw_mode(struct rt2x00_dev *rt2x00dev)
1680 /* 1680 /*
1681 * Initialize all hw fields. 1681 * Initialize all hw fields.
1682 */ 1682 */
1683 rt2x00dev->hw->flags = IEEE80211_HW_HOST_BROADCAST_PS_BUFFERING; 1683 rt2x00dev->hw->flags = IEEE80211_HW_HOST_BROADCAST_PS_BUFFERING |
1684 IEEE80211_HW_SIGNAL_DBM;
1685
1684 rt2x00dev->hw->extra_tx_headroom = 0; 1686 rt2x00dev->hw->extra_tx_headroom = 0;
1685 rt2x00dev->hw->max_signal = MAX_SIGNAL;
1686 rt2x00dev->hw->max_rssi = MAX_RX_SSI;
1687 rt2x00dev->hw->queues = 2; 1687 rt2x00dev->hw->queues = 2;
1688 1688
1689 SET_IEEE80211_DEV(rt2x00dev->hw, &rt2x00dev_pci(rt2x00dev)->dev); 1689 SET_IEEE80211_DEV(rt2x00dev->hw, &rt2x00dev_pci(rt2x00dev)->dev);
diff --git a/drivers/net/wireless/rt2x00/rt2500usb.c b/drivers/net/wireless/rt2x00/rt2500usb.c
index 80b34d47114a..88bafdf8f0fa 100644
--- a/drivers/net/wireless/rt2x00/rt2500usb.c
+++ b/drivers/net/wireless/rt2x00/rt2500usb.c
@@ -1587,10 +1587,10 @@ static void rt2500usb_probe_hw_mode(struct rt2x00_dev *rt2x00dev)
1587 rt2x00dev->hw->flags = 1587 rt2x00dev->hw->flags =
1588 IEEE80211_HW_HOST_GEN_BEACON_TEMPLATE | 1588 IEEE80211_HW_HOST_GEN_BEACON_TEMPLATE |
1589 IEEE80211_HW_RX_INCLUDES_FCS | 1589 IEEE80211_HW_RX_INCLUDES_FCS |
1590 IEEE80211_HW_HOST_BROADCAST_PS_BUFFERING; 1590 IEEE80211_HW_HOST_BROADCAST_PS_BUFFERING |
1591 IEEE80211_HW_SIGNAL_DBM;
1592
1591 rt2x00dev->hw->extra_tx_headroom = TXD_DESC_SIZE; 1593 rt2x00dev->hw->extra_tx_headroom = TXD_DESC_SIZE;
1592 rt2x00dev->hw->max_signal = MAX_SIGNAL;
1593 rt2x00dev->hw->max_rssi = MAX_RX_SSI;
1594 rt2x00dev->hw->queues = 2; 1594 rt2x00dev->hw->queues = 2;
1595 1595
1596 SET_IEEE80211_DEV(rt2x00dev->hw, &rt2x00dev_usb(rt2x00dev)->dev); 1596 SET_IEEE80211_DEV(rt2x00dev->hw, &rt2x00dev_usb(rt2x00dev)->dev);
diff --git a/drivers/net/wireless/rt2x00/rt2x00dev.c b/drivers/net/wireless/rt2x00/rt2x00dev.c
index 9929b15e28ba..f51a50b31e16 100644
--- a/drivers/net/wireless/rt2x00/rt2x00dev.c
+++ b/drivers/net/wireless/rt2x00/rt2x00dev.c
@@ -600,9 +600,9 @@ void rt2x00lib_rxdone(struct queue_entry *entry,
600 rt2x00dev->link.qual.rx_success++; 600 rt2x00dev->link.qual.rx_success++;
601 601
602 rx_status->rate_idx = idx; 602 rx_status->rate_idx = idx;
603 rx_status->signal = 603 rx_status->qual =
604 rt2x00lib_calculate_link_signal(rt2x00dev, rxdesc->rssi); 604 rt2x00lib_calculate_link_signal(rt2x00dev, rxdesc->rssi);
605 rx_status->ssi = rxdesc->rssi; 605 rx_status->signal = rxdesc->rssi;
606 rx_status->flag = rxdesc->flags; 606 rx_status->flag = rxdesc->flags;
607 rx_status->antenna = rt2x00dev->link.ant.active.rx; 607 rx_status->antenna = rt2x00dev->link.ant.active.rx;
608 608
diff --git a/drivers/net/wireless/rt2x00/rt61pci.c b/drivers/net/wireless/rt2x00/rt61pci.c
index 98af4d26583d..eaf23b908772 100644
--- a/drivers/net/wireless/rt2x00/rt61pci.c
+++ b/drivers/net/wireless/rt2x00/rt61pci.c
@@ -2245,10 +2245,9 @@ static void rt61pci_probe_hw_mode(struct rt2x00_dev *rt2x00dev)
2245 */ 2245 */
2246 rt2x00dev->hw->flags = 2246 rt2x00dev->hw->flags =
2247 IEEE80211_HW_HOST_GEN_BEACON_TEMPLATE | 2247 IEEE80211_HW_HOST_GEN_BEACON_TEMPLATE |
2248 IEEE80211_HW_HOST_BROADCAST_PS_BUFFERING; 2248 IEEE80211_HW_HOST_BROADCAST_PS_BUFFERING |
2249 IEEE80211_HW_SIGNAL_DBM;
2249 rt2x00dev->hw->extra_tx_headroom = 0; 2250 rt2x00dev->hw->extra_tx_headroom = 0;
2250 rt2x00dev->hw->max_signal = MAX_SIGNAL;
2251 rt2x00dev->hw->max_rssi = MAX_RX_SSI;
2252 rt2x00dev->hw->queues = 4; 2251 rt2x00dev->hw->queues = 4;
2253 2252
2254 SET_IEEE80211_DEV(rt2x00dev->hw, &rt2x00dev_pci(rt2x00dev)->dev); 2253 SET_IEEE80211_DEV(rt2x00dev->hw, &rt2x00dev_pci(rt2x00dev)->dev);
diff --git a/drivers/net/wireless/rt2x00/rt73usb.c b/drivers/net/wireless/rt2x00/rt73usb.c
index 351d95c4f50d..51c5575ed02f 100644
--- a/drivers/net/wireless/rt2x00/rt73usb.c
+++ b/drivers/net/wireless/rt2x00/rt73usb.c
@@ -1830,10 +1830,9 @@ static void rt73usb_probe_hw_mode(struct rt2x00_dev *rt2x00dev)
1830 */ 1830 */
1831 rt2x00dev->hw->flags = 1831 rt2x00dev->hw->flags =
1832 IEEE80211_HW_HOST_GEN_BEACON_TEMPLATE | 1832 IEEE80211_HW_HOST_GEN_BEACON_TEMPLATE |
1833 IEEE80211_HW_HOST_BROADCAST_PS_BUFFERING; 1833 IEEE80211_HW_HOST_BROADCAST_PS_BUFFERING |
1834 IEEE80211_HW_SIGNAL_DBM;
1834 rt2x00dev->hw->extra_tx_headroom = TXD_DESC_SIZE; 1835 rt2x00dev->hw->extra_tx_headroom = TXD_DESC_SIZE;
1835 rt2x00dev->hw->max_signal = MAX_SIGNAL;
1836 rt2x00dev->hw->max_rssi = MAX_RX_SSI;
1837 rt2x00dev->hw->queues = 4; 1836 rt2x00dev->hw->queues = 4;
1838 1837
1839 SET_IEEE80211_DEV(rt2x00dev->hw, &rt2x00dev_usb(rt2x00dev)->dev); 1838 SET_IEEE80211_DEV(rt2x00dev->hw, &rt2x00dev_usb(rt2x00dev)->dev);