diff options
Diffstat (limited to 'drivers/net/wireless/rt2x00/rt2500usb.c')
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2500usb.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/drivers/net/wireless/rt2x00/rt2500usb.c b/drivers/net/wireless/rt2x00/rt2500usb.c index de48c5c68eff..09a589432dab 100644 --- a/drivers/net/wireless/rt2x00/rt2500usb.c +++ b/drivers/net/wireless/rt2x00/rt2500usb.c | |||
@@ -1238,8 +1238,6 @@ static void rt2500usb_write_beacon(struct queue_entry *entry) | |||
1238 | * otherwise we might be sending out invalid data. | 1238 | * otherwise we might be sending out invalid data. |
1239 | */ | 1239 | */ |
1240 | rt2500usb_register_read(rt2x00dev, TXRX_CSR19, ®); | 1240 | rt2500usb_register_read(rt2x00dev, TXRX_CSR19, ®); |
1241 | rt2x00_set_field16(®, TXRX_CSR19_TSF_COUNT, 0); | ||
1242 | rt2x00_set_field16(®, TXRX_CSR19_TBCN, 0); | ||
1243 | rt2x00_set_field16(®, TXRX_CSR19_BEACON_GEN, 0); | 1241 | rt2x00_set_field16(®, TXRX_CSR19_BEACON_GEN, 0); |
1244 | rt2500usb_register_write(rt2x00dev, TXRX_CSR19, reg); | 1242 | rt2500usb_register_write(rt2x00dev, TXRX_CSR19, reg); |
1245 | 1243 | ||
@@ -1287,7 +1285,7 @@ static int rt2500usb_get_tx_data_len(struct queue_entry *entry) | |||
1287 | static void rt2500usb_kick_tx_queue(struct rt2x00_dev *rt2x00dev, | 1285 | static void rt2500usb_kick_tx_queue(struct rt2x00_dev *rt2x00dev, |
1288 | const enum data_queue_qid queue) | 1286 | const enum data_queue_qid queue) |
1289 | { | 1287 | { |
1290 | u16 reg; | 1288 | u16 reg, reg0; |
1291 | 1289 | ||
1292 | if (queue != QID_BEACON) { | 1290 | if (queue != QID_BEACON) { |
1293 | rt2x00usb_kick_tx_queue(rt2x00dev, queue); | 1291 | rt2x00usb_kick_tx_queue(rt2x00dev, queue); |
@@ -1298,16 +1296,19 @@ static void rt2500usb_kick_tx_queue(struct rt2x00_dev *rt2x00dev, | |||
1298 | if (!rt2x00_get_field16(reg, TXRX_CSR19_BEACON_GEN)) { | 1296 | if (!rt2x00_get_field16(reg, TXRX_CSR19_BEACON_GEN)) { |
1299 | rt2x00_set_field16(®, TXRX_CSR19_TSF_COUNT, 1); | 1297 | rt2x00_set_field16(®, TXRX_CSR19_TSF_COUNT, 1); |
1300 | rt2x00_set_field16(®, TXRX_CSR19_TBCN, 1); | 1298 | rt2x00_set_field16(®, TXRX_CSR19_TBCN, 1); |
1299 | reg0 = reg; | ||
1301 | rt2x00_set_field16(®, TXRX_CSR19_BEACON_GEN, 1); | 1300 | rt2x00_set_field16(®, TXRX_CSR19_BEACON_GEN, 1); |
1302 | /* | 1301 | /* |
1303 | * Beacon generation will fail initially. | 1302 | * Beacon generation will fail initially. |
1304 | * To prevent this we need to register the TXRX_CSR19 | 1303 | * To prevent this we need to change the TXRX_CSR19 |
1305 | * register several times. | 1304 | * register several times (reg0 is the same as reg |
1305 | * except for TXRX_CSR19_BEACON_GEN, which is 0 in reg0 | ||
1306 | * and 1 in reg). | ||
1306 | */ | 1307 | */ |
1307 | rt2500usb_register_write(rt2x00dev, TXRX_CSR19, reg); | 1308 | rt2500usb_register_write(rt2x00dev, TXRX_CSR19, reg); |
1308 | rt2500usb_register_write(rt2x00dev, TXRX_CSR19, 0); | 1309 | rt2500usb_register_write(rt2x00dev, TXRX_CSR19, reg0); |
1309 | rt2500usb_register_write(rt2x00dev, TXRX_CSR19, reg); | 1310 | rt2500usb_register_write(rt2x00dev, TXRX_CSR19, reg); |
1310 | rt2500usb_register_write(rt2x00dev, TXRX_CSR19, 0); | 1311 | rt2500usb_register_write(rt2x00dev, TXRX_CSR19, reg0); |
1311 | rt2500usb_register_write(rt2x00dev, TXRX_CSR19, reg); | 1312 | rt2500usb_register_write(rt2x00dev, TXRX_CSR19, reg); |
1312 | } | 1313 | } |
1313 | } | 1314 | } |