diff options
author | Gertjan van Wingerde <gwingerde@gmail.com> | 2010-03-30 17:50:26 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2010-04-06 16:55:06 -0400 |
commit | 4d66edc8b6c0622ed6df74709de65f70d1ca222f (patch) | |
tree | 207e4e4f4576d4ca63cf5cb0de727eb78c6e5d68 /drivers/net/wireless/rt2x00 | |
parent | 9e18944601856c04c07dc569b87e9b98e8a9da5f (diff) |
rt2x00: Add wakeup interrupt handler to rt2800pci.
This is needed to wake up the device automatically for receiving beacons,
and is required for proper powersave handling.
Signed-off-by: Gertjan van Wingerde <gwingerde@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/rt2x00')
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2800pci.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/drivers/net/wireless/rt2x00/rt2800pci.c b/drivers/net/wireless/rt2x00/rt2800pci.c index 1df2d44a6158..a2b37d38d400 100644 --- a/drivers/net/wireless/rt2x00/rt2800pci.c +++ b/drivers/net/wireless/rt2x00/rt2800pci.c | |||
@@ -1015,6 +1015,14 @@ static void rt2800pci_txdone(struct rt2x00_dev *rt2x00dev) | |||
1015 | } | 1015 | } |
1016 | } | 1016 | } |
1017 | 1017 | ||
1018 | static void rt2800pci_wakeup(struct rt2x00_dev *rt2x00dev) | ||
1019 | { | ||
1020 | struct ieee80211_conf conf = { .flags = 0 }; | ||
1021 | struct rt2x00lib_conf libconf = { .conf = &conf }; | ||
1022 | |||
1023 | rt2800_config(rt2x00dev, &libconf, IEEE80211_CONF_CHANGE_PS); | ||
1024 | } | ||
1025 | |||
1018 | static irqreturn_t rt2800pci_interrupt(int irq, void *dev_instance) | 1026 | static irqreturn_t rt2800pci_interrupt(int irq, void *dev_instance) |
1019 | { | 1027 | { |
1020 | struct rt2x00_dev *rt2x00dev = dev_instance; | 1028 | struct rt2x00_dev *rt2x00dev = dev_instance; |
@@ -1039,6 +1047,9 @@ static irqreturn_t rt2800pci_interrupt(int irq, void *dev_instance) | |||
1039 | if (rt2x00_get_field32(reg, INT_SOURCE_CSR_TX_FIFO_STATUS)) | 1047 | if (rt2x00_get_field32(reg, INT_SOURCE_CSR_TX_FIFO_STATUS)) |
1040 | rt2800pci_txdone(rt2x00dev); | 1048 | rt2800pci_txdone(rt2x00dev); |
1041 | 1049 | ||
1050 | if (rt2x00_get_field32(reg, INT_SOURCE_CSR_AUTO_WAKEUP)) | ||
1051 | rt2800pci_wakeup(rt2x00dev); | ||
1052 | |||
1042 | return IRQ_HANDLED; | 1053 | return IRQ_HANDLED; |
1043 | } | 1054 | } |
1044 | 1055 | ||