aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGertjan van Wingerde <gwingerde@gmail.com>2011-07-06 17:00:21 -0400
committerJohn W. Linville <linville@tuxdriver.com>2011-07-07 13:21:00 -0400
commit5f0dd296a01c8173fcc05a8b262a1168ae90bc74 (patch)
tree456e2ee4b2eb7582351fb19dd863ecafd270703f
parentacb56120d2c386d6dd104a6515c1a15dabc1ef87 (diff)
rt2x00: Implement tx_frames_pending mac80211 callback function.
Implementing this callback function will cause mac80211 refrain from going to powersave state when there are still untransmitted TX frames in the queues. This would exactly mimic the behaviour of the legacy vendor driver which also doesn't go in powersave mode if there are still TX frames that are not transmitted. This should make powersaving and rt2x00 a better couple. Signed-off-by: Gertjan van Wingerde <gwingerde@gmail.com> Acked-by: Helmut Schaa <helmut.schaa@googlemail.com> Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r--drivers/net/wireless/rt2x00/rt2400pci.c1
-rw-r--r--drivers/net/wireless/rt2x00/rt2500pci.c1
-rw-r--r--drivers/net/wireless/rt2x00/rt2500usb.c1
-rw-r--r--drivers/net/wireless/rt2x00/rt2800pci.c1
-rw-r--r--drivers/net/wireless/rt2x00/rt2800usb.c1
-rw-r--r--drivers/net/wireless/rt2x00/rt2x00.h1
-rw-r--r--drivers/net/wireless/rt2x00/rt2x00mac.c14
-rw-r--r--drivers/net/wireless/rt2x00/rt61pci.c1
-rw-r--r--drivers/net/wireless/rt2x00/rt73usb.c1
9 files changed, 22 insertions, 0 deletions
diff --git a/drivers/net/wireless/rt2x00/rt2400pci.c b/drivers/net/wireless/rt2x00/rt2400pci.c
index 937f9e8bf05..76bcc354797 100644
--- a/drivers/net/wireless/rt2x00/rt2400pci.c
+++ b/drivers/net/wireless/rt2x00/rt2400pci.c
@@ -1723,6 +1723,7 @@ static const struct ieee80211_ops rt2400pci_mac80211_ops = {
1723 .set_antenna = rt2x00mac_set_antenna, 1723 .set_antenna = rt2x00mac_set_antenna,
1724 .get_antenna = rt2x00mac_get_antenna, 1724 .get_antenna = rt2x00mac_get_antenna,
1725 .get_ringparam = rt2x00mac_get_ringparam, 1725 .get_ringparam = rt2x00mac_get_ringparam,
1726 .tx_frames_pending = rt2x00mac_tx_frames_pending,
1726}; 1727};
1727 1728
1728static const struct rt2x00lib_ops rt2400pci_rt2x00_ops = { 1729static const struct rt2x00lib_ops rt2400pci_rt2x00_ops = {
diff --git a/drivers/net/wireless/rt2x00/rt2500pci.c b/drivers/net/wireless/rt2x00/rt2500pci.c
index d27d7b8ba3b..c288d951c03 100644
--- a/drivers/net/wireless/rt2x00/rt2500pci.c
+++ b/drivers/net/wireless/rt2x00/rt2500pci.c
@@ -2016,6 +2016,7 @@ static const struct ieee80211_ops rt2500pci_mac80211_ops = {
2016 .set_antenna = rt2x00mac_set_antenna, 2016 .set_antenna = rt2x00mac_set_antenna,
2017 .get_antenna = rt2x00mac_get_antenna, 2017 .get_antenna = rt2x00mac_get_antenna,
2018 .get_ringparam = rt2x00mac_get_ringparam, 2018 .get_ringparam = rt2x00mac_get_ringparam,
2019 .tx_frames_pending = rt2x00mac_tx_frames_pending,
2019}; 2020};
2020 2021
2021static const struct rt2x00lib_ops rt2500pci_rt2x00_ops = { 2022static const struct rt2x00lib_ops rt2500pci_rt2x00_ops = {
diff --git a/drivers/net/wireless/rt2x00/rt2500usb.c b/drivers/net/wireless/rt2x00/rt2500usb.c
index 15237c27548..53c5f878f61 100644
--- a/drivers/net/wireless/rt2x00/rt2500usb.c
+++ b/drivers/net/wireless/rt2x00/rt2500usb.c
@@ -1827,6 +1827,7 @@ static const struct ieee80211_ops rt2500usb_mac80211_ops = {
1827 .set_antenna = rt2x00mac_set_antenna, 1827 .set_antenna = rt2x00mac_set_antenna,
1828 .get_antenna = rt2x00mac_get_antenna, 1828 .get_antenna = rt2x00mac_get_antenna,
1829 .get_ringparam = rt2x00mac_get_ringparam, 1829 .get_ringparam = rt2x00mac_get_ringparam,
1830 .tx_frames_pending = rt2x00mac_tx_frames_pending,
1830}; 1831};
1831 1832
1832static const struct rt2x00lib_ops rt2500usb_rt2x00_ops = { 1833static const struct rt2x00lib_ops rt2500usb_rt2x00_ops = {
diff --git a/drivers/net/wireless/rt2x00/rt2800pci.c b/drivers/net/wireless/rt2x00/rt2800pci.c
index fd994490f58..5319ed921a8 100644
--- a/drivers/net/wireless/rt2x00/rt2800pci.c
+++ b/drivers/net/wireless/rt2x00/rt2800pci.c
@@ -1031,6 +1031,7 @@ static const struct ieee80211_ops rt2800pci_mac80211_ops = {
1031 .flush = rt2x00mac_flush, 1031 .flush = rt2x00mac_flush,
1032 .get_survey = rt2800_get_survey, 1032 .get_survey = rt2800_get_survey,
1033 .get_ringparam = rt2x00mac_get_ringparam, 1033 .get_ringparam = rt2x00mac_get_ringparam,
1034 .tx_frames_pending = rt2x00mac_tx_frames_pending,
1034}; 1035};
1035 1036
1036static const struct rt2800_ops rt2800pci_rt2800_ops = { 1037static const struct rt2800_ops rt2800pci_rt2800_ops = {
diff --git a/drivers/net/wireless/rt2x00/rt2800usb.c b/drivers/net/wireless/rt2x00/rt2800usb.c
index af230583d0a..59e77797c0f 100644
--- a/drivers/net/wireless/rt2x00/rt2800usb.c
+++ b/drivers/net/wireless/rt2x00/rt2800usb.c
@@ -757,6 +757,7 @@ static const struct ieee80211_ops rt2800usb_mac80211_ops = {
757 .flush = rt2x00mac_flush, 757 .flush = rt2x00mac_flush,
758 .get_survey = rt2800_get_survey, 758 .get_survey = rt2800_get_survey,
759 .get_ringparam = rt2x00mac_get_ringparam, 759 .get_ringparam = rt2x00mac_get_ringparam,
760 .tx_frames_pending = rt2x00mac_tx_frames_pending,
760}; 761};
761 762
762static const struct rt2800_ops rt2800usb_rt2800_ops = { 763static const struct rt2800_ops rt2800usb_rt2800_ops = {
diff --git a/drivers/net/wireless/rt2x00/rt2x00.h b/drivers/net/wireless/rt2x00/rt2x00.h
index c446db69bd3..db435abbd57 100644
--- a/drivers/net/wireless/rt2x00/rt2x00.h
+++ b/drivers/net/wireless/rt2x00/rt2x00.h
@@ -1276,6 +1276,7 @@ int rt2x00mac_set_antenna(struct ieee80211_hw *hw, u32 tx_ant, u32 rx_ant);
1276int rt2x00mac_get_antenna(struct ieee80211_hw *hw, u32 *tx_ant, u32 *rx_ant); 1276int rt2x00mac_get_antenna(struct ieee80211_hw *hw, u32 *tx_ant, u32 *rx_ant);
1277void rt2x00mac_get_ringparam(struct ieee80211_hw *hw, 1277void rt2x00mac_get_ringparam(struct ieee80211_hw *hw,
1278 u32 *tx, u32 *tx_max, u32 *rx, u32 *rx_max); 1278 u32 *tx, u32 *tx_max, u32 *rx, u32 *rx_max);
1279bool rt2x00mac_tx_frames_pending(struct ieee80211_hw *hw);
1279 1280
1280/* 1281/*
1281 * Driver allocation handlers. 1282 * Driver allocation handlers.
diff --git a/drivers/net/wireless/rt2x00/rt2x00mac.c b/drivers/net/wireless/rt2x00/rt2x00mac.c
index 93bec140e59..8efab398352 100644
--- a/drivers/net/wireless/rt2x00/rt2x00mac.c
+++ b/drivers/net/wireless/rt2x00/rt2x00mac.c
@@ -818,3 +818,17 @@ void rt2x00mac_get_ringparam(struct ieee80211_hw *hw,
818 *rx_max = rt2x00dev->rx->limit; 818 *rx_max = rt2x00dev->rx->limit;
819} 819}
820EXPORT_SYMBOL_GPL(rt2x00mac_get_ringparam); 820EXPORT_SYMBOL_GPL(rt2x00mac_get_ringparam);
821
822bool rt2x00mac_tx_frames_pending(struct ieee80211_hw *hw)
823{
824 struct rt2x00_dev *rt2x00dev = hw->priv;
825 struct data_queue *queue;
826
827 tx_queue_for_each(rt2x00dev, queue) {
828 if (!rt2x00queue_empty(queue))
829 return true;
830 }
831
832 return false;
833}
834EXPORT_SYMBOL_GPL(rt2x00mac_tx_frames_pending);
diff --git a/drivers/net/wireless/rt2x00/rt61pci.c b/drivers/net/wireless/rt2x00/rt61pci.c
index 9d35ec16a3a..53110b83bf6 100644
--- a/drivers/net/wireless/rt2x00/rt61pci.c
+++ b/drivers/net/wireless/rt2x00/rt61pci.c
@@ -2982,6 +2982,7 @@ static const struct ieee80211_ops rt61pci_mac80211_ops = {
2982 .set_antenna = rt2x00mac_set_antenna, 2982 .set_antenna = rt2x00mac_set_antenna,
2983 .get_antenna = rt2x00mac_get_antenna, 2983 .get_antenna = rt2x00mac_get_antenna,
2984 .get_ringparam = rt2x00mac_get_ringparam, 2984 .get_ringparam = rt2x00mac_get_ringparam,
2985 .tx_frames_pending = rt2x00mac_tx_frames_pending,
2985}; 2986};
2986 2987
2987static const struct rt2x00lib_ops rt61pci_rt2x00_ops = { 2988static const struct rt2x00lib_ops rt61pci_rt2x00_ops = {
diff --git a/drivers/net/wireless/rt2x00/rt73usb.c b/drivers/net/wireless/rt2x00/rt73usb.c
index ad20953cbf0..6a93939f44e 100644
--- a/drivers/net/wireless/rt2x00/rt73usb.c
+++ b/drivers/net/wireless/rt2x00/rt73usb.c
@@ -2314,6 +2314,7 @@ static const struct ieee80211_ops rt73usb_mac80211_ops = {
2314 .set_antenna = rt2x00mac_set_antenna, 2314 .set_antenna = rt2x00mac_set_antenna,
2315 .get_antenna = rt2x00mac_get_antenna, 2315 .get_antenna = rt2x00mac_get_antenna,
2316 .get_ringparam = rt2x00mac_get_ringparam, 2316 .get_ringparam = rt2x00mac_get_ringparam,
2317 .tx_frames_pending = rt2x00mac_tx_frames_pending,
2317}; 2318};
2318 2319
2319static const struct rt2x00lib_ops rt73usb_rt2x00_ops = { 2320static const struct rt2x00lib_ops rt73usb_rt2x00_ops = {