diff options
| -rw-r--r-- | drivers/net/wireless/ath/ath5k/base.c | 1 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/ath9k/ar9003_2p2_initvals.h | 191 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/ath9k/ar9003_paprd.c | 14 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/ath9k/beacon.c | 2 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/ath9k/init.c | 1 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/ath9k/main.c | 7 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/ath9k/xmit.c | 8 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/carl9170/cmd.h | 51 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/carl9170/main.c | 2 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/carl9170/usb.c | 25 | ||||
| -rw-r--r-- | drivers/net/wireless/b43/phy_n.c | 2 | ||||
| -rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-agn-tx.c | 3 | ||||
| -rw-r--r-- | drivers/net/wireless/wl1251/Makefile | 8 | ||||
| -rw-r--r-- | net/mac80211/ibss.c | 1 | ||||
| -rw-r--r-- | net/mac80211/main.c | 8 | ||||
| -rw-r--r-- | net/mac80211/rate.c | 3 | ||||
| -rw-r--r-- | net/wireless/reg.c | 2 |
17 files changed, 221 insertions, 108 deletions
diff --git a/drivers/net/wireless/ath/ath5k/base.c b/drivers/net/wireless/ath/ath5k/base.c index f1ae75d35d5d..8251946842e6 100644 --- a/drivers/net/wireless/ath/ath5k/base.c +++ b/drivers/net/wireless/ath/ath5k/base.c | |||
| @@ -3580,6 +3580,7 @@ ath5k_pci_probe(struct pci_dev *pdev, | |||
| 3580 | common->ah = sc->ah; | 3580 | common->ah = sc->ah; |
| 3581 | common->hw = hw; | 3581 | common->hw = hw; |
| 3582 | common->cachelsz = csz << 2; /* convert to bytes */ | 3582 | common->cachelsz = csz << 2; /* convert to bytes */ |
| 3583 | spin_lock_init(&common->cc_lock); | ||
| 3583 | 3584 | ||
| 3584 | /* Initialize device */ | 3585 | /* Initialize device */ |
| 3585 | ret = ath5k_hw_attach(sc); | 3586 | ret = ath5k_hw_attach(sc); |
diff --git a/drivers/net/wireless/ath/ath9k/ar9003_2p2_initvals.h b/drivers/net/wireless/ath/ath9k/ar9003_2p2_initvals.h index ec98ab50748a..a14a5e43cf56 100644 --- a/drivers/net/wireless/ath/ath9k/ar9003_2p2_initvals.h +++ b/drivers/net/wireless/ath/ath9k/ar9003_2p2_initvals.h | |||
| @@ -34,6 +34,10 @@ static const u32 ar9300_2p2_radio_postamble[][5] = { | |||
| 34 | 34 | ||
| 35 | static const u32 ar9300Modes_lowest_ob_db_tx_gain_table_2p2[][5] = { | 35 | static const u32 ar9300Modes_lowest_ob_db_tx_gain_table_2p2[][5] = { |
| 36 | /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */ | 36 | /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */ |
| 37 | {0x0000a2dc, 0x0380c7fc, 0x0380c7fc, 0x00637800, 0x00637800}, | ||
| 38 | {0x0000a2e0, 0x0000f800, 0x0000f800, 0x03838000, 0x03838000}, | ||
| 39 | {0x0000a2e4, 0x03ff0000, 0x03ff0000, 0x03fc0000, 0x03fc0000}, | ||
| 40 | {0x0000a2e8, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, | ||
| 37 | {0x0000a410, 0x000050d9, 0x000050d9, 0x000050d9, 0x000050d9}, | 41 | {0x0000a410, 0x000050d9, 0x000050d9, 0x000050d9, 0x000050d9}, |
| 38 | {0x0000a500, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, | 42 | {0x0000a500, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, |
| 39 | {0x0000a504, 0x06000003, 0x06000003, 0x04000002, 0x04000002}, | 43 | {0x0000a504, 0x06000003, 0x06000003, 0x04000002, 0x04000002}, |
| @@ -99,6 +103,30 @@ static const u32 ar9300Modes_lowest_ob_db_tx_gain_table_2p2[][5] = { | |||
| 99 | {0x0000a5f4, 0x7782b08c, 0x7782b08c, 0x5d801eec, 0x5d801eec}, | 103 | {0x0000a5f4, 0x7782b08c, 0x7782b08c, 0x5d801eec, 0x5d801eec}, |
| 100 | {0x0000a5f8, 0x7782b08c, 0x7782b08c, 0x5d801eec, 0x5d801eec}, | 104 | {0x0000a5f8, 0x7782b08c, 0x7782b08c, 0x5d801eec, 0x5d801eec}, |
| 101 | {0x0000a5fc, 0x7782b08c, 0x7782b08c, 0x5d801eec, 0x5d801eec}, | 105 | {0x0000a5fc, 0x7782b08c, 0x7782b08c, 0x5d801eec, 0x5d801eec}, |
| 106 | {0x0000a600, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, | ||
| 107 | {0x0000a604, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, | ||
| 108 | {0x0000a608, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, | ||
| 109 | {0x0000a60c, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, | ||
| 110 | {0x0000a610, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, | ||
| 111 | {0x0000a614, 0x01404000, 0x01404000, 0x01404000, 0x01404000}, | ||
| 112 | {0x0000a618, 0x01404501, 0x01404501, 0x01404501, 0x01404501}, | ||
| 113 | {0x0000a61c, 0x02008802, 0x02008802, 0x02008501, 0x02008501}, | ||
| 114 | {0x0000a620, 0x0300cc03, 0x0300cc03, 0x0280ca03, 0x0280ca03}, | ||
| 115 | {0x0000a624, 0x0300cc03, 0x0300cc03, 0x03010c04, 0x03010c04}, | ||
| 116 | {0x0000a628, 0x0300cc03, 0x0300cc03, 0x04014c04, 0x04014c04}, | ||
| 117 | {0x0000a62c, 0x03810c03, 0x03810c03, 0x04015005, 0x04015005}, | ||
| 118 | {0x0000a630, 0x03810e04, 0x03810e04, 0x04015005, 0x04015005}, | ||
| 119 | {0x0000a634, 0x03810e04, 0x03810e04, 0x04015005, 0x04015005}, | ||
| 120 | {0x0000a638, 0x03810e04, 0x03810e04, 0x04015005, 0x04015005}, | ||
| 121 | {0x0000a63c, 0x03810e04, 0x03810e04, 0x04015005, 0x04015005}, | ||
| 122 | {0x0000b2dc, 0x0380c7fc, 0x0380c7fc, 0x00637800, 0x00637800}, | ||
| 123 | {0x0000b2e0, 0x0000f800, 0x0000f800, 0x03838000, 0x03838000}, | ||
| 124 | {0x0000b2e4, 0x03ff0000, 0x03ff0000, 0x03fc0000, 0x03fc0000}, | ||
| 125 | {0x0000b2e8, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, | ||
| 126 | {0x0000c2dc, 0x0380c7fc, 0x0380c7fc, 0x00637800, 0x00637800}, | ||
| 127 | {0x0000c2e0, 0x0000f800, 0x0000f800, 0x03838000, 0x03838000}, | ||
| 128 | {0x0000c2e4, 0x03ff0000, 0x03ff0000, 0x03fc0000, 0x03fc0000}, | ||
| 129 | {0x0000c2e8, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, | ||
| 102 | {0x00016044, 0x012492d4, 0x012492d4, 0x012492d4, 0x012492d4}, | 130 | {0x00016044, 0x012492d4, 0x012492d4, 0x012492d4, 0x012492d4}, |
| 103 | {0x00016048, 0x62480001, 0x62480001, 0x62480001, 0x62480001}, | 131 | {0x00016048, 0x62480001, 0x62480001, 0x62480001, 0x62480001}, |
| 104 | {0x00016068, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c}, | 132 | {0x00016068, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c}, |
| @@ -118,7 +146,7 @@ static const u32 ar9300Modes_fast_clock_2p2[][3] = { | |||
| 118 | {0x00008014, 0x044c044c, 0x08980898}, | 146 | {0x00008014, 0x044c044c, 0x08980898}, |
| 119 | {0x0000801c, 0x148ec02b, 0x148ec057}, | 147 | {0x0000801c, 0x148ec02b, 0x148ec057}, |
| 120 | {0x00008318, 0x000044c0, 0x00008980}, | 148 | {0x00008318, 0x000044c0, 0x00008980}, |
| 121 | {0x00009e00, 0x03721821, 0x03721821}, | 149 | {0x00009e00, 0x0372131c, 0x0372131c}, |
| 122 | {0x0000a230, 0x0000000b, 0x00000016}, | 150 | {0x0000a230, 0x0000000b, 0x00000016}, |
| 123 | {0x0000a254, 0x00000898, 0x00001130}, | 151 | {0x0000a254, 0x00000898, 0x00001130}, |
| 124 | }; | 152 | }; |
| @@ -595,15 +623,16 @@ static const u32 ar9300_2p2_baseband_postamble[][5] = { | |||
| 595 | {0x0000982c, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4}, | 623 | {0x0000982c, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4}, |
| 596 | {0x00009830, 0x0000059c, 0x0000059c, 0x0000119c, 0x0000119c}, | 624 | {0x00009830, 0x0000059c, 0x0000059c, 0x0000119c, 0x0000119c}, |
| 597 | {0x00009c00, 0x000000c4, 0x000000c4, 0x000000c4, 0x000000c4}, | 625 | {0x00009c00, 0x000000c4, 0x000000c4, 0x000000c4, 0x000000c4}, |
| 598 | {0x00009e00, 0x0372161e, 0x0372161e, 0x037216a0, 0x037216a0}, | 626 | {0x00009e00, 0x0372111a, 0x0372111a, 0x037216a0, 0x037216a0}, |
| 599 | {0x00009e04, 0x00802020, 0x00802020, 0x00802020, 0x00802020}, | 627 | {0x00009e04, 0x001c2020, 0x001c2020, 0x001c2020, 0x001c2020}, |
| 600 | {0x00009e0c, 0x6c4000e2, 0x6d4000e2, 0x6d4000e2, 0x6c4000e2}, | 628 | {0x00009e0c, 0x6c4000e2, 0x6d4000e2, 0x6d4000e2, 0x6c4000e2}, |
| 601 | {0x00009e10, 0x7ec88d2e, 0x7ec88d2e, 0x7ec84d2e, 0x7ec84d2e}, | 629 | {0x00009e10, 0x7ec88d2e, 0x7ec88d2e, 0x7ec84d2e, 0x7ec84d2e}, |
| 602 | {0x00009e14, 0x31395d5e, 0x3139605e, 0x3139605e, 0x31395d5e}, | 630 | {0x00009e14, 0x37b95d5e, 0x37b9605e, 0x3379605e, 0x33795d5e}, |
| 603 | {0x00009e18, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, | 631 | {0x00009e18, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, |
| 604 | {0x00009e1c, 0x0001cf9c, 0x0001cf9c, 0x00021f9c, 0x00021f9c}, | 632 | {0x00009e1c, 0x0001cf9c, 0x0001cf9c, 0x00021f9c, 0x00021f9c}, |
| 605 | {0x00009e20, 0x000003b5, 0x000003b5, 0x000003ce, 0x000003ce}, | 633 | {0x00009e20, 0x000003b5, 0x000003b5, 0x000003ce, 0x000003ce}, |
| 606 | {0x00009e2c, 0x0000001c, 0x0000001c, 0x00000021, 0x00000021}, | 634 | {0x00009e2c, 0x0000001c, 0x0000001c, 0x00000021, 0x00000021}, |
| 635 | {0x00009e3c, 0xcf946220, 0xcf946220, 0xcf946222, 0xcf946222}, | ||
| 607 | {0x00009e44, 0x02321e27, 0x02321e27, 0x02291e27, 0x02291e27}, | 636 | {0x00009e44, 0x02321e27, 0x02321e27, 0x02291e27, 0x02291e27}, |
| 608 | {0x00009e48, 0x5030201a, 0x5030201a, 0x50302012, 0x50302012}, | 637 | {0x00009e48, 0x5030201a, 0x5030201a, 0x50302012, 0x50302012}, |
| 609 | {0x00009fc8, 0x0003f000, 0x0003f000, 0x0001a000, 0x0001a000}, | 638 | {0x00009fc8, 0x0003f000, 0x0003f000, 0x0001a000, 0x0001a000}, |
| @@ -624,16 +653,16 @@ static const u32 ar9300_2p2_baseband_postamble[][5] = { | |||
| 624 | {0x0000a28c, 0x00022222, 0x00022222, 0x00022222, 0x00022222}, | 653 | {0x0000a28c, 0x00022222, 0x00022222, 0x00022222, 0x00022222}, |
| 625 | {0x0000a2c4, 0x00158d18, 0x00158d18, 0x00158d18, 0x00158d18}, | 654 | {0x0000a2c4, 0x00158d18, 0x00158d18, 0x00158d18, 0x00158d18}, |
| 626 | {0x0000a2d0, 0x00071981, 0x00071981, 0x00071981, 0x00071982}, | 655 | {0x0000a2d0, 0x00071981, 0x00071981, 0x00071981, 0x00071982}, |
| 627 | {0x0000a2d8, 0xf999a83a, 0xf999a83a, 0xf999a83a, 0xf999a83a}, | 656 | {0x0000a2d8, 0x7999a83a, 0x7999a83a, 0x7999a83a, 0x7999a83a}, |
| 628 | {0x0000a358, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, | 657 | {0x0000a358, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, |
| 629 | {0x0000a830, 0x0000019c, 0x0000019c, 0x0000019c, 0x0000019c}, | 658 | {0x0000a830, 0x0000019c, 0x0000019c, 0x0000019c, 0x0000019c}, |
| 630 | {0x0000ae04, 0x00800000, 0x00800000, 0x00800000, 0x00800000}, | 659 | {0x0000ae04, 0x001c0000, 0x001c0000, 0x001c0000, 0x001c0000}, |
| 631 | {0x0000ae18, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, | 660 | {0x0000ae18, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, |
| 632 | {0x0000ae1c, 0x0000019c, 0x0000019c, 0x0000019c, 0x0000019c}, | 661 | {0x0000ae1c, 0x0000019c, 0x0000019c, 0x0000019c, 0x0000019c}, |
| 633 | {0x0000ae20, 0x000001b5, 0x000001b5, 0x000001ce, 0x000001ce}, | 662 | {0x0000ae20, 0x000001b5, 0x000001b5, 0x000001ce, 0x000001ce}, |
| 634 | {0x0000b284, 0x00000000, 0x00000000, 0x00000150, 0x00000150}, | 663 | {0x0000b284, 0x00000000, 0x00000000, 0x00000150, 0x00000150}, |
| 635 | {0x0000b830, 0x0000019c, 0x0000019c, 0x0000019c, 0x0000019c}, | 664 | {0x0000b830, 0x0000019c, 0x0000019c, 0x0000019c, 0x0000019c}, |
| 636 | {0x0000be04, 0x00800000, 0x00800000, 0x00800000, 0x00800000}, | 665 | {0x0000be04, 0x001c0000, 0x001c0000, 0x001c0000, 0x001c0000}, |
| 637 | {0x0000be18, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, | 666 | {0x0000be18, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, |
| 638 | {0x0000be1c, 0x0000019c, 0x0000019c, 0x0000019c, 0x0000019c}, | 667 | {0x0000be1c, 0x0000019c, 0x0000019c, 0x0000019c, 0x0000019c}, |
| 639 | {0x0000be20, 0x000001b5, 0x000001b5, 0x000001ce, 0x000001ce}, | 668 | {0x0000be20, 0x000001b5, 0x000001b5, 0x000001ce, 0x000001ce}, |
| @@ -649,13 +678,13 @@ static const u32 ar9300_2p2_baseband_core[][2] = { | |||
| 649 | {0x00009814, 0x9280c00a}, | 678 | {0x00009814, 0x9280c00a}, |
| 650 | {0x00009818, 0x00000000}, | 679 | {0x00009818, 0x00000000}, |
| 651 | {0x0000981c, 0x00020028}, | 680 | {0x0000981c, 0x00020028}, |
| 652 | {0x00009834, 0x5f3ca3de}, | 681 | {0x00009834, 0x6400a290}, |
| 653 | {0x00009838, 0x0108ecff}, | 682 | {0x00009838, 0x0108ecff}, |
| 654 | {0x0000983c, 0x14750600}, | 683 | {0x0000983c, 0x14750600}, |
| 655 | {0x00009880, 0x201fff00}, | 684 | {0x00009880, 0x201fff00}, |
| 656 | {0x00009884, 0x00001042}, | 685 | {0x00009884, 0x00001042}, |
| 657 | {0x000098a4, 0x00200400}, | 686 | {0x000098a4, 0x00200400}, |
| 658 | {0x000098b0, 0x52440bbe}, | 687 | {0x000098b0, 0x32840bbe}, |
| 659 | {0x000098d0, 0x004b6a8e}, | 688 | {0x000098d0, 0x004b6a8e}, |
| 660 | {0x000098d4, 0x00000820}, | 689 | {0x000098d4, 0x00000820}, |
| 661 | {0x000098dc, 0x00000000}, | 690 | {0x000098dc, 0x00000000}, |
| @@ -681,7 +710,6 @@ static const u32 ar9300_2p2_baseband_core[][2] = { | |||
| 681 | {0x00009e30, 0x06336f77}, | 710 | {0x00009e30, 0x06336f77}, |
| 682 | {0x00009e34, 0x6af6532f}, | 711 | {0x00009e34, 0x6af6532f}, |
| 683 | {0x00009e38, 0x0cc80c00}, | 712 | {0x00009e38, 0x0cc80c00}, |
| 684 | {0x00009e3c, 0xcf946222}, | ||
| 685 | {0x00009e40, 0x0d261820}, | 713 | {0x00009e40, 0x0d261820}, |
| 686 | {0x00009e4c, 0x00001004}, | 714 | {0x00009e4c, 0x00001004}, |
| 687 | {0x00009e50, 0x00ff03f1}, | 715 | {0x00009e50, 0x00ff03f1}, |
| @@ -694,7 +722,7 @@ static const u32 ar9300_2p2_baseband_core[][2] = { | |||
| 694 | {0x0000a220, 0x00000000}, | 722 | {0x0000a220, 0x00000000}, |
| 695 | {0x0000a224, 0x00000000}, | 723 | {0x0000a224, 0x00000000}, |
| 696 | {0x0000a228, 0x10002310}, | 724 | {0x0000a228, 0x10002310}, |
| 697 | {0x0000a22c, 0x01036a1e}, | 725 | {0x0000a22c, 0x01036a27}, |
| 698 | {0x0000a23c, 0x00000000}, | 726 | {0x0000a23c, 0x00000000}, |
| 699 | {0x0000a244, 0x0c000000}, | 727 | {0x0000a244, 0x0c000000}, |
| 700 | {0x0000a2a0, 0x00000001}, | 728 | {0x0000a2a0, 0x00000001}, |
| @@ -702,10 +730,6 @@ static const u32 ar9300_2p2_baseband_core[][2] = { | |||
| 702 | {0x0000a2c8, 0x00000000}, | 730 | {0x0000a2c8, 0x00000000}, |
| 703 | {0x0000a2cc, 0x18c43433}, | 731 | {0x0000a2cc, 0x18c43433}, |
| 704 | {0x0000a2d4, 0x00000000}, | 732 | {0x0000a2d4, 0x00000000}, |
| 705 | {0x0000a2dc, 0x00000000}, | ||
| 706 | {0x0000a2e0, 0x00000000}, | ||
| 707 | {0x0000a2e4, 0x00000000}, | ||
| 708 | {0x0000a2e8, 0x00000000}, | ||
| 709 | {0x0000a2ec, 0x00000000}, | 733 | {0x0000a2ec, 0x00000000}, |
| 710 | {0x0000a2f0, 0x00000000}, | 734 | {0x0000a2f0, 0x00000000}, |
| 711 | {0x0000a2f4, 0x00000000}, | 735 | {0x0000a2f4, 0x00000000}, |
| @@ -753,33 +777,17 @@ static const u32 ar9300_2p2_baseband_core[][2] = { | |||
| 753 | {0x0000a430, 0x1ce739ce}, | 777 | {0x0000a430, 0x1ce739ce}, |
| 754 | {0x0000a434, 0x00000000}, | 778 | {0x0000a434, 0x00000000}, |
| 755 | {0x0000a438, 0x00001801}, | 779 | {0x0000a438, 0x00001801}, |
| 756 | {0x0000a43c, 0x00000000}, | 780 | {0x0000a43c, 0x00100000}, |
| 757 | {0x0000a440, 0x00000000}, | 781 | {0x0000a440, 0x00000000}, |
| 758 | {0x0000a444, 0x00000000}, | 782 | {0x0000a444, 0x00000000}, |
| 759 | {0x0000a448, 0x06000080}, | 783 | {0x0000a448, 0x06000080}, |
| 760 | {0x0000a44c, 0x00000001}, | 784 | {0x0000a44c, 0x00000001}, |
| 761 | {0x0000a450, 0x00010000}, | 785 | {0x0000a450, 0x00010000}, |
| 762 | {0x0000a458, 0x00000000}, | 786 | {0x0000a458, 0x00000000}, |
| 763 | {0x0000a600, 0x00000000}, | ||
| 764 | {0x0000a604, 0x00000000}, | ||
| 765 | {0x0000a608, 0x00000000}, | ||
| 766 | {0x0000a60c, 0x00000000}, | ||
| 767 | {0x0000a610, 0x00000000}, | ||
| 768 | {0x0000a614, 0x00000000}, | ||
| 769 | {0x0000a618, 0x00000000}, | ||
| 770 | {0x0000a61c, 0x00000000}, | ||
| 771 | {0x0000a620, 0x00000000}, | ||
| 772 | {0x0000a624, 0x00000000}, | ||
| 773 | {0x0000a628, 0x00000000}, | ||
| 774 | {0x0000a62c, 0x00000000}, | ||
| 775 | {0x0000a630, 0x00000000}, | ||
| 776 | {0x0000a634, 0x00000000}, | ||
| 777 | {0x0000a638, 0x00000000}, | ||
| 778 | {0x0000a63c, 0x00000000}, | ||
| 779 | {0x0000a640, 0x00000000}, | 787 | {0x0000a640, 0x00000000}, |
| 780 | {0x0000a644, 0x3fad9d74}, | 788 | {0x0000a644, 0x3fad9d74}, |
| 781 | {0x0000a648, 0x0048060a}, | 789 | {0x0000a648, 0x0048060a}, |
| 782 | {0x0000a64c, 0x00000637}, | 790 | {0x0000a64c, 0x00003c37}, |
| 783 | {0x0000a670, 0x03020100}, | 791 | {0x0000a670, 0x03020100}, |
| 784 | {0x0000a674, 0x09080504}, | 792 | {0x0000a674, 0x09080504}, |
| 785 | {0x0000a678, 0x0d0c0b0a}, | 793 | {0x0000a678, 0x0d0c0b0a}, |
| @@ -802,10 +810,6 @@ static const u32 ar9300_2p2_baseband_core[][2] = { | |||
| 802 | {0x0000a8f4, 0x00000000}, | 810 | {0x0000a8f4, 0x00000000}, |
| 803 | {0x0000b2d0, 0x00000080}, | 811 | {0x0000b2d0, 0x00000080}, |
| 804 | {0x0000b2d4, 0x00000000}, | 812 | {0x0000b2d4, 0x00000000}, |
| 805 | {0x0000b2dc, 0x00000000}, | ||
| 806 | {0x0000b2e0, 0x00000000}, | ||
| 807 | {0x0000b2e4, 0x00000000}, | ||
| 808 | {0x0000b2e8, 0x00000000}, | ||
| 809 | {0x0000b2ec, 0x00000000}, | 813 | {0x0000b2ec, 0x00000000}, |
| 810 | {0x0000b2f0, 0x00000000}, | 814 | {0x0000b2f0, 0x00000000}, |
| 811 | {0x0000b2f4, 0x00000000}, | 815 | {0x0000b2f4, 0x00000000}, |
| @@ -820,10 +824,6 @@ static const u32 ar9300_2p2_baseband_core[][2] = { | |||
| 820 | {0x0000b8f4, 0x00000000}, | 824 | {0x0000b8f4, 0x00000000}, |
| 821 | {0x0000c2d0, 0x00000080}, | 825 | {0x0000c2d0, 0x00000080}, |
| 822 | {0x0000c2d4, 0x00000000}, | 826 | {0x0000c2d4, 0x00000000}, |
| 823 | {0x0000c2dc, 0x00000000}, | ||
| 824 | {0x0000c2e0, 0x00000000}, | ||
| 825 | {0x0000c2e4, 0x00000000}, | ||
| 826 | {0x0000c2e8, 0x00000000}, | ||
| 827 | {0x0000c2ec, 0x00000000}, | 827 | {0x0000c2ec, 0x00000000}, |
| 828 | {0x0000c2f0, 0x00000000}, | 828 | {0x0000c2f0, 0x00000000}, |
| 829 | {0x0000c2f4, 0x00000000}, | 829 | {0x0000c2f4, 0x00000000}, |
| @@ -835,6 +835,10 @@ static const u32 ar9300_2p2_baseband_core[][2] = { | |||
| 835 | 835 | ||
| 836 | static const u32 ar9300Modes_high_power_tx_gain_table_2p2[][5] = { | 836 | static const u32 ar9300Modes_high_power_tx_gain_table_2p2[][5] = { |
| 837 | /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */ | 837 | /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */ |
| 838 | {0x0000a2dc, 0x0380c7fc, 0x0380c7fc, 0x00637800, 0x00637800}, | ||
| 839 | {0x0000a2e0, 0x0000f800, 0x0000f800, 0x03838000, 0x03838000}, | ||
| 840 | {0x0000a2e4, 0x03ff0000, 0x03ff0000, 0x03fc0000, 0x03fc0000}, | ||
| 841 | {0x0000a2e8, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, | ||
| 838 | {0x0000a410, 0x000050d8, 0x000050d8, 0x000050d9, 0x000050d9}, | 842 | {0x0000a410, 0x000050d8, 0x000050d8, 0x000050d9, 0x000050d9}, |
| 839 | {0x0000a500, 0x00002220, 0x00002220, 0x00000000, 0x00000000}, | 843 | {0x0000a500, 0x00002220, 0x00002220, 0x00000000, 0x00000000}, |
| 840 | {0x0000a504, 0x04002222, 0x04002222, 0x04000002, 0x04000002}, | 844 | {0x0000a504, 0x04002222, 0x04002222, 0x04000002, 0x04000002}, |
| @@ -855,7 +859,7 @@ static const u32 ar9300Modes_high_power_tx_gain_table_2p2[][5] = { | |||
| 855 | {0x0000a540, 0x49005e72, 0x49005e72, 0x38001660, 0x38001660}, | 859 | {0x0000a540, 0x49005e72, 0x49005e72, 0x38001660, 0x38001660}, |
| 856 | {0x0000a544, 0x4e005eb2, 0x4e005eb2, 0x3b001861, 0x3b001861}, | 860 | {0x0000a544, 0x4e005eb2, 0x4e005eb2, 0x3b001861, 0x3b001861}, |
| 857 | {0x0000a548, 0x53005f12, 0x53005f12, 0x3e001a81, 0x3e001a81}, | 861 | {0x0000a548, 0x53005f12, 0x53005f12, 0x3e001a81, 0x3e001a81}, |
| 858 | {0x0000a54c, 0x59025eb5, 0x59025eb5, 0x42001a83, 0x42001a83}, | 862 | {0x0000a54c, 0x59025eb2, 0x59025eb2, 0x42001a83, 0x42001a83}, |
| 859 | {0x0000a550, 0x5e025f12, 0x5e025f12, 0x44001c84, 0x44001c84}, | 863 | {0x0000a550, 0x5e025f12, 0x5e025f12, 0x44001c84, 0x44001c84}, |
| 860 | {0x0000a554, 0x61027f12, 0x61027f12, 0x48001ce3, 0x48001ce3}, | 864 | {0x0000a554, 0x61027f12, 0x61027f12, 0x48001ce3, 0x48001ce3}, |
| 861 | {0x0000a558, 0x6702bf12, 0x6702bf12, 0x4c001ce5, 0x4c001ce5}, | 865 | {0x0000a558, 0x6702bf12, 0x6702bf12, 0x4c001ce5, 0x4c001ce5}, |
| @@ -900,6 +904,30 @@ static const u32 ar9300Modes_high_power_tx_gain_table_2p2[][5] = { | |||
| 900 | {0x0000a5f4, 0x6f82bf16, 0x6f82bf16, 0x56801eec, 0x56801eec}, | 904 | {0x0000a5f4, 0x6f82bf16, 0x6f82bf16, 0x56801eec, 0x56801eec}, |
| 901 | {0x0000a5f8, 0x6f82bf16, 0x6f82bf16, 0x56801eec, 0x56801eec}, | 905 | {0x0000a5f8, 0x6f82bf16, 0x6f82bf16, 0x56801eec, 0x56801eec}, |
| 902 | {0x0000a5fc, 0x6f82bf16, 0x6f82bf16, 0x56801eec, 0x56801eec}, | 906 | {0x0000a5fc, 0x6f82bf16, 0x6f82bf16, 0x56801eec, 0x56801eec}, |
| 907 | {0x0000a600, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, | ||
| 908 | {0x0000a604, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, | ||
| 909 | {0x0000a608, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, | ||
| 910 | {0x0000a60c, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, | ||
| 911 | {0x0000a610, 0x00804000, 0x00804000, 0x00000000, 0x00000000}, | ||
| 912 | {0x0000a614, 0x00804201, 0x00804201, 0x01404000, 0x01404000}, | ||
| 913 | {0x0000a618, 0x0280c802, 0x0280c802, 0x01404501, 0x01404501}, | ||
| 914 | {0x0000a61c, 0x0280ca03, 0x0280ca03, 0x02008501, 0x02008501}, | ||
| 915 | {0x0000a620, 0x04c15104, 0x04c15104, 0x0280ca03, 0x0280ca03}, | ||
| 916 | {0x0000a624, 0x04c15305, 0x04c15305, 0x03010c04, 0x03010c04}, | ||
| 917 | {0x0000a628, 0x04c15305, 0x04c15305, 0x04014c04, 0x04014c04}, | ||
| 918 | {0x0000a62c, 0x04c15305, 0x04c15305, 0x04015005, 0x04015005}, | ||
| 919 | {0x0000a630, 0x04c15305, 0x04c15305, 0x04015005, 0x04015005}, | ||
| 920 | {0x0000a634, 0x04c15305, 0x04c15305, 0x04015005, 0x04015005}, | ||
| 921 | {0x0000a638, 0x04c15305, 0x04c15305, 0x04015005, 0x04015005}, | ||
| 922 | {0x0000a63c, 0x04c15305, 0x04c15305, 0x04015005, 0x04015005}, | ||
| 923 | {0x0000b2dc, 0x0380c7fc, 0x0380c7fc, 0x00637800, 0x00637800}, | ||
| 924 | {0x0000b2e0, 0x0000f800, 0x0000f800, 0x03838000, 0x03838000}, | ||
| 925 | {0x0000b2e4, 0x03ff0000, 0x03ff0000, 0x03fc0000, 0x03fc0000}, | ||
| 926 | {0x0000b2e8, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, | ||
| 927 | {0x0000c2dc, 0x0380c7fc, 0x0380c7fc, 0x00637800, 0x00637800}, | ||
| 928 | {0x0000c2e0, 0x0000f800, 0x0000f800, 0x03838000, 0x03838000}, | ||
| 929 | {0x0000c2e4, 0x03ff0000, 0x03ff0000, 0x03fc0000, 0x03fc0000}, | ||
| 930 | {0x0000c2e8, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, | ||
| 903 | {0x00016044, 0x056db2e6, 0x056db2e6, 0x056db2e6, 0x056db2e6}, | 931 | {0x00016044, 0x056db2e6, 0x056db2e6, 0x056db2e6, 0x056db2e6}, |
| 904 | {0x00016048, 0xae480001, 0xae480001, 0xae480001, 0xae480001}, | 932 | {0x00016048, 0xae480001, 0xae480001, 0xae480001, 0xae480001}, |
| 905 | {0x00016068, 0x6eb6db6c, 0x6eb6db6c, 0x6eb6db6c, 0x6eb6db6c}, | 933 | {0x00016068, 0x6eb6db6c, 0x6eb6db6c, 0x6eb6db6c, 0x6eb6db6c}, |
| @@ -913,6 +941,10 @@ static const u32 ar9300Modes_high_power_tx_gain_table_2p2[][5] = { | |||
| 913 | 941 | ||
| 914 | static const u32 ar9300Modes_high_ob_db_tx_gain_table_2p2[][5] = { | 942 | static const u32 ar9300Modes_high_ob_db_tx_gain_table_2p2[][5] = { |
| 915 | /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */ | 943 | /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */ |
| 944 | {0x0000a2dc, 0x01feee00, 0x01feee00, 0x00637800, 0x00637800}, | ||
| 945 | {0x0000a2e0, 0x0000f000, 0x0000f000, 0x03838000, 0x03838000}, | ||
| 946 | {0x0000a2e4, 0x01ff0000, 0x01ff0000, 0x03fc0000, 0x03fc0000}, | ||
| 947 | {0x0000a2e8, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, | ||
| 916 | {0x0000a410, 0x000050d8, 0x000050d8, 0x000050d9, 0x000050d9}, | 948 | {0x0000a410, 0x000050d8, 0x000050d8, 0x000050d9, 0x000050d9}, |
| 917 | {0x0000a500, 0x00002220, 0x00002220, 0x00000000, 0x00000000}, | 949 | {0x0000a500, 0x00002220, 0x00002220, 0x00000000, 0x00000000}, |
| 918 | {0x0000a504, 0x04002222, 0x04002222, 0x04000002, 0x04000002}, | 950 | {0x0000a504, 0x04002222, 0x04002222, 0x04000002, 0x04000002}, |
| @@ -933,7 +965,7 @@ static const u32 ar9300Modes_high_ob_db_tx_gain_table_2p2[][5] = { | |||
| 933 | {0x0000a540, 0x49005e72, 0x49005e72, 0x38001660, 0x38001660}, | 965 | {0x0000a540, 0x49005e72, 0x49005e72, 0x38001660, 0x38001660}, |
| 934 | {0x0000a544, 0x4e005eb2, 0x4e005eb2, 0x3b001861, 0x3b001861}, | 966 | {0x0000a544, 0x4e005eb2, 0x4e005eb2, 0x3b001861, 0x3b001861}, |
| 935 | {0x0000a548, 0x53005f12, 0x53005f12, 0x3e001a81, 0x3e001a81}, | 967 | {0x0000a548, 0x53005f12, 0x53005f12, 0x3e001a81, 0x3e001a81}, |
| 936 | {0x0000a54c, 0x59025eb5, 0x59025eb5, 0x42001a83, 0x42001a83}, | 968 | {0x0000a54c, 0x59025eb2, 0x59025eb2, 0x42001a83, 0x42001a83}, |
| 937 | {0x0000a550, 0x5e025f12, 0x5e025f12, 0x44001c84, 0x44001c84}, | 969 | {0x0000a550, 0x5e025f12, 0x5e025f12, 0x44001c84, 0x44001c84}, |
| 938 | {0x0000a554, 0x61027f12, 0x61027f12, 0x48001ce3, 0x48001ce3}, | 970 | {0x0000a554, 0x61027f12, 0x61027f12, 0x48001ce3, 0x48001ce3}, |
| 939 | {0x0000a558, 0x6702bf12, 0x6702bf12, 0x4c001ce5, 0x4c001ce5}, | 971 | {0x0000a558, 0x6702bf12, 0x6702bf12, 0x4c001ce5, 0x4c001ce5}, |
| @@ -978,6 +1010,30 @@ static const u32 ar9300Modes_high_ob_db_tx_gain_table_2p2[][5] = { | |||
| 978 | {0x0000a5f4, 0x6f82bf16, 0x6f82bf16, 0x56801eec, 0x56801eec}, | 1010 | {0x0000a5f4, 0x6f82bf16, 0x6f82bf16, 0x56801eec, 0x56801eec}, |
| 979 | {0x0000a5f8, 0x6f82bf16, 0x6f82bf16, 0x56801eec, 0x56801eec}, | 1011 | {0x0000a5f8, 0x6f82bf16, 0x6f82bf16, 0x56801eec, 0x56801eec}, |
| 980 | {0x0000a5fc, 0x6f82bf16, 0x6f82bf16, 0x56801eec, 0x56801eec}, | 1012 | {0x0000a5fc, 0x6f82bf16, 0x6f82bf16, 0x56801eec, 0x56801eec}, |
| 1013 | {0x0000a600, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, | ||
| 1014 | {0x0000a604, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, | ||
| 1015 | {0x0000a608, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, | ||
| 1016 | {0x0000a60c, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, | ||
| 1017 | {0x0000a610, 0x00804000, 0x00804000, 0x00000000, 0x00000000}, | ||
| 1018 | {0x0000a614, 0x00804201, 0x00804201, 0x01404000, 0x01404000}, | ||
| 1019 | {0x0000a618, 0x0280c802, 0x0280c802, 0x01404501, 0x01404501}, | ||
| 1020 | {0x0000a61c, 0x0280ca03, 0x0280ca03, 0x02008501, 0x02008501}, | ||
| 1021 | {0x0000a620, 0x04c15104, 0x04c15104, 0x0280ca03, 0x0280ca03}, | ||
| 1022 | {0x0000a624, 0x04c15305, 0x04c15305, 0x03010c04, 0x03010c04}, | ||
| 1023 | {0x0000a628, 0x04c15305, 0x04c15305, 0x04014c04, 0x04014c04}, | ||
| 1024 | {0x0000a62c, 0x04c15305, 0x04c15305, 0x04015005, 0x04015005}, | ||
| 1025 | {0x0000a630, 0x04c15305, 0x04c15305, 0x04015005, 0x04015005}, | ||
| 1026 | {0x0000a634, 0x04c15305, 0x04c15305, 0x04015005, 0x04015005}, | ||
| 1027 | {0x0000a638, 0x04c15305, 0x04c15305, 0x04015005, 0x04015005}, | ||
| 1028 | {0x0000a63c, 0x04c15305, 0x04c15305, 0x04015005, 0x04015005}, | ||
| 1029 | {0x0000b2dc, 0x01feee00, 0x01feee00, 0x00637800, 0x00637800}, | ||
| 1030 | {0x0000b2e0, 0x0000f000, 0x0000f000, 0x03838000, 0x03838000}, | ||
| 1031 | {0x0000b2e4, 0x01ff0000, 0x01ff0000, 0x03fc0000, 0x03fc0000}, | ||
| 1032 | {0x0000b2e8, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, | ||
| 1033 | {0x0000c2dc, 0x01feee00, 0x01feee00, 0x00637800, 0x00637800}, | ||
| 1034 | {0x0000c2e0, 0x0000f000, 0x0000f000, 0x03838000, 0x03838000}, | ||
| 1035 | {0x0000c2e4, 0x01ff0000, 0x01ff0000, 0x03fc0000, 0x03fc0000}, | ||
| 1036 | {0x0000c2e8, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, | ||
| 981 | {0x00016044, 0x056db2e4, 0x056db2e4, 0x056db2e4, 0x056db2e4}, | 1037 | {0x00016044, 0x056db2e4, 0x056db2e4, 0x056db2e4, 0x056db2e4}, |
| 982 | {0x00016048, 0x8e480001, 0x8e480001, 0x8e480001, 0x8e480001}, | 1038 | {0x00016048, 0x8e480001, 0x8e480001, 0x8e480001, 0x8e480001}, |
| 983 | {0x00016068, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c}, | 1039 | {0x00016068, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c}, |
| @@ -1151,14 +1207,14 @@ static const u32 ar9300Common_rx_gain_table_2p2[][2] = { | |||
| 1151 | {0x0000b074, 0x00000000}, | 1207 | {0x0000b074, 0x00000000}, |
| 1152 | {0x0000b078, 0x00000000}, | 1208 | {0x0000b078, 0x00000000}, |
| 1153 | {0x0000b07c, 0x00000000}, | 1209 | {0x0000b07c, 0x00000000}, |
| 1154 | {0x0000b080, 0x32323232}, | 1210 | {0x0000b080, 0x2a2d2f32}, |
| 1155 | {0x0000b084, 0x2f2f3232}, | 1211 | {0x0000b084, 0x21232328}, |
| 1156 | {0x0000b088, 0x23282a2d}, | 1212 | {0x0000b088, 0x19191c1e}, |
| 1157 | {0x0000b08c, 0x1c1e2123}, | 1213 | {0x0000b08c, 0x12141417}, |
| 1158 | {0x0000b090, 0x14171919}, | 1214 | {0x0000b090, 0x07070e0e}, |
| 1159 | {0x0000b094, 0x0e0e1214}, | 1215 | {0x0000b094, 0x03030305}, |
| 1160 | {0x0000b098, 0x03050707}, | 1216 | {0x0000b098, 0x00000003}, |
| 1161 | {0x0000b09c, 0x00030303}, | 1217 | {0x0000b09c, 0x00000000}, |
| 1162 | {0x0000b0a0, 0x00000000}, | 1218 | {0x0000b0a0, 0x00000000}, |
| 1163 | {0x0000b0a4, 0x00000000}, | 1219 | {0x0000b0a4, 0x00000000}, |
| 1164 | {0x0000b0a8, 0x00000000}, | 1220 | {0x0000b0a8, 0x00000000}, |
| @@ -1251,6 +1307,10 @@ static const u32 ar9300Common_rx_gain_table_2p2[][2] = { | |||
| 1251 | 1307 | ||
| 1252 | static const u32 ar9300Modes_low_ob_db_tx_gain_table_2p2[][5] = { | 1308 | static const u32 ar9300Modes_low_ob_db_tx_gain_table_2p2[][5] = { |
| 1253 | /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */ | 1309 | /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */ |
| 1310 | {0x0000a2dc, 0x0380c7fc, 0x0380c7fc, 0x00637800, 0x00637800}, | ||
| 1311 | {0x0000a2e0, 0x0000f800, 0x0000f800, 0x03838000, 0x03838000}, | ||
| 1312 | {0x0000a2e4, 0x03ff0000, 0x03ff0000, 0x03fc0000, 0x03fc0000}, | ||
| 1313 | {0x0000a2e8, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, | ||
| 1254 | {0x0000a410, 0x000050d9, 0x000050d9, 0x000050d9, 0x000050d9}, | 1314 | {0x0000a410, 0x000050d9, 0x000050d9, 0x000050d9, 0x000050d9}, |
| 1255 | {0x0000a500, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, | 1315 | {0x0000a500, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, |
| 1256 | {0x0000a504, 0x06000003, 0x06000003, 0x04000002, 0x04000002}, | 1316 | {0x0000a504, 0x06000003, 0x06000003, 0x04000002, 0x04000002}, |
| @@ -1316,6 +1376,30 @@ static const u32 ar9300Modes_low_ob_db_tx_gain_table_2p2[][5] = { | |||
| 1316 | {0x0000a5f4, 0x7782b08c, 0x7782b08c, 0x5d801eec, 0x5d801eec}, | 1376 | {0x0000a5f4, 0x7782b08c, 0x7782b08c, 0x5d801eec, 0x5d801eec}, |
| 1317 | {0x0000a5f8, 0x7782b08c, 0x7782b08c, 0x5d801eec, 0x5d801eec}, | 1377 | {0x0000a5f8, 0x7782b08c, 0x7782b08c, 0x5d801eec, 0x5d801eec}, |
| 1318 | {0x0000a5fc, 0x7782b08c, 0x7782b08c, 0x5d801eec, 0x5d801eec}, | 1378 | {0x0000a5fc, 0x7782b08c, 0x7782b08c, 0x5d801eec, 0x5d801eec}, |
| 1379 | {0x0000a600, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, | ||
| 1380 | {0x0000a604, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, | ||
| 1381 | {0x0000a608, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, | ||
| 1382 | {0x0000a60c, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, | ||
| 1383 | {0x0000a610, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, | ||
| 1384 | {0x0000a614, 0x01404000, 0x01404000, 0x01404000, 0x01404000}, | ||
| 1385 | {0x0000a618, 0x01404501, 0x01404501, 0x01404501, 0x01404501}, | ||
| 1386 | {0x0000a61c, 0x02008802, 0x02008802, 0x02008501, 0x02008501}, | ||
| 1387 | {0x0000a620, 0x0300cc03, 0x0300cc03, 0x0280ca03, 0x0280ca03}, | ||
| 1388 | {0x0000a624, 0x0300cc03, 0x0300cc03, 0x03010c04, 0x03010c04}, | ||
| 1389 | {0x0000a628, 0x0300cc03, 0x0300cc03, 0x04014c04, 0x04014c04}, | ||
| 1390 | {0x0000a62c, 0x03810c03, 0x03810c03, 0x04015005, 0x04015005}, | ||
| 1391 | {0x0000a630, 0x03810e04, 0x03810e04, 0x04015005, 0x04015005}, | ||
| 1392 | {0x0000a634, 0x03810e04, 0x03810e04, 0x04015005, 0x04015005}, | ||
| 1393 | {0x0000a638, 0x03810e04, 0x03810e04, 0x04015005, 0x04015005}, | ||
| 1394 | {0x0000a63c, 0x03810e04, 0x03810e04, 0x04015005, 0x04015005}, | ||
| 1395 | {0x0000b2dc, 0x0380c7fc, 0x0380c7fc, 0x00637800, 0x00637800}, | ||
| 1396 | {0x0000b2e0, 0x0000f800, 0x0000f800, 0x03838000, 0x03838000}, | ||
| 1397 | {0x0000b2e4, 0x03ff0000, 0x03ff0000, 0x03fc0000, 0x03fc0000}, | ||
| 1398 | {0x0000b2e8, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, | ||
| 1399 | {0x0000c2dc, 0x0380c7fc, 0x0380c7fc, 0x00637800, 0x00637800}, | ||
| 1400 | {0x0000c2e0, 0x0000f800, 0x0000f800, 0x03838000, 0x03838000}, | ||
| 1401 | {0x0000c2e4, 0x03ff0000, 0x03ff0000, 0x03fc0000, 0x03fc0000}, | ||
| 1402 | {0x0000c2e8, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, | ||
| 1319 | {0x00016044, 0x012492d4, 0x012492d4, 0x012492d4, 0x012492d4}, | 1403 | {0x00016044, 0x012492d4, 0x012492d4, 0x012492d4, 0x012492d4}, |
| 1320 | {0x00016048, 0x66480001, 0x66480001, 0x66480001, 0x66480001}, | 1404 | {0x00016048, 0x66480001, 0x66480001, 0x66480001, 0x66480001}, |
| 1321 | {0x00016068, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c}, | 1405 | {0x00016068, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c}, |
| @@ -1414,15 +1498,10 @@ static const u32 ar9300_2p2_mac_core[][2] = { | |||
| 1414 | {0x00008144, 0xffffffff}, | 1498 | {0x00008144, 0xffffffff}, |
| 1415 | {0x00008168, 0x00000000}, | 1499 | {0x00008168, 0x00000000}, |
| 1416 | {0x0000816c, 0x00000000}, | 1500 | {0x0000816c, 0x00000000}, |
| 1417 | {0x00008170, 0x18486200}, | ||
| 1418 | {0x00008174, 0x33332210}, | ||
| 1419 | {0x00008178, 0x00000000}, | ||
| 1420 | {0x0000817c, 0x00020000}, | ||
| 1421 | {0x000081c0, 0x00000000}, | 1501 | {0x000081c0, 0x00000000}, |
| 1422 | {0x000081c4, 0x33332210}, | 1502 | {0x000081c4, 0x33332210}, |
| 1423 | {0x000081c8, 0x00000000}, | 1503 | {0x000081c8, 0x00000000}, |
| 1424 | {0x000081cc, 0x00000000}, | 1504 | {0x000081cc, 0x00000000}, |
| 1425 | {0x000081d4, 0x00000000}, | ||
| 1426 | {0x000081ec, 0x00000000}, | 1505 | {0x000081ec, 0x00000000}, |
| 1427 | {0x000081f0, 0x00000000}, | 1506 | {0x000081f0, 0x00000000}, |
| 1428 | {0x000081f4, 0x00000000}, | 1507 | {0x000081f4, 0x00000000}, |
diff --git a/drivers/net/wireless/ath/ath9k/ar9003_paprd.c b/drivers/net/wireless/ath/ath9k/ar9003_paprd.c index 7c38229ba670..716db414c258 100644 --- a/drivers/net/wireless/ath/ath9k/ar9003_paprd.c +++ b/drivers/net/wireless/ath/ath9k/ar9003_paprd.c | |||
| @@ -347,6 +347,10 @@ static bool create_pa_curve(u32 *data_L, u32 *data_U, u32 *pa_table, u16 *gain) | |||
| 347 | (((Y[6] - Y[3]) * 1 << scale_factor) + | 347 | (((Y[6] - Y[3]) * 1 << scale_factor) + |
| 348 | (x_est[6] - x_est[3])) / (x_est[6] - x_est[3]); | 348 | (x_est[6] - x_est[3])) / (x_est[6] - x_est[3]); |
| 349 | 349 | ||
| 350 | /* prevent division by zero */ | ||
| 351 | if (G_fxp == 0) | ||
| 352 | return false; | ||
| 353 | |||
| 350 | Y_intercept = | 354 | Y_intercept = |
| 351 | (G_fxp * (x_est[0] - x_est[3]) + | 355 | (G_fxp * (x_est[0] - x_est[3]) + |
| 352 | (1 << scale_factor)) / (1 << scale_factor) + Y[3]; | 356 | (1 << scale_factor)) / (1 << scale_factor) + Y[3]; |
| @@ -356,14 +360,12 @@ static bool create_pa_curve(u32 *data_L, u32 *data_U, u32 *pa_table, u16 *gain) | |||
| 356 | 360 | ||
| 357 | for (i = 0; i <= 3; i++) { | 361 | for (i = 0; i <= 3; i++) { |
| 358 | y_est[i] = i * 32; | 362 | y_est[i] = i * 32; |
| 359 | |||
| 360 | /* prevent division by zero */ | ||
| 361 | if (G_fxp == 0) | ||
| 362 | return false; | ||
| 363 | |||
| 364 | x_est[i] = ((y_est[i] * 1 << scale_factor) + G_fxp) / G_fxp; | 363 | x_est[i] = ((y_est[i] * 1 << scale_factor) + G_fxp) / G_fxp; |
| 365 | } | 364 | } |
| 366 | 365 | ||
| 366 | if (y_est[max_index] == 0) | ||
| 367 | return false; | ||
| 368 | |||
| 367 | x_est_fxp1_nonlin = | 369 | x_est_fxp1_nonlin = |
| 368 | x_est[max_index] - ((1 << scale_factor) * y_est[max_index] + | 370 | x_est[max_index] - ((1 << scale_factor) * y_est[max_index] + |
| 369 | G_fxp) / G_fxp; | 371 | G_fxp) / G_fxp; |
| @@ -457,6 +459,8 @@ static bool create_pa_curve(u32 *data_L, u32 *data_U, u32 *pa_table, u16 *gain) | |||
| 457 | 459 | ||
| 458 | Q_scale_B = find_proper_scale(find_expn(abs(scale_B)), 10); | 460 | Q_scale_B = find_proper_scale(find_expn(abs(scale_B)), 10); |
| 459 | scale_B = scale_B / (1 << Q_scale_B); | 461 | scale_B = scale_B / (1 << Q_scale_B); |
| 462 | if (scale_B == 0) | ||
| 463 | return false; | ||
| 460 | Q_beta = find_proper_scale(find_expn(abs(beta_raw)), 10); | 464 | Q_beta = find_proper_scale(find_expn(abs(beta_raw)), 10); |
| 461 | Q_alpha = find_proper_scale(find_expn(abs(alpha_raw)), 10); | 465 | Q_alpha = find_proper_scale(find_expn(abs(alpha_raw)), 10); |
| 462 | beta_raw = beta_raw / (1 << Q_beta); | 466 | beta_raw = beta_raw / (1 << Q_beta); |
diff --git a/drivers/net/wireless/ath/ath9k/beacon.c b/drivers/net/wireless/ath/ath9k/beacon.c index 4ed010d4ef96..19891e7d49ae 100644 --- a/drivers/net/wireless/ath/ath9k/beacon.c +++ b/drivers/net/wireless/ath/ath9k/beacon.c | |||
| @@ -370,7 +370,7 @@ void ath_beacon_tasklet(unsigned long data) | |||
| 370 | ath_print(common, ATH_DBG_BSTUCK, | 370 | ath_print(common, ATH_DBG_BSTUCK, |
| 371 | "beacon is officially stuck\n"); | 371 | "beacon is officially stuck\n"); |
| 372 | sc->sc_flags |= SC_OP_TSF_RESET; | 372 | sc->sc_flags |= SC_OP_TSF_RESET; |
| 373 | ath_reset(sc, false); | 373 | ath_reset(sc, true); |
| 374 | } | 374 | } |
| 375 | 375 | ||
| 376 | return; | 376 | return; |
diff --git a/drivers/net/wireless/ath/ath9k/init.c b/drivers/net/wireless/ath/ath9k/init.c index bc6c4df9712c..95b41db0d86b 100644 --- a/drivers/net/wireless/ath/ath9k/init.c +++ b/drivers/net/wireless/ath/ath9k/init.c | |||
| @@ -577,6 +577,7 @@ static int ath9k_init_softc(u16 devid, struct ath_softc *sc, u16 subsysid, | |||
| 577 | common->hw = sc->hw; | 577 | common->hw = sc->hw; |
| 578 | common->priv = sc; | 578 | common->priv = sc; |
| 579 | common->debug_mask = ath9k_debug; | 579 | common->debug_mask = ath9k_debug; |
| 580 | spin_lock_init(&common->cc_lock); | ||
| 580 | 581 | ||
| 581 | spin_lock_init(&sc->wiphy_lock); | 582 | spin_lock_init(&sc->wiphy_lock); |
| 582 | spin_lock_init(&sc->sc_resetlock); | 583 | spin_lock_init(&sc->sc_resetlock); |
diff --git a/drivers/net/wireless/ath/ath9k/main.c b/drivers/net/wireless/ath/ath9k/main.c index 3ff0e476c2b3..c6ec800d7a6b 100644 --- a/drivers/net/wireless/ath/ath9k/main.c +++ b/drivers/net/wireless/ath/ath9k/main.c | |||
| @@ -182,6 +182,9 @@ static void ath_update_survey_stats(struct ath_softc *sc) | |||
| 182 | struct ath_cycle_counters *cc = &common->cc_survey; | 182 | struct ath_cycle_counters *cc = &common->cc_survey; |
| 183 | unsigned int div = common->clockrate * 1000; | 183 | unsigned int div = common->clockrate * 1000; |
| 184 | 184 | ||
| 185 | if (!ah->curchan) | ||
| 186 | return; | ||
| 187 | |||
| 185 | if (ah->power_mode == ATH9K_PM_AWAKE) | 188 | if (ah->power_mode == ATH9K_PM_AWAKE) |
| 186 | ath_hw_cycle_counters_update(common); | 189 | ath_hw_cycle_counters_update(common); |
| 187 | 190 | ||
| @@ -577,7 +580,7 @@ void ath_hw_check(struct work_struct *work) | |||
| 577 | 580 | ||
| 578 | msleep(1); | 581 | msleep(1); |
| 579 | } | 582 | } |
| 580 | ath_reset(sc, false); | 583 | ath_reset(sc, true); |
| 581 | 584 | ||
| 582 | out: | 585 | out: |
| 583 | ath9k_ps_restore(sc); | 586 | ath9k_ps_restore(sc); |
| @@ -595,7 +598,7 @@ void ath9k_tasklet(unsigned long data) | |||
| 595 | ath9k_ps_wakeup(sc); | 598 | ath9k_ps_wakeup(sc); |
| 596 | 599 | ||
| 597 | if (status & ATH9K_INT_FATAL) { | 600 | if (status & ATH9K_INT_FATAL) { |
| 598 | ath_reset(sc, false); | 601 | ath_reset(sc, true); |
| 599 | ath9k_ps_restore(sc); | 602 | ath9k_ps_restore(sc); |
| 600 | return; | 603 | return; |
| 601 | } | 604 | } |
diff --git a/drivers/net/wireless/ath/ath9k/xmit.c b/drivers/net/wireless/ath/ath9k/xmit.c index d077186da870..30ef2dfc1ed2 100644 --- a/drivers/net/wireless/ath/ath9k/xmit.c +++ b/drivers/net/wireless/ath/ath9k/xmit.c | |||
| @@ -673,6 +673,7 @@ static enum ATH_AGGR_STATUS ath_tx_form_aggr(struct ath_softc *sc, | |||
| 673 | u16 aggr_limit = 0, al = 0, bpad = 0, | 673 | u16 aggr_limit = 0, al = 0, bpad = 0, |
| 674 | al_delta, h_baw = tid->baw_size / 2; | 674 | al_delta, h_baw = tid->baw_size / 2; |
| 675 | enum ATH_AGGR_STATUS status = ATH_AGGR_DONE; | 675 | enum ATH_AGGR_STATUS status = ATH_AGGR_DONE; |
| 676 | struct ieee80211_tx_info *tx_info; | ||
| 676 | 677 | ||
| 677 | bf_first = list_first_entry(&tid->buf_q, struct ath_buf, list); | 678 | bf_first = list_first_entry(&tid->buf_q, struct ath_buf, list); |
| 678 | 679 | ||
| @@ -699,6 +700,11 @@ static enum ATH_AGGR_STATUS ath_tx_form_aggr(struct ath_softc *sc, | |||
| 699 | break; | 700 | break; |
| 700 | } | 701 | } |
| 701 | 702 | ||
| 703 | tx_info = IEEE80211_SKB_CB(bf->bf_mpdu); | ||
| 704 | if (nframes && ((tx_info->flags & IEEE80211_TX_CTL_RATE_CTRL_PROBE) || | ||
| 705 | !(tx_info->control.rates[0].flags & IEEE80211_TX_RC_MCS))) | ||
| 706 | break; | ||
| 707 | |||
| 702 | /* do not exceed subframe limit */ | 708 | /* do not exceed subframe limit */ |
| 703 | if (nframes >= min((int)h_baw, ATH_AMPDU_SUBFRAME_DEFAULT)) { | 709 | if (nframes >= min((int)h_baw, ATH_AMPDU_SUBFRAME_DEFAULT)) { |
| 704 | status = ATH_AGGR_LIMITED; | 710 | status = ATH_AGGR_LIMITED; |
| @@ -2157,7 +2163,7 @@ static void ath_tx_complete_poll_work(struct work_struct *work) | |||
| 2157 | ath_print(ath9k_hw_common(sc->sc_ah), ATH_DBG_RESET, | 2163 | ath_print(ath9k_hw_common(sc->sc_ah), ATH_DBG_RESET, |
| 2158 | "tx hung, resetting the chip\n"); | 2164 | "tx hung, resetting the chip\n"); |
| 2159 | ath9k_ps_wakeup(sc); | 2165 | ath9k_ps_wakeup(sc); |
| 2160 | ath_reset(sc, false); | 2166 | ath_reset(sc, true); |
| 2161 | ath9k_ps_restore(sc); | 2167 | ath9k_ps_restore(sc); |
| 2162 | } | 2168 | } |
| 2163 | 2169 | ||
diff --git a/drivers/net/wireless/ath/carl9170/cmd.h b/drivers/net/wireless/ath/carl9170/cmd.h index f78728c38294..568174c71b94 100644 --- a/drivers/net/wireless/ath/carl9170/cmd.h +++ b/drivers/net/wireless/ath/carl9170/cmd.h | |||
| @@ -116,8 +116,9 @@ __regwrite_out : \ | |||
| 116 | } while (0); | 116 | } while (0); |
| 117 | 117 | ||
| 118 | 118 | ||
| 119 | #define carl9170_async_get_buf() \ | 119 | #define carl9170_async_regwrite_get_buf() \ |
| 120 | do { \ | 120 | do { \ |
| 121 | __nreg = 0; \ | ||
| 121 | __cmd = carl9170_cmd_buf(__carl, CARL9170_CMD_WREG_ASYNC, \ | 122 | __cmd = carl9170_cmd_buf(__carl, CARL9170_CMD_WREG_ASYNC, \ |
| 122 | CARL9170_MAX_CMD_PAYLOAD_LEN); \ | 123 | CARL9170_MAX_CMD_PAYLOAD_LEN); \ |
| 123 | if (__cmd == NULL) { \ | 124 | if (__cmd == NULL) { \ |
| @@ -128,38 +129,42 @@ do { \ | |||
| 128 | 129 | ||
| 129 | #define carl9170_async_regwrite_begin(carl) \ | 130 | #define carl9170_async_regwrite_begin(carl) \ |
| 130 | do { \ | 131 | do { \ |
| 131 | int __nreg = 0, __err = 0; \ | ||
| 132 | struct ar9170 *__carl = carl; \ | 132 | struct ar9170 *__carl = carl; \ |
| 133 | struct carl9170_cmd *__cmd; \ | 133 | struct carl9170_cmd *__cmd; \ |
| 134 | carl9170_async_get_buf(); \ | 134 | unsigned int __nreg; \ |
| 135 | int __err = 0; \ | ||
| 136 | carl9170_async_regwrite_get_buf(); \ | ||
| 137 | |||
| 138 | #define carl9170_async_regwrite_flush() \ | ||
| 139 | do { \ | ||
| 140 | if (__cmd == NULL || __nreg == 0) \ | ||
| 141 | break; \ | ||
| 142 | \ | ||
| 143 | if (IS_ACCEPTING_CMD(__carl) && __nreg) { \ | ||
| 144 | __cmd->hdr.len = 8 * __nreg; \ | ||
| 145 | __err = __carl9170_exec_cmd(__carl, __cmd, true); \ | ||
| 146 | __cmd = NULL; \ | ||
| 147 | break; \ | ||
| 148 | } \ | ||
| 149 | goto __async_regwrite_out; \ | ||
| 150 | } while (0) | ||
| 135 | 151 | ||
| 136 | #define carl9170_async_regwrite(r, v) do { \ | 152 | #define carl9170_async_regwrite(r, v) do { \ |
| 153 | if (__cmd == NULL) \ | ||
| 154 | carl9170_async_regwrite_get_buf(); \ | ||
| 137 | __cmd->wreg.regs[__nreg].addr = cpu_to_le32(r); \ | 155 | __cmd->wreg.regs[__nreg].addr = cpu_to_le32(r); \ |
| 138 | __cmd->wreg.regs[__nreg].val = cpu_to_le32(v); \ | 156 | __cmd->wreg.regs[__nreg].val = cpu_to_le32(v); \ |
| 139 | __nreg++; \ | 157 | __nreg++; \ |
| 140 | if ((__nreg >= PAYLOAD_MAX/2)) { \ | 158 | if ((__nreg >= PAYLOAD_MAX / 2)) \ |
| 141 | if (IS_ACCEPTING_CMD(__carl)) { \ | 159 | carl9170_async_regwrite_flush(); \ |
| 142 | __cmd->hdr.len = 8 * __nreg; \ | ||
| 143 | __err = __carl9170_exec_cmd(__carl, __cmd, true);\ | ||
| 144 | __cmd = NULL; \ | ||
| 145 | carl9170_async_get_buf(); \ | ||
| 146 | } else { \ | ||
| 147 | goto __async_regwrite_out; \ | ||
| 148 | } \ | ||
| 149 | __nreg = 0; \ | ||
| 150 | if (__err) \ | ||
| 151 | goto __async_regwrite_out; \ | ||
| 152 | } \ | ||
| 153 | } while (0) | 160 | } while (0) |
| 154 | 161 | ||
| 155 | #define carl9170_async_regwrite_finish() \ | 162 | #define carl9170_async_regwrite_finish() do { \ |
| 156 | __async_regwrite_out : \ | 163 | __async_regwrite_out : \ |
| 157 | if (__err == 0 && __nreg) { \ | 164 | if (__cmd != NULL && __err == 0) \ |
| 158 | __cmd->hdr.len = 8 * __nreg; \ | 165 | carl9170_async_regwrite_flush(); \ |
| 159 | if (IS_ACCEPTING_CMD(__carl)) \ | 166 | kfree(__cmd); \ |
| 160 | __err = __carl9170_exec_cmd(__carl, __cmd, true);\ | 167 | } while (0) \ |
| 161 | __nreg = 0; \ | ||
| 162 | } | ||
| 163 | 168 | ||
| 164 | #define carl9170_async_regwrite_result() \ | 169 | #define carl9170_async_regwrite_result() \ |
| 165 | __err; \ | 170 | __err; \ |
diff --git a/drivers/net/wireless/ath/carl9170/main.c b/drivers/net/wireless/ath/carl9170/main.c index 3cc99f3f7ab5..980ae70ea424 100644 --- a/drivers/net/wireless/ath/carl9170/main.c +++ b/drivers/net/wireless/ath/carl9170/main.c | |||
| @@ -639,8 +639,8 @@ init: | |||
| 639 | if (err) | 639 | if (err) |
| 640 | goto unlock; | 640 | goto unlock; |
| 641 | } else { | 641 | } else { |
| 642 | err = carl9170_mod_virtual_mac(ar, vif_id, vif->addr); | ||
| 643 | rcu_read_unlock(); | 642 | rcu_read_unlock(); |
| 643 | err = carl9170_mod_virtual_mac(ar, vif_id, vif->addr); | ||
| 644 | 644 | ||
| 645 | if (err) | 645 | if (err) |
| 646 | goto unlock; | 646 | goto unlock; |
diff --git a/drivers/net/wireless/ath/carl9170/usb.c b/drivers/net/wireless/ath/carl9170/usb.c index c7f6193934ea..d8607f4c144d 100644 --- a/drivers/net/wireless/ath/carl9170/usb.c +++ b/drivers/net/wireless/ath/carl9170/usb.c | |||
| @@ -591,16 +591,23 @@ int __carl9170_exec_cmd(struct ar9170 *ar, struct carl9170_cmd *cmd, | |||
| 591 | const bool free_buf) | 591 | const bool free_buf) |
| 592 | { | 592 | { |
| 593 | struct urb *urb; | 593 | struct urb *urb; |
| 594 | int err = 0; | ||
| 594 | 595 | ||
| 595 | if (!IS_INITIALIZED(ar)) | 596 | if (!IS_INITIALIZED(ar)) { |
| 596 | return -EPERM; | 597 | err = -EPERM; |
| 598 | goto err_free; | ||
| 599 | } | ||
| 597 | 600 | ||
| 598 | if (WARN_ON(cmd->hdr.len > CARL9170_MAX_CMD_LEN - 4)) | 601 | if (WARN_ON(cmd->hdr.len > CARL9170_MAX_CMD_LEN - 4)) { |
| 599 | return -EINVAL; | 602 | err = -EINVAL; |
| 603 | goto err_free; | ||
| 604 | } | ||
| 600 | 605 | ||
| 601 | urb = usb_alloc_urb(0, GFP_ATOMIC); | 606 | urb = usb_alloc_urb(0, GFP_ATOMIC); |
| 602 | if (!urb) | 607 | if (!urb) { |
| 603 | return -ENOMEM; | 608 | err = -ENOMEM; |
| 609 | goto err_free; | ||
| 610 | } | ||
| 604 | 611 | ||
| 605 | usb_fill_int_urb(urb, ar->udev, usb_sndintpipe(ar->udev, | 612 | usb_fill_int_urb(urb, ar->udev, usb_sndintpipe(ar->udev, |
| 606 | AR9170_USB_EP_CMD), cmd, cmd->hdr.len + 4, | 613 | AR9170_USB_EP_CMD), cmd, cmd->hdr.len + 4, |
| @@ -613,6 +620,12 @@ int __carl9170_exec_cmd(struct ar9170 *ar, struct carl9170_cmd *cmd, | |||
| 613 | usb_free_urb(urb); | 620 | usb_free_urb(urb); |
| 614 | 621 | ||
| 615 | return carl9170_usb_submit_cmd_urb(ar); | 622 | return carl9170_usb_submit_cmd_urb(ar); |
| 623 | |||
| 624 | err_free: | ||
| 625 | if (free_buf) | ||
| 626 | kfree(cmd); | ||
| 627 | |||
| 628 | return err; | ||
| 616 | } | 629 | } |
| 617 | 630 | ||
| 618 | int carl9170_exec_cmd(struct ar9170 *ar, const enum carl9170_cmd_oids cmd, | 631 | int carl9170_exec_cmd(struct ar9170 *ar, const enum carl9170_cmd_oids cmd, |
diff --git a/drivers/net/wireless/b43/phy_n.c b/drivers/net/wireless/b43/phy_n.c index dfec5496055e..e0f2d122e124 100644 --- a/drivers/net/wireless/b43/phy_n.c +++ b/drivers/net/wireless/b43/phy_n.c | |||
| @@ -2964,7 +2964,7 @@ static int b43_nphy_rev2_cal_rx_iq(struct b43_wldev *dev, | |||
| 2964 | (2 - i)); | 2964 | (2 - i)); |
| 2965 | } | 2965 | } |
| 2966 | 2966 | ||
| 2967 | for (j = 0; i < 4; j++) { | 2967 | for (j = 0; j < 4; j++) { |
| 2968 | if (j < 3) { | 2968 | if (j < 3) { |
| 2969 | cur_lna = lna[j]; | 2969 | cur_lna = lna[j]; |
| 2970 | cur_hpf1 = hpf1[j]; | 2970 | cur_hpf1 = hpf1[j]; |
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-tx.c b/drivers/net/wireless/iwlwifi/iwl-agn-tx.c index db57aea629d9..2b078a995729 100644 --- a/drivers/net/wireless/iwlwifi/iwl-agn-tx.c +++ b/drivers/net/wireless/iwlwifi/iwl-agn-tx.c | |||
| @@ -1227,7 +1227,8 @@ static int iwlagn_tx_status_reply_compressed_ba(struct iwl_priv *priv, | |||
| 1227 | struct ieee80211_tx_info *info; | 1227 | struct ieee80211_tx_info *info; |
| 1228 | 1228 | ||
| 1229 | if (unlikely(!agg->wait_for_ba)) { | 1229 | if (unlikely(!agg->wait_for_ba)) { |
| 1230 | IWL_ERR(priv, "Received BA when not expected\n"); | 1230 | if (unlikely(ba_resp->bitmap)) |
| 1231 | IWL_ERR(priv, "Received BA when not expected\n"); | ||
| 1231 | return -EINVAL; | 1232 | return -EINVAL; |
| 1232 | } | 1233 | } |
| 1233 | 1234 | ||
diff --git a/drivers/net/wireless/wl1251/Makefile b/drivers/net/wireless/wl1251/Makefile index 4fe246824db3..58b4f935a3f6 100644 --- a/drivers/net/wireless/wl1251/Makefile +++ b/drivers/net/wireless/wl1251/Makefile | |||
| @@ -1,6 +1,8 @@ | |||
| 1 | wl1251-objs = main.o event.o tx.o rx.o ps.o cmd.o \ | 1 | wl1251-objs = main.o event.o tx.o rx.o ps.o cmd.o \ |
| 2 | acx.o boot.o init.o debugfs.o io.o | 2 | acx.o boot.o init.o debugfs.o io.o |
| 3 | wl1251_spi-objs += spi.o | ||
| 4 | wl1251_sdio-objs += sdio.o | ||
| 3 | 5 | ||
| 4 | obj-$(CONFIG_WL1251) += wl1251.o | 6 | obj-$(CONFIG_WL1251) += wl1251.o |
| 5 | obj-$(CONFIG_WL1251_SPI) += spi.o | 7 | obj-$(CONFIG_WL1251_SPI) += wl1251_spi.o |
| 6 | obj-$(CONFIG_WL1251_SDIO) += sdio.o | 8 | obj-$(CONFIG_WL1251_SDIO) += wl1251_sdio.o |
diff --git a/net/mac80211/ibss.c b/net/mac80211/ibss.c index ff60c022f51d..239c4836a946 100644 --- a/net/mac80211/ibss.c +++ b/net/mac80211/ibss.c | |||
| @@ -456,6 +456,7 @@ struct sta_info *ieee80211_ibss_add_sta(struct ieee80211_sub_if_data *sdata, | |||
| 456 | if (!sta) | 456 | if (!sta) |
| 457 | return NULL; | 457 | return NULL; |
| 458 | 458 | ||
| 459 | sta->last_rx = jiffies; | ||
| 459 | set_sta_flags(sta, WLAN_STA_AUTHORIZED); | 460 | set_sta_flags(sta, WLAN_STA_AUTHORIZED); |
| 460 | 461 | ||
| 461 | /* make sure mandatory rates are always added */ | 462 | /* make sure mandatory rates are always added */ |
diff --git a/net/mac80211/main.c b/net/mac80211/main.c index 22bc42b18991..6b322fa681f5 100644 --- a/net/mac80211/main.c +++ b/net/mac80211/main.c | |||
| @@ -748,7 +748,7 @@ int ieee80211_register_hw(struct ieee80211_hw *hw) | |||
| 748 | hw->queues = IEEE80211_MAX_QUEUES; | 748 | hw->queues = IEEE80211_MAX_QUEUES; |
| 749 | 749 | ||
| 750 | local->workqueue = | 750 | local->workqueue = |
| 751 | create_singlethread_workqueue(wiphy_name(local->hw.wiphy)); | 751 | alloc_ordered_workqueue(wiphy_name(local->hw.wiphy), 0); |
| 752 | if (!local->workqueue) { | 752 | if (!local->workqueue) { |
| 753 | result = -ENOMEM; | 753 | result = -ENOMEM; |
| 754 | goto fail_workqueue; | 754 | goto fail_workqueue; |
| @@ -962,12 +962,6 @@ static void __exit ieee80211_exit(void) | |||
| 962 | rc80211_minstrel_ht_exit(); | 962 | rc80211_minstrel_ht_exit(); |
| 963 | rc80211_minstrel_exit(); | 963 | rc80211_minstrel_exit(); |
| 964 | 964 | ||
| 965 | /* | ||
| 966 | * For key todo, it'll be empty by now but the work | ||
| 967 | * might still be scheduled. | ||
| 968 | */ | ||
| 969 | flush_scheduled_work(); | ||
| 970 | |||
| 971 | if (mesh_allocated) | 965 | if (mesh_allocated) |
| 972 | ieee80211s_stop(); | 966 | ieee80211s_stop(); |
| 973 | 967 | ||
diff --git a/net/mac80211/rate.c b/net/mac80211/rate.c index 809cf230d251..33f76993da08 100644 --- a/net/mac80211/rate.c +++ b/net/mac80211/rate.c | |||
| @@ -329,6 +329,9 @@ void rate_control_get_rate(struct ieee80211_sub_if_data *sdata, | |||
| 329 | * if needed. | 329 | * if needed. |
| 330 | */ | 330 | */ |
| 331 | for (i = 0; i < IEEE80211_TX_MAX_RATES; i++) { | 331 | for (i = 0; i < IEEE80211_TX_MAX_RATES; i++) { |
| 332 | /* Skip invalid rates */ | ||
| 333 | if (info->control.rates[i].idx < 0) | ||
| 334 | break; | ||
| 332 | /* Rate masking supports only legacy rates for now */ | 335 | /* Rate masking supports only legacy rates for now */ |
| 333 | if (info->control.rates[i].flags & IEEE80211_TX_RC_MCS) | 336 | if (info->control.rates[i].flags & IEEE80211_TX_RC_MCS) |
| 334 | continue; | 337 | continue; |
diff --git a/net/wireless/reg.c b/net/wireless/reg.c index d14bbf960c18..4b9f8912526c 100644 --- a/net/wireless/reg.c +++ b/net/wireless/reg.c | |||
| @@ -1167,7 +1167,7 @@ static int ignore_request(struct wiphy *wiphy, | |||
| 1167 | return 0; | 1167 | return 0; |
| 1168 | return -EALREADY; | 1168 | return -EALREADY; |
| 1169 | } | 1169 | } |
| 1170 | return REG_INTERSECT; | 1170 | return 0; |
| 1171 | case NL80211_REGDOM_SET_BY_DRIVER: | 1171 | case NL80211_REGDOM_SET_BY_DRIVER: |
| 1172 | if (last_request->initiator == NL80211_REGDOM_SET_BY_CORE) { | 1172 | if (last_request->initiator == NL80211_REGDOM_SET_BY_CORE) { |
| 1173 | if (regdom_changes(pending_request->alpha2)) | 1173 | if (regdom_changes(pending_request->alpha2)) |
