diff options
| author | David S. Miller <davem@davemloft.net> | 2011-02-01 16:08:59 -0500 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2011-02-01 16:08:59 -0500 |
| commit | 2ba5e1feaab2762cdf45b490e3f342fedb33f57b (patch) | |
| tree | 99467f62d8554957aa0938f8065d289db9d46ea5 | |
| parent | 62175c75fb11ac23fca5cd5fe0baaeb8016a6c78 (diff) | |
| parent | 479600777bb588724d044815415f7d708d06644b (diff) | |
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6
| -rw-r--r-- | MAINTAINERS | 6 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/ath5k/dma.c | 4 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/ath5k/pcu.c | 4 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/ath9k/ar9002_hw.c | 3 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/ath9k/htc_drv_init.c | 3 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/ath9k/htc_drv_main.c | 21 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/ath9k/init.c | 7 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/ath9k/main.c | 19 | ||||
| -rw-r--r-- | drivers/net/wireless/rtlwifi/efuse.c | 40 | ||||
| -rw-r--r-- | drivers/net/wireless/wl12xx/spi.c | 3 |
10 files changed, 61 insertions, 49 deletions
diff --git a/MAINTAINERS b/MAINTAINERS index 9d12977b6ba..95918417d94 100644 --- a/MAINTAINERS +++ b/MAINTAINERS | |||
| @@ -6767,12 +6767,12 @@ S: Maintained | |||
| 6767 | F: drivers/net/wireless/wl1251/* | 6767 | F: drivers/net/wireless/wl1251/* |
| 6768 | 6768 | ||
| 6769 | WL1271 WIRELESS DRIVER | 6769 | WL1271 WIRELESS DRIVER |
| 6770 | M: Luciano Coelho <luciano.coelho@nokia.com> | 6770 | M: Luciano Coelho <coelho@ti.com> |
| 6771 | L: linux-wireless@vger.kernel.org | 6771 | L: linux-wireless@vger.kernel.org |
| 6772 | W: http://wireless.kernel.org | 6772 | W: http://wireless.kernel.org/en/users/Drivers/wl12xx |
| 6773 | T: git git://git.kernel.org/pub/scm/linux/kernel/git/luca/wl12xx.git | 6773 | T: git git://git.kernel.org/pub/scm/linux/kernel/git/luca/wl12xx.git |
| 6774 | S: Maintained | 6774 | S: Maintained |
| 6775 | F: drivers/net/wireless/wl12xx/wl1271* | 6775 | F: drivers/net/wireless/wl12xx/ |
| 6776 | F: include/linux/wl12xx.h | 6776 | F: include/linux/wl12xx.h |
| 6777 | 6777 | ||
| 6778 | WL3501 WIRELESS PCMCIA CARD DRIVER | 6778 | WL3501 WIRELESS PCMCIA CARD DRIVER |
diff --git a/drivers/net/wireless/ath/ath5k/dma.c b/drivers/net/wireless/ath/ath5k/dma.c index 0064be7ce5c..21091c26a9a 100644 --- a/drivers/net/wireless/ath/ath5k/dma.c +++ b/drivers/net/wireless/ath/ath5k/dma.c | |||
| @@ -838,9 +838,9 @@ int ath5k_hw_dma_stop(struct ath5k_hw *ah) | |||
| 838 | for (i = 0; i < qmax; i++) { | 838 | for (i = 0; i < qmax; i++) { |
| 839 | err = ath5k_hw_stop_tx_dma(ah, i); | 839 | err = ath5k_hw_stop_tx_dma(ah, i); |
| 840 | /* -EINVAL -> queue inactive */ | 840 | /* -EINVAL -> queue inactive */ |
| 841 | if (err != -EINVAL) | 841 | if (err && err != -EINVAL) |
| 842 | return err; | 842 | return err; |
| 843 | } | 843 | } |
| 844 | 844 | ||
| 845 | return err; | 845 | return 0; |
| 846 | } | 846 | } |
diff --git a/drivers/net/wireless/ath/ath5k/pcu.c b/drivers/net/wireless/ath/ath5k/pcu.c index e5f2b96a4c6..a702817daf7 100644 --- a/drivers/net/wireless/ath/ath5k/pcu.c +++ b/drivers/net/wireless/ath/ath5k/pcu.c | |||
| @@ -86,7 +86,7 @@ int ath5k_hw_get_frame_duration(struct ath5k_hw *ah, | |||
| 86 | if (!ah->ah_bwmode) { | 86 | if (!ah->ah_bwmode) { |
| 87 | dur = ieee80211_generic_frame_duration(sc->hw, | 87 | dur = ieee80211_generic_frame_duration(sc->hw, |
| 88 | NULL, len, rate); | 88 | NULL, len, rate); |
| 89 | return dur; | 89 | return le16_to_cpu(dur); |
| 90 | } | 90 | } |
| 91 | 91 | ||
| 92 | bitrate = rate->bitrate; | 92 | bitrate = rate->bitrate; |
| @@ -265,8 +265,6 @@ static inline void ath5k_hw_write_rate_duration(struct ath5k_hw *ah) | |||
| 265 | * what rate we should choose to TX ACKs. */ | 265 | * what rate we should choose to TX ACKs. */ |
| 266 | tx_time = ath5k_hw_get_frame_duration(ah, 10, rate); | 266 | tx_time = ath5k_hw_get_frame_duration(ah, 10, rate); |
| 267 | 267 | ||
| 268 | tx_time = le16_to_cpu(tx_time); | ||
| 269 | |||
| 270 | ath5k_hw_reg_write(ah, tx_time, reg); | 268 | ath5k_hw_reg_write(ah, tx_time, reg); |
| 271 | 269 | ||
| 272 | if (!(rate->flags & IEEE80211_RATE_SHORT_PREAMBLE)) | 270 | if (!(rate->flags & IEEE80211_RATE_SHORT_PREAMBLE)) |
diff --git a/drivers/net/wireless/ath/ath9k/ar9002_hw.c b/drivers/net/wireless/ath/ath9k/ar9002_hw.c index f8a7771faee..f44c84ab5dc 100644 --- a/drivers/net/wireless/ath/ath9k/ar9002_hw.c +++ b/drivers/net/wireless/ath/ath9k/ar9002_hw.c | |||
| @@ -426,9 +426,8 @@ static void ar9002_hw_configpcipowersave(struct ath_hw *ah, | |||
| 426 | } | 426 | } |
| 427 | 427 | ||
| 428 | /* WAR for ASPM system hang */ | 428 | /* WAR for ASPM system hang */ |
| 429 | if (AR_SREV_9280(ah) || AR_SREV_9285(ah) || AR_SREV_9287(ah)) { | 429 | if (AR_SREV_9285(ah) || AR_SREV_9287(ah)) |
| 430 | val |= (AR_WA_BIT6 | AR_WA_BIT7); | 430 | val |= (AR_WA_BIT6 | AR_WA_BIT7); |
| 431 | } | ||
| 432 | 431 | ||
| 433 | if (AR_SREV_9285E_20(ah)) | 432 | if (AR_SREV_9285E_20(ah)) |
| 434 | val |= AR_WA_BIT23; | 433 | val |= AR_WA_BIT23; |
diff --git a/drivers/net/wireless/ath/ath9k/htc_drv_init.c b/drivers/net/wireless/ath/ath9k/htc_drv_init.c index 38433f9bfe5..0352f0994ca 100644 --- a/drivers/net/wireless/ath/ath9k/htc_drv_init.c +++ b/drivers/net/wireless/ath/ath9k/htc_drv_init.c | |||
| @@ -142,9 +142,6 @@ static void ath9k_deinit_priv(struct ath9k_htc_priv *priv) | |||
| 142 | { | 142 | { |
| 143 | ath9k_htc_exit_debug(priv->ah); | 143 | ath9k_htc_exit_debug(priv->ah); |
| 144 | ath9k_hw_deinit(priv->ah); | 144 | ath9k_hw_deinit(priv->ah); |
| 145 | tasklet_kill(&priv->swba_tasklet); | ||
| 146 | tasklet_kill(&priv->rx_tasklet); | ||
| 147 | tasklet_kill(&priv->tx_tasklet); | ||
| 148 | kfree(priv->ah); | 145 | kfree(priv->ah); |
| 149 | priv->ah = NULL; | 146 | priv->ah = NULL; |
| 150 | } | 147 | } |
diff --git a/drivers/net/wireless/ath/ath9k/htc_drv_main.c b/drivers/net/wireless/ath/ath9k/htc_drv_main.c index f4d576bc3cc..6bb59958f71 100644 --- a/drivers/net/wireless/ath/ath9k/htc_drv_main.c +++ b/drivers/net/wireless/ath/ath9k/htc_drv_main.c | |||
| @@ -1025,12 +1025,6 @@ static void ath9k_htc_stop(struct ieee80211_hw *hw) | |||
| 1025 | int ret = 0; | 1025 | int ret = 0; |
| 1026 | u8 cmd_rsp; | 1026 | u8 cmd_rsp; |
| 1027 | 1027 | ||
| 1028 | /* Cancel all the running timers/work .. */ | ||
| 1029 | cancel_work_sync(&priv->fatal_work); | ||
| 1030 | cancel_work_sync(&priv->ps_work); | ||
| 1031 | cancel_delayed_work_sync(&priv->ath9k_led_blink_work); | ||
| 1032 | ath9k_led_stop_brightness(priv); | ||
| 1033 | |||
| 1034 | mutex_lock(&priv->mutex); | 1028 | mutex_lock(&priv->mutex); |
| 1035 | 1029 | ||
| 1036 | if (priv->op_flags & OP_INVALID) { | 1030 | if (priv->op_flags & OP_INVALID) { |
| @@ -1044,8 +1038,23 @@ static void ath9k_htc_stop(struct ieee80211_hw *hw) | |||
| 1044 | WMI_CMD(WMI_DISABLE_INTR_CMDID); | 1038 | WMI_CMD(WMI_DISABLE_INTR_CMDID); |
| 1045 | WMI_CMD(WMI_DRAIN_TXQ_ALL_CMDID); | 1039 | WMI_CMD(WMI_DRAIN_TXQ_ALL_CMDID); |
| 1046 | WMI_CMD(WMI_STOP_RECV_CMDID); | 1040 | WMI_CMD(WMI_STOP_RECV_CMDID); |
| 1041 | |||
| 1042 | tasklet_kill(&priv->swba_tasklet); | ||
| 1043 | tasklet_kill(&priv->rx_tasklet); | ||
| 1044 | tasklet_kill(&priv->tx_tasklet); | ||
| 1045 | |||
| 1047 | skb_queue_purge(&priv->tx_queue); | 1046 | skb_queue_purge(&priv->tx_queue); |
| 1048 | 1047 | ||
| 1048 | mutex_unlock(&priv->mutex); | ||
| 1049 | |||
| 1050 | /* Cancel all the running timers/work .. */ | ||
| 1051 | cancel_work_sync(&priv->fatal_work); | ||
| 1052 | cancel_work_sync(&priv->ps_work); | ||
| 1053 | cancel_delayed_work_sync(&priv->ath9k_led_blink_work); | ||
| 1054 | ath9k_led_stop_brightness(priv); | ||
| 1055 | |||
| 1056 | mutex_lock(&priv->mutex); | ||
| 1057 | |||
| 1049 | /* Remove monitor interface here */ | 1058 | /* Remove monitor interface here */ |
| 1050 | if (ah->opmode == NL80211_IFTYPE_MONITOR) { | 1059 | if (ah->opmode == NL80211_IFTYPE_MONITOR) { |
| 1051 | if (ath9k_htc_remove_monitor_interface(priv)) | 1060 | if (ath9k_htc_remove_monitor_interface(priv)) |
diff --git a/drivers/net/wireless/ath/ath9k/init.c b/drivers/net/wireless/ath/ath9k/init.c index 767d8b86f1e..087a6a95edd 100644 --- a/drivers/net/wireless/ath/ath9k/init.c +++ b/drivers/net/wireless/ath/ath9k/init.c | |||
| @@ -598,8 +598,6 @@ err_btcoex: | |||
| 598 | err_queues: | 598 | err_queues: |
| 599 | ath9k_hw_deinit(ah); | 599 | ath9k_hw_deinit(ah); |
| 600 | err_hw: | 600 | err_hw: |
| 601 | tasklet_kill(&sc->intr_tq); | ||
| 602 | tasklet_kill(&sc->bcon_tasklet); | ||
| 603 | 601 | ||
| 604 | kfree(ah); | 602 | kfree(ah); |
| 605 | sc->sc_ah = NULL; | 603 | sc->sc_ah = NULL; |
| @@ -807,9 +805,6 @@ static void ath9k_deinit_softc(struct ath_softc *sc) | |||
| 807 | 805 | ||
| 808 | ath9k_hw_deinit(sc->sc_ah); | 806 | ath9k_hw_deinit(sc->sc_ah); |
| 809 | 807 | ||
| 810 | tasklet_kill(&sc->intr_tq); | ||
| 811 | tasklet_kill(&sc->bcon_tasklet); | ||
| 812 | |||
| 813 | kfree(sc->sc_ah); | 808 | kfree(sc->sc_ah); |
| 814 | sc->sc_ah = NULL; | 809 | sc->sc_ah = NULL; |
| 815 | } | 810 | } |
| @@ -824,6 +819,8 @@ void ath9k_deinit_device(struct ath_softc *sc) | |||
| 824 | wiphy_rfkill_stop_polling(sc->hw->wiphy); | 819 | wiphy_rfkill_stop_polling(sc->hw->wiphy); |
| 825 | ath_deinit_leds(sc); | 820 | ath_deinit_leds(sc); |
| 826 | 821 | ||
| 822 | ath9k_ps_restore(sc); | ||
| 823 | |||
| 827 | for (i = 0; i < sc->num_sec_wiphy; i++) { | 824 | for (i = 0; i < sc->num_sec_wiphy; i++) { |
| 828 | struct ath_wiphy *aphy = sc->sec_wiphy[i]; | 825 | struct ath_wiphy *aphy = sc->sec_wiphy[i]; |
| 829 | if (aphy == NULL) | 826 | if (aphy == NULL) |
diff --git a/drivers/net/wireless/ath/ath9k/main.c b/drivers/net/wireless/ath/ath9k/main.c index c79c97be6cd..9040c2ff190 100644 --- a/drivers/net/wireless/ath/ath9k/main.c +++ b/drivers/net/wireless/ath/ath9k/main.c | |||
| @@ -325,6 +325,8 @@ static bool ath_paprd_send_frame(struct ath_softc *sc, struct sk_buff *skb, int | |||
| 325 | { | 325 | { |
| 326 | struct ieee80211_hw *hw = sc->hw; | 326 | struct ieee80211_hw *hw = sc->hw; |
| 327 | struct ieee80211_tx_info *tx_info = IEEE80211_SKB_CB(skb); | 327 | struct ieee80211_tx_info *tx_info = IEEE80211_SKB_CB(skb); |
| 328 | struct ath_hw *ah = sc->sc_ah; | ||
| 329 | struct ath_common *common = ath9k_hw_common(ah); | ||
| 328 | struct ath_tx_control txctl; | 330 | struct ath_tx_control txctl; |
| 329 | int time_left; | 331 | int time_left; |
| 330 | 332 | ||
| @@ -342,8 +344,12 @@ static bool ath_paprd_send_frame(struct ath_softc *sc, struct sk_buff *skb, int | |||
| 342 | init_completion(&sc->paprd_complete); | 344 | init_completion(&sc->paprd_complete); |
| 343 | sc->paprd_pending = true; | 345 | sc->paprd_pending = true; |
| 344 | txctl.paprd = BIT(chain); | 346 | txctl.paprd = BIT(chain); |
| 345 | if (ath_tx_start(hw, skb, &txctl) != 0) | 347 | |
| 348 | if (ath_tx_start(hw, skb, &txctl) != 0) { | ||
| 349 | ath_dbg(common, ATH_DBG_XMIT, "PAPRD TX failed\n"); | ||
| 350 | dev_kfree_skb_any(skb); | ||
| 346 | return false; | 351 | return false; |
| 352 | } | ||
| 347 | 353 | ||
| 348 | time_left = wait_for_completion_timeout(&sc->paprd_complete, | 354 | time_left = wait_for_completion_timeout(&sc->paprd_complete, |
| 349 | msecs_to_jiffies(ATH_PAPRD_TIMEOUT)); | 355 | msecs_to_jiffies(ATH_PAPRD_TIMEOUT)); |
| @@ -953,8 +959,6 @@ void ath_radio_disable(struct ath_softc *sc, struct ieee80211_hw *hw) | |||
| 953 | 959 | ||
| 954 | spin_unlock_bh(&sc->sc_pcu_lock); | 960 | spin_unlock_bh(&sc->sc_pcu_lock); |
| 955 | ath9k_ps_restore(sc); | 961 | ath9k_ps_restore(sc); |
| 956 | |||
| 957 | ath9k_setpower(sc, ATH9K_PM_FULL_SLEEP); | ||
| 958 | } | 962 | } |
| 959 | 963 | ||
| 960 | int ath_reset(struct ath_softc *sc, bool retry_tx) | 964 | int ath_reset(struct ath_softc *sc, bool retry_tx) |
| @@ -1309,6 +1313,9 @@ static void ath9k_stop(struct ieee80211_hw *hw) | |||
| 1309 | 1313 | ||
| 1310 | spin_lock_bh(&sc->sc_pcu_lock); | 1314 | spin_lock_bh(&sc->sc_pcu_lock); |
| 1311 | 1315 | ||
| 1316 | /* prevent tasklets to enable interrupts once we disable them */ | ||
| 1317 | ah->imask &= ~ATH9K_INT_GLOBAL; | ||
| 1318 | |||
| 1312 | /* make sure h/w will not generate any interrupt | 1319 | /* make sure h/w will not generate any interrupt |
| 1313 | * before setting the invalid flag. */ | 1320 | * before setting the invalid flag. */ |
| 1314 | ath9k_hw_disable_interrupts(ah); | 1321 | ath9k_hw_disable_interrupts(ah); |
| @@ -1326,6 +1333,12 @@ static void ath9k_stop(struct ieee80211_hw *hw) | |||
| 1326 | 1333 | ||
| 1327 | spin_unlock_bh(&sc->sc_pcu_lock); | 1334 | spin_unlock_bh(&sc->sc_pcu_lock); |
| 1328 | 1335 | ||
| 1336 | /* we can now sync irq and kill any running tasklets, since we already | ||
| 1337 | * disabled interrupts and not holding a spin lock */ | ||
| 1338 | synchronize_irq(sc->irq); | ||
| 1339 | tasklet_kill(&sc->intr_tq); | ||
| 1340 | tasklet_kill(&sc->bcon_tasklet); | ||
| 1341 | |||
| 1329 | ath9k_ps_restore(sc); | 1342 | ath9k_ps_restore(sc); |
| 1330 | 1343 | ||
| 1331 | sc->ps_idle = true; | 1344 | sc->ps_idle = true; |
diff --git a/drivers/net/wireless/rtlwifi/efuse.c b/drivers/net/wireless/rtlwifi/efuse.c index b8433f3a9bc..62876cd5c41 100644 --- a/drivers/net/wireless/rtlwifi/efuse.c +++ b/drivers/net/wireless/rtlwifi/efuse.c | |||
| @@ -726,9 +726,9 @@ static int efuse_pg_packet_read(struct ieee80211_hw *hw, u8 offset, u8 *data) | |||
| 726 | } | 726 | } |
| 727 | 727 | ||
| 728 | static void efuse_write_data_case1(struct ieee80211_hw *hw, u16 *efuse_addr, | 728 | static void efuse_write_data_case1(struct ieee80211_hw *hw, u16 *efuse_addr, |
| 729 | u8 efuse_data, u8 offset, int *bcontinual, | 729 | u8 efuse_data, u8 offset, int *bcontinual, |
| 730 | u8 *write_state, struct pgpkt_struct target_pkt, | 730 | u8 *write_state, struct pgpkt_struct *target_pkt, |
| 731 | int *repeat_times, int *bresult, u8 word_en) | 731 | int *repeat_times, int *bresult, u8 word_en) |
| 732 | { | 732 | { |
| 733 | struct rtl_priv *rtlpriv = rtl_priv(hw); | 733 | struct rtl_priv *rtlpriv = rtl_priv(hw); |
| 734 | struct pgpkt_struct tmp_pkt; | 734 | struct pgpkt_struct tmp_pkt; |
| @@ -744,8 +744,8 @@ static void efuse_write_data_case1(struct ieee80211_hw *hw, u16 *efuse_addr, | |||
| 744 | tmp_pkt.word_en = tmp_header & 0x0F; | 744 | tmp_pkt.word_en = tmp_header & 0x0F; |
| 745 | tmp_word_cnts = efuse_calculate_word_cnts(tmp_pkt.word_en); | 745 | tmp_word_cnts = efuse_calculate_word_cnts(tmp_pkt.word_en); |
| 746 | 746 | ||
| 747 | if (tmp_pkt.offset != target_pkt.offset) { | 747 | if (tmp_pkt.offset != target_pkt->offset) { |
| 748 | efuse_addr = efuse_addr + (tmp_word_cnts * 2) + 1; | 748 | *efuse_addr = *efuse_addr + (tmp_word_cnts * 2) + 1; |
| 749 | *write_state = PG_STATE_HEADER; | 749 | *write_state = PG_STATE_HEADER; |
| 750 | } else { | 750 | } else { |
| 751 | for (tmpindex = 0; tmpindex < (tmp_word_cnts * 2); tmpindex++) { | 751 | for (tmpindex = 0; tmpindex < (tmp_word_cnts * 2); tmpindex++) { |
| @@ -756,23 +756,23 @@ static void efuse_write_data_case1(struct ieee80211_hw *hw, u16 *efuse_addr, | |||
| 756 | } | 756 | } |
| 757 | 757 | ||
| 758 | if (bdataempty == false) { | 758 | if (bdataempty == false) { |
| 759 | efuse_addr = efuse_addr + (tmp_word_cnts * 2) + 1; | 759 | *efuse_addr = *efuse_addr + (tmp_word_cnts * 2) + 1; |
| 760 | *write_state = PG_STATE_HEADER; | 760 | *write_state = PG_STATE_HEADER; |
| 761 | } else { | 761 | } else { |
| 762 | match_word_en = 0x0F; | 762 | match_word_en = 0x0F; |
| 763 | if (!((target_pkt.word_en & BIT(0)) | | 763 | if (!((target_pkt->word_en & BIT(0)) | |
| 764 | (tmp_pkt.word_en & BIT(0)))) | 764 | (tmp_pkt.word_en & BIT(0)))) |
| 765 | match_word_en &= (~BIT(0)); | 765 | match_word_en &= (~BIT(0)); |
| 766 | 766 | ||
| 767 | if (!((target_pkt.word_en & BIT(1)) | | 767 | if (!((target_pkt->word_en & BIT(1)) | |
| 768 | (tmp_pkt.word_en & BIT(1)))) | 768 | (tmp_pkt.word_en & BIT(1)))) |
| 769 | match_word_en &= (~BIT(1)); | 769 | match_word_en &= (~BIT(1)); |
| 770 | 770 | ||
| 771 | if (!((target_pkt.word_en & BIT(2)) | | 771 | if (!((target_pkt->word_en & BIT(2)) | |
| 772 | (tmp_pkt.word_en & BIT(2)))) | 772 | (tmp_pkt.word_en & BIT(2)))) |
| 773 | match_word_en &= (~BIT(2)); | 773 | match_word_en &= (~BIT(2)); |
| 774 | 774 | ||
| 775 | if (!((target_pkt.word_en & BIT(3)) | | 775 | if (!((target_pkt->word_en & BIT(3)) | |
| 776 | (tmp_pkt.word_en & BIT(3)))) | 776 | (tmp_pkt.word_en & BIT(3)))) |
| 777 | match_word_en &= (~BIT(3)); | 777 | match_word_en &= (~BIT(3)); |
| 778 | 778 | ||
| @@ -780,7 +780,7 @@ static void efuse_write_data_case1(struct ieee80211_hw *hw, u16 *efuse_addr, | |||
| 780 | badworden = efuse_word_enable_data_write( | 780 | badworden = efuse_word_enable_data_write( |
| 781 | hw, *efuse_addr + 1, | 781 | hw, *efuse_addr + 1, |
| 782 | tmp_pkt.word_en, | 782 | tmp_pkt.word_en, |
| 783 | target_pkt.data); | 783 | target_pkt->data); |
| 784 | 784 | ||
| 785 | if (0x0F != (badworden & 0x0F)) { | 785 | if (0x0F != (badworden & 0x0F)) { |
| 786 | u8 reorg_offset = offset; | 786 | u8 reorg_offset = offset; |
| @@ -791,26 +791,26 @@ static void efuse_write_data_case1(struct ieee80211_hw *hw, u16 *efuse_addr, | |||
| 791 | } | 791 | } |
| 792 | 792 | ||
| 793 | tmp_word_en = 0x0F; | 793 | tmp_word_en = 0x0F; |
| 794 | if ((target_pkt.word_en & BIT(0)) ^ | 794 | if ((target_pkt->word_en & BIT(0)) ^ |
| 795 | (match_word_en & BIT(0))) | 795 | (match_word_en & BIT(0))) |
| 796 | tmp_word_en &= (~BIT(0)); | 796 | tmp_word_en &= (~BIT(0)); |
| 797 | 797 | ||
| 798 | if ((target_pkt.word_en & BIT(1)) ^ | 798 | if ((target_pkt->word_en & BIT(1)) ^ |
| 799 | (match_word_en & BIT(1))) | 799 | (match_word_en & BIT(1))) |
| 800 | tmp_word_en &= (~BIT(1)); | 800 | tmp_word_en &= (~BIT(1)); |
| 801 | 801 | ||
| 802 | if ((target_pkt.word_en & BIT(2)) ^ | 802 | if ((target_pkt->word_en & BIT(2)) ^ |
| 803 | (match_word_en & BIT(2))) | 803 | (match_word_en & BIT(2))) |
| 804 | tmp_word_en &= (~BIT(2)); | 804 | tmp_word_en &= (~BIT(2)); |
| 805 | 805 | ||
| 806 | if ((target_pkt.word_en & BIT(3)) ^ | 806 | if ((target_pkt->word_en & BIT(3)) ^ |
| 807 | (match_word_en & BIT(3))) | 807 | (match_word_en & BIT(3))) |
| 808 | tmp_word_en &= (~BIT(3)); | 808 | tmp_word_en &= (~BIT(3)); |
| 809 | 809 | ||
| 810 | if ((tmp_word_en & 0x0F) != 0x0F) { | 810 | if ((tmp_word_en & 0x0F) != 0x0F) { |
| 811 | *efuse_addr = efuse_get_current_size(hw); | 811 | *efuse_addr = efuse_get_current_size(hw); |
| 812 | target_pkt.offset = offset; | 812 | target_pkt->offset = offset; |
| 813 | target_pkt.word_en = tmp_word_en; | 813 | target_pkt->word_en = tmp_word_en; |
| 814 | } else | 814 | } else |
| 815 | *bcontinual = false; | 815 | *bcontinual = false; |
| 816 | *write_state = PG_STATE_HEADER; | 816 | *write_state = PG_STATE_HEADER; |
| @@ -821,8 +821,8 @@ static void efuse_write_data_case1(struct ieee80211_hw *hw, u16 *efuse_addr, | |||
| 821 | } | 821 | } |
| 822 | } else { | 822 | } else { |
| 823 | *efuse_addr += (2 * tmp_word_cnts) + 1; | 823 | *efuse_addr += (2 * tmp_word_cnts) + 1; |
| 824 | target_pkt.offset = offset; | 824 | target_pkt->offset = offset; |
| 825 | target_pkt.word_en = word_en; | 825 | target_pkt->word_en = word_en; |
| 826 | *write_state = PG_STATE_HEADER; | 826 | *write_state = PG_STATE_HEADER; |
| 827 | } | 827 | } |
| 828 | } | 828 | } |
| @@ -938,7 +938,7 @@ static int efuse_pg_packet_write(struct ieee80211_hw *hw, | |||
| 938 | efuse_write_data_case1(hw, &efuse_addr, | 938 | efuse_write_data_case1(hw, &efuse_addr, |
| 939 | efuse_data, offset, | 939 | efuse_data, offset, |
| 940 | &bcontinual, | 940 | &bcontinual, |
| 941 | &write_state, target_pkt, | 941 | &write_state, &target_pkt, |
| 942 | &repeat_times, &bresult, | 942 | &repeat_times, &bresult, |
| 943 | word_en); | 943 | word_en); |
| 944 | else | 944 | else |
diff --git a/drivers/net/wireless/wl12xx/spi.c b/drivers/net/wireless/wl12xx/spi.c index 46714910f98..7145ea54378 100644 --- a/drivers/net/wireless/wl12xx/spi.c +++ b/drivers/net/wireless/wl12xx/spi.c | |||
| @@ -110,9 +110,8 @@ static void wl1271_spi_reset(struct wl1271 *wl) | |||
| 110 | spi_message_add_tail(&t, &m); | 110 | spi_message_add_tail(&t, &m); |
| 111 | 111 | ||
| 112 | spi_sync(wl_to_spi(wl), &m); | 112 | spi_sync(wl_to_spi(wl), &m); |
| 113 | kfree(cmd); | ||
| 114 | |||
| 115 | wl1271_dump(DEBUG_SPI, "spi reset -> ", cmd, WSPI_INIT_CMD_LEN); | 113 | wl1271_dump(DEBUG_SPI, "spi reset -> ", cmd, WSPI_INIT_CMD_LEN); |
| 114 | kfree(cmd); | ||
| 116 | } | 115 | } |
| 117 | 116 | ||
| 118 | static void wl1271_spi_init(struct wl1271 *wl) | 117 | static void wl1271_spi_init(struct wl1271 *wl) |
