aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/rt2x00
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/rt2x00')
-rw-r--r--drivers/net/wireless/rt2x00/rt2400pci.c6
-rw-r--r--drivers/net/wireless/rt2x00/rt2500pci.c6
-rw-r--r--drivers/net/wireless/rt2x00/rt2500usb.c12
-rw-r--r--drivers/net/wireless/rt2x00/rt2800pci.c6
-rw-r--r--drivers/net/wireless/rt2x00/rt2800usb.c12
-rw-r--r--drivers/net/wireless/rt2x00/rt61pci.c6
-rw-r--r--drivers/net/wireless/rt2x00/rt73usb.c12
7 files changed, 50 insertions, 10 deletions
diff --git a/drivers/net/wireless/rt2x00/rt2400pci.c b/drivers/net/wireless/rt2x00/rt2400pci.c
index 9ec6691adf0..62786608951 100644
--- a/drivers/net/wireless/rt2x00/rt2400pci.c
+++ b/drivers/net/wireless/rt2x00/rt2400pci.c
@@ -1140,7 +1140,11 @@ static void rt2400pci_kill_tx_queue(struct data_queue *queue)
1140 u32 reg; 1140 u32 reg;
1141 1141
1142 if (queue->qid == QID_BEACON) { 1142 if (queue->qid == QID_BEACON) {
1143 rt2x00pci_register_write(rt2x00dev, CSR14, 0); 1143 rt2x00pci_register_read(rt2x00dev, CSR14, &reg);
1144 rt2x00_set_field32(&reg, CSR14_TSF_COUNT, 0);
1145 rt2x00_set_field32(&reg, CSR14_TBCN, 0);
1146 rt2x00_set_field32(&reg, CSR14_BEACON_GEN, 0);
1147 rt2x00pci_register_write(rt2x00dev, CSR14, reg);
1144 } else { 1148 } else {
1145 rt2x00pci_register_read(rt2x00dev, TXCSR0, &reg); 1149 rt2x00pci_register_read(rt2x00dev, TXCSR0, &reg);
1146 rt2x00_set_field32(&reg, TXCSR0_ABORT, 1); 1150 rt2x00_set_field32(&reg, TXCSR0_ABORT, 1);
diff --git a/drivers/net/wireless/rt2x00/rt2500pci.c b/drivers/net/wireless/rt2x00/rt2500pci.c
index 3e7f2034624..ce9212f2820 100644
--- a/drivers/net/wireless/rt2x00/rt2500pci.c
+++ b/drivers/net/wireless/rt2x00/rt2500pci.c
@@ -1294,7 +1294,11 @@ static void rt2500pci_kill_tx_queue(struct data_queue *queue)
1294 u32 reg; 1294 u32 reg;
1295 1295
1296 if (queue->qid == QID_BEACON) { 1296 if (queue->qid == QID_BEACON) {
1297 rt2x00pci_register_write(rt2x00dev, CSR14, 0); 1297 rt2x00pci_register_read(rt2x00dev, CSR14, &reg);
1298 rt2x00_set_field32(&reg, CSR14_TSF_COUNT, 0);
1299 rt2x00_set_field32(&reg, CSR14_TBCN, 0);
1300 rt2x00_set_field32(&reg, CSR14_BEACON_GEN, 0);
1301 rt2x00pci_register_write(rt2x00dev, CSR14, reg);
1298 } else { 1302 } else {
1299 rt2x00pci_register_read(rt2x00dev, TXCSR0, &reg); 1303 rt2x00pci_register_read(rt2x00dev, TXCSR0, &reg);
1300 rt2x00_set_field32(&reg, TXCSR0_ABORT, 1); 1304 rt2x00_set_field32(&reg, TXCSR0_ABORT, 1);
diff --git a/drivers/net/wireless/rt2x00/rt2500usb.c b/drivers/net/wireless/rt2x00/rt2500usb.c
index 8152fec3175..bbfa671f115 100644
--- a/drivers/net/wireless/rt2x00/rt2500usb.c
+++ b/drivers/net/wireless/rt2x00/rt2500usb.c
@@ -1205,8 +1205,16 @@ static int rt2500usb_get_tx_data_len(struct queue_entry *entry)
1205 1205
1206static void rt2500usb_kill_tx_queue(struct data_queue *queue) 1206static void rt2500usb_kill_tx_queue(struct data_queue *queue)
1207{ 1207{
1208 if (queue->qid == QID_BEACON) 1208 struct rt2x00_dev *rt2x00dev = queue->rt2x00dev;
1209 rt2500usb_register_write(queue->rt2x00dev, TXRX_CSR19, 0); 1209 u16 reg;
1210
1211 if (queue->qid == QID_BEACON) {
1212 rt2500usb_register_read(rt2x00dev, TXRX_CSR19, &reg);
1213 rt2x00_set_field16(&reg, TXRX_CSR19_TSF_COUNT, 0);
1214 rt2x00_set_field16(&reg, TXRX_CSR19_TBCN, 0);
1215 rt2x00_set_field16(&reg, TXRX_CSR19_BEACON_GEN, 0);
1216 rt2500usb_register_write(rt2x00dev, TXRX_CSR19, reg);
1217 }
1210 1218
1211 rt2x00usb_kill_tx_queue(queue); 1219 rt2x00usb_kill_tx_queue(queue);
1212} 1220}
diff --git a/drivers/net/wireless/rt2x00/rt2800pci.c b/drivers/net/wireless/rt2x00/rt2800pci.c
index f5abcc6e86b..533a8fc1f7c 100644
--- a/drivers/net/wireless/rt2x00/rt2800pci.c
+++ b/drivers/net/wireless/rt2x00/rt2800pci.c
@@ -588,7 +588,11 @@ static void rt2800pci_kill_tx_queue(struct data_queue *queue)
588 u32 reg; 588 u32 reg;
589 589
590 if (queue->qid == QID_BEACON) { 590 if (queue->qid == QID_BEACON) {
591 rt2800_register_write(rt2x00dev, BCN_TIME_CFG, 0); 591 rt2800_register_read(rt2x00dev, BCN_TIME_CFG, &reg);
592 rt2x00_set_field32(&reg, BCN_TIME_CFG_TSF_TICKING, 0);
593 rt2x00_set_field32(&reg, BCN_TIME_CFG_TBTT_ENABLE, 0);
594 rt2x00_set_field32(&reg, BCN_TIME_CFG_BEACON_GEN, 0);
595 rt2800_register_write(rt2x00dev, BCN_TIME_CFG, reg);
592 return; 596 return;
593 } 597 }
594 598
diff --git a/drivers/net/wireless/rt2x00/rt2800usb.c b/drivers/net/wireless/rt2x00/rt2800usb.c
index 042e47d92b6..a150fccffba 100644
--- a/drivers/net/wireless/rt2x00/rt2800usb.c
+++ b/drivers/net/wireless/rt2x00/rt2800usb.c
@@ -391,8 +391,16 @@ static void rt2800usb_work_txdone(struct work_struct *work)
391 391
392static void rt2800usb_kill_tx_queue(struct data_queue *queue) 392static void rt2800usb_kill_tx_queue(struct data_queue *queue)
393{ 393{
394 if (queue->qid == QID_BEACON) 394 struct rt2x00_dev *rt2x00dev = queue->rt2x00dev;
395 rt2x00usb_register_write(queue->rt2x00dev, BCN_TIME_CFG, 0); 395 u32 reg;
396
397 if (queue->qid == QID_BEACON) {
398 rt2800_register_read(rt2x00dev, BCN_TIME_CFG, &reg);
399 rt2x00_set_field32(&reg, BCN_TIME_CFG_TSF_TICKING, 0);
400 rt2x00_set_field32(&reg, BCN_TIME_CFG_TBTT_ENABLE, 0);
401 rt2x00_set_field32(&reg, BCN_TIME_CFG_BEACON_GEN, 0);
402 rt2800_register_write(rt2x00dev, BCN_TIME_CFG, reg);
403 }
396 404
397 rt2x00usb_kill_tx_queue(queue); 405 rt2x00usb_kill_tx_queue(queue);
398} 406}
diff --git a/drivers/net/wireless/rt2x00/rt61pci.c b/drivers/net/wireless/rt2x00/rt61pci.c
index 6b09b01f634..6ad0c1c9ce4 100644
--- a/drivers/net/wireless/rt2x00/rt61pci.c
+++ b/drivers/net/wireless/rt2x00/rt61pci.c
@@ -1944,7 +1944,11 @@ static void rt61pci_kill_tx_queue(struct data_queue *queue)
1944 u32 reg; 1944 u32 reg;
1945 1945
1946 if (queue->qid == QID_BEACON) { 1946 if (queue->qid == QID_BEACON) {
1947 rt2x00pci_register_write(rt2x00dev, TXRX_CSR9, 0); 1947 rt2x00pci_register_read(rt2x00dev, TXRX_CSR9, &reg);
1948 rt2x00_set_field32(&reg, TXRX_CSR9_TSF_TICKING, 0);
1949 rt2x00_set_field32(&reg, TXRX_CSR9_TBTT_ENABLE, 0);
1950 rt2x00_set_field32(&reg, TXRX_CSR9_BEACON_GEN, 0);
1951 rt2x00pci_register_write(rt2x00dev, TXRX_CSR9, reg);
1948 return; 1952 return;
1949 } 1953 }
1950 1954
diff --git a/drivers/net/wireless/rt2x00/rt73usb.c b/drivers/net/wireless/rt2x00/rt73usb.c
index 6f04552f581..3934dad709c 100644
--- a/drivers/net/wireless/rt2x00/rt73usb.c
+++ b/drivers/net/wireless/rt2x00/rt73usb.c
@@ -1581,8 +1581,16 @@ static int rt73usb_get_tx_data_len(struct queue_entry *entry)
1581 1581
1582static void rt73usb_kill_tx_queue(struct data_queue *queue) 1582static void rt73usb_kill_tx_queue(struct data_queue *queue)
1583{ 1583{
1584 if (queue->qid == QID_BEACON) 1584 struct rt2x00_dev *rt2x00dev = queue->rt2x00dev;
1585 rt2x00usb_register_write(queue->rt2x00dev, TXRX_CSR9, 0); 1585 u32 reg;
1586
1587 if (queue->qid == QID_BEACON) {
1588 rt2x00usb_register_read(rt2x00dev, TXRX_CSR9, &reg);
1589 rt2x00_set_field32(&reg, TXRX_CSR9_TSF_TICKING, 0);
1590 rt2x00_set_field32(&reg, TXRX_CSR9_TBTT_ENABLE, 0);
1591 rt2x00_set_field32(&reg, TXRX_CSR9_BEACON_GEN, 0);
1592 rt2x00usb_register_write(rt2x00dev, TXRX_CSR9, reg);
1593 }
1586 1594
1587 rt2x00usb_kill_tx_queue(queue); 1595 rt2x00usb_kill_tx_queue(queue);
1588} 1596}