diff options
Diffstat (limited to 'drivers/net/wireless/rt2x00/rt2400pci.c')
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2400pci.c | 30 |
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 | ||
935 | static void rt2400pci_disable_radio(struct rt2x00_dev *rt2x00dev) | 935 | static 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, ®); | ||
950 | rt2x00_set_field32(®, TXCSR0_ABORT, 1); | ||
951 | rt2x00pci_register_write(rt2x00dev, TXCSR0, reg); | ||
952 | } | 941 | } |
953 | 942 | ||
954 | static int rt2400pci_set_state(struct rt2x00_dev *rt2x00dev, | 943 | static 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 | ||
1137 | static 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, ®); | ||
1146 | rt2x00_set_field32(®, 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, |