aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/rt2x00/rt73usb.c
diff options
context:
space:
mode:
authorHelmut Schaa <helmut.schaa@googlemail.com>2010-12-13 06:33:36 -0500
committerJohn W. Linville <linville@tuxdriver.com>2010-12-13 15:23:34 -0500
commit89b25f60e08180d7e00e6239398b467142aaec01 (patch)
tree7c8dd38055d85a9b062b524353835ad162a02a69 /drivers/net/wireless/rt2x00/rt73usb.c
parenta061a93b6eb8db8227b251666436da1e344771a0 (diff)
rt2x00: Don't frequently reset beacon interval in AdHoc mode
Commit 0204464329c17ba6d293e1899f71223599a0e582 "Check for specific changed flags when updating the erp config" changed the way in which a new beacon interval gets handled. However, due to a bug in rt2800usb and rt2800pci the beacon interval was reset during each scan, thus causing problems in AdHoc mode. Fix this by not cleaning up the beacon interval when killing the beacon queue but just prevent the device from sending out beacons. Reported-by: Wolfgang Kufner <wolfgang.kufner@gmail.com> Signed-off-by: Helmut Schaa <helmut.schaa@googlemail.com> Acked-by: Gertjan van Wingerde <gwingerde@gmail.com> Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/rt2x00/rt73usb.c')
-rw-r--r--drivers/net/wireless/rt2x00/rt73usb.c12
1 files changed, 10 insertions, 2 deletions
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}