diff options
author | John W. Linville <linville@tuxdriver.com> | 2010-05-11 14:24:55 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2010-05-11 14:24:55 -0400 |
commit | cc755896a4274f11283bca32d1d658203844057a (patch) | |
tree | 218970ece71df99f686b9416b7fd88b921690ebb /drivers/net/wireless/rt2x00/rt73usb.c | |
parent | d250fe91ae129bff0968e685cc9c466d3a5e3482 (diff) | |
parent | 9459d59fbf0bc82ff4c804679fa8bc22788eca63 (diff) |
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 into for-davem
Conflicts:
drivers/net/wireless/ath/ar9170/main.c
Diffstat (limited to 'drivers/net/wireless/rt2x00/rt73usb.c')
-rw-r--r-- | drivers/net/wireless/rt2x00/rt73usb.c | 51 |
1 files changed, 18 insertions, 33 deletions
diff --git a/drivers/net/wireless/rt2x00/rt73usb.c b/drivers/net/wireless/rt2x00/rt73usb.c index 39b3c6d04af4..11c130748206 100644 --- a/drivers/net/wireless/rt2x00/rt73usb.c +++ b/drivers/net/wireless/rt2x00/rt73usb.c | |||
@@ -1505,7 +1505,8 @@ static void rt73usb_write_tx_desc(struct rt2x00_dev *rt2x00dev, | |||
1505 | /* | 1505 | /* |
1506 | * TX data initialization | 1506 | * TX data initialization |
1507 | */ | 1507 | */ |
1508 | static void rt73usb_write_beacon(struct queue_entry *entry) | 1508 | static void rt73usb_write_beacon(struct queue_entry *entry, |
1509 | struct txentry_desc *txdesc) | ||
1509 | { | 1510 | { |
1510 | struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev; | 1511 | struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev; |
1511 | struct skb_frame_desc *skbdesc = get_skb_frame_desc(entry->skb); | 1512 | struct skb_frame_desc *skbdesc = get_skb_frame_desc(entry->skb); |
@@ -1537,6 +1538,19 @@ static void rt73usb_write_beacon(struct queue_entry *entry) | |||
1537 | REGISTER_TIMEOUT32(entry->skb->len)); | 1538 | REGISTER_TIMEOUT32(entry->skb->len)); |
1538 | 1539 | ||
1539 | /* | 1540 | /* |
1541 | * Enable beaconing again. | ||
1542 | * | ||
1543 | * For Wi-Fi faily generated beacons between participating stations. | ||
1544 | * Set TBTT phase adaptive adjustment step to 8us (default 16us) | ||
1545 | */ | ||
1546 | rt2x00usb_register_write(rt2x00dev, TXRX_CSR10, 0x00001008); | ||
1547 | |||
1548 | rt2x00_set_field32(®, TXRX_CSR9_TSF_TICKING, 1); | ||
1549 | rt2x00_set_field32(®, TXRX_CSR9_TBTT_ENABLE, 1); | ||
1550 | rt2x00_set_field32(®, TXRX_CSR9_BEACON_GEN, 1); | ||
1551 | rt2x00usb_register_write(rt2x00dev, TXRX_CSR9, reg); | ||
1552 | |||
1553 | /* | ||
1540 | * Clean up the beacon skb. | 1554 | * Clean up the beacon skb. |
1541 | */ | 1555 | */ |
1542 | dev_kfree_skb(entry->skb); | 1556 | dev_kfree_skb(entry->skb); |
@@ -1557,31 +1571,6 @@ static int rt73usb_get_tx_data_len(struct queue_entry *entry) | |||
1557 | return length; | 1571 | return length; |
1558 | } | 1572 | } |
1559 | 1573 | ||
1560 | static void rt73usb_kick_tx_queue(struct rt2x00_dev *rt2x00dev, | ||
1561 | const enum data_queue_qid queue) | ||
1562 | { | ||
1563 | u32 reg; | ||
1564 | |||
1565 | if (queue != QID_BEACON) { | ||
1566 | rt2x00usb_kick_tx_queue(rt2x00dev, queue); | ||
1567 | return; | ||
1568 | } | ||
1569 | |||
1570 | /* | ||
1571 | * For Wi-Fi faily generated beacons between participating stations. | ||
1572 | * Set TBTT phase adaptive adjustment step to 8us (default 16us) | ||
1573 | */ | ||
1574 | rt2x00usb_register_write(rt2x00dev, TXRX_CSR10, 0x00001008); | ||
1575 | |||
1576 | rt2x00usb_register_read(rt2x00dev, TXRX_CSR9, ®); | ||
1577 | if (!rt2x00_get_field32(reg, TXRX_CSR9_BEACON_GEN)) { | ||
1578 | rt2x00_set_field32(®, TXRX_CSR9_TSF_TICKING, 1); | ||
1579 | rt2x00_set_field32(®, TXRX_CSR9_TBTT_ENABLE, 1); | ||
1580 | rt2x00_set_field32(®, TXRX_CSR9_BEACON_GEN, 1); | ||
1581 | rt2x00usb_register_write(rt2x00dev, TXRX_CSR9, reg); | ||
1582 | } | ||
1583 | } | ||
1584 | |||
1585 | /* | 1574 | /* |
1586 | * RX control handlers | 1575 | * RX control handlers |
1587 | */ | 1576 | */ |
@@ -1645,12 +1634,8 @@ static void rt73usb_fill_rxdone(struct queue_entry *entry, | |||
1645 | if (rt2x00_get_field32(word0, RXD_W0_CRC_ERROR)) | 1634 | if (rt2x00_get_field32(word0, RXD_W0_CRC_ERROR)) |
1646 | rxdesc->flags |= RX_FLAG_FAILED_FCS_CRC; | 1635 | rxdesc->flags |= RX_FLAG_FAILED_FCS_CRC; |
1647 | 1636 | ||
1648 | if (test_bit(CONFIG_SUPPORT_HW_CRYPTO, &rt2x00dev->flags)) { | 1637 | rxdesc->cipher = rt2x00_get_field32(word0, RXD_W0_CIPHER_ALG); |
1649 | rxdesc->cipher = | 1638 | rxdesc->cipher_status = rt2x00_get_field32(word0, RXD_W0_CIPHER_ERROR); |
1650 | rt2x00_get_field32(word0, RXD_W0_CIPHER_ALG); | ||
1651 | rxdesc->cipher_status = | ||
1652 | rt2x00_get_field32(word0, RXD_W0_CIPHER_ERROR); | ||
1653 | } | ||
1654 | 1639 | ||
1655 | if (rxdesc->cipher != CIPHER_NONE) { | 1640 | if (rxdesc->cipher != CIPHER_NONE) { |
1656 | _rt2x00_desc_read(rxd, 2, &rxdesc->iv[0]); | 1641 | _rt2x00_desc_read(rxd, 2, &rxdesc->iv[0]); |
@@ -2266,7 +2251,7 @@ static const struct rt2x00lib_ops rt73usb_rt2x00_ops = { | |||
2266 | .write_tx_data = rt2x00usb_write_tx_data, | 2251 | .write_tx_data = rt2x00usb_write_tx_data, |
2267 | .write_beacon = rt73usb_write_beacon, | 2252 | .write_beacon = rt73usb_write_beacon, |
2268 | .get_tx_data_len = rt73usb_get_tx_data_len, | 2253 | .get_tx_data_len = rt73usb_get_tx_data_len, |
2269 | .kick_tx_queue = rt73usb_kick_tx_queue, | 2254 | .kick_tx_queue = rt2x00usb_kick_tx_queue, |
2270 | .kill_tx_queue = rt2x00usb_kill_tx_queue, | 2255 | .kill_tx_queue = rt2x00usb_kill_tx_queue, |
2271 | .fill_rxdone = rt73usb_fill_rxdone, | 2256 | .fill_rxdone = rt73usb_fill_rxdone, |
2272 | .config_shared_key = rt73usb_config_shared_key, | 2257 | .config_shared_key = rt73usb_config_shared_key, |