aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/rt2x00/rt2400pci.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/rt2x00/rt2400pci.c')
-rw-r--r--drivers/net/wireless/rt2x00/rt2400pci.c30
1 files changed, 17 insertions, 13 deletions
diff --git a/drivers/net/wireless/rt2x00/rt2400pci.c b/drivers/net/wireless/rt2x00/rt2400pci.c
index 4a2c0b971ca8..b0848259b455 100644
--- a/drivers/net/wireless/rt2x00/rt2400pci.c
+++ b/drivers/net/wireless/rt2x00/rt2400pci.c
@@ -934,21 +934,10 @@ static int rt2400pci_enable_radio(struct rt2x00_dev *rt2x00dev)
934 934
935static void rt2400pci_disable_radio(struct rt2x00_dev *rt2x00dev) 935static void rt2400pci_disable_radio(struct rt2x00_dev *rt2x00dev)
936{ 936{
937 u32 reg;
938
939 rt2x00pci_register_write(rt2x00dev, PWRCSR0, 0);
940
941 /* 937 /*
942 * Disable synchronisation. 938 * Disable power
943 */ 939 */
944 rt2x00pci_register_write(rt2x00dev, CSR14, 0); 940 rt2x00pci_register_write(rt2x00dev, PWRCSR0, 0);
945
946 /*
947 * Cancel RX and TX.
948 */
949 rt2x00pci_register_read(rt2x00dev, TXCSR0, &reg);
950 rt2x00_set_field32(&reg, TXCSR0_ABORT, 1);
951 rt2x00pci_register_write(rt2x00dev, TXCSR0, reg);
952} 941}
953 942
954static int rt2400pci_set_state(struct rt2x00_dev *rt2x00dev, 943static int rt2400pci_set_state(struct rt2x00_dev *rt2x00dev,
@@ -1145,6 +1134,20 @@ static void rt2400pci_kick_tx_queue(struct rt2x00_dev *rt2x00dev,
1145 rt2x00pci_register_write(rt2x00dev, TXCSR0, reg); 1134 rt2x00pci_register_write(rt2x00dev, TXCSR0, reg);
1146} 1135}
1147 1136
1137static void rt2400pci_kill_tx_queue(struct rt2x00_dev *rt2x00dev,
1138 const enum data_queue_qid qid)
1139{
1140 u32 reg;
1141
1142 if (qid == QID_BEACON) {
1143 rt2x00pci_register_write(rt2x00dev, CSR14, 0);
1144 } else {
1145 rt2x00pci_register_read(rt2x00dev, TXCSR0, &reg);
1146 rt2x00_set_field32(&reg, TXCSR0_ABORT, 1);
1147 rt2x00pci_register_write(rt2x00dev, TXCSR0, reg);
1148 }
1149}
1150
1148/* 1151/*
1149 * RX control handlers 1152 * RX control handlers
1150 */ 1153 */
@@ -1606,6 +1609,7 @@ static const struct rt2x00lib_ops rt2400pci_rt2x00_ops = {
1606 .write_tx_data = rt2x00pci_write_tx_data, 1609 .write_tx_data = rt2x00pci_write_tx_data,
1607 .write_beacon = rt2400pci_write_beacon, 1610 .write_beacon = rt2400pci_write_beacon,
1608 .kick_tx_queue = rt2400pci_kick_tx_queue, 1611 .kick_tx_queue = rt2400pci_kick_tx_queue,
1612 .kill_tx_queue = rt2400pci_kill_tx_queue,
1609 .fill_rxdone = rt2400pci_fill_rxdone, 1613 .fill_rxdone = rt2400pci_fill_rxdone,
1610 .config_filter = rt2400pci_config_filter, 1614 .config_filter = rt2400pci_config_filter,
1611 .config_intf = rt2400pci_config_intf, 1615 .config_intf = rt2400pci_config_intf,