Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(251)

Side by Side Diff: chromeos/compat-wireless/drivers/net/wireless/ath/ath9k/main.c

Issue 3348011: CHROMEOS: ath9k: fix beacon loss after bgscan (Closed) Base URL: ssh://gitrw.chromium.org/kernel.git
Patch Set: Created 10 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2008-2009 Atheros Communications Inc. 2 * Copyright (c) 2008-2009 Atheros Communications Inc.
3 * 3 *
4 * Permission to use, copy, modify, and/or distribute this software for any 4 * Permission to use, copy, modify, and/or distribute this software for any
5 * purpose with or without fee is hereby granted, provided that the above 5 * purpose with or without fee is hereby granted, provided that the above
6 * copyright notice and this permission notice appear in all copies. 6 * copyright notice and this permission notice appear in all copies.
7 * 7 *
8 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 8 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 9 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 10 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
(...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after
250 goto ps_restore; 250 goto ps_restore;
251 } 251 }
252 252
253 ath_cache_conf_rate(sc, &hw->conf); 253 ath_cache_conf_rate(sc, &hw->conf);
254 ath_update_txpow(sc); 254 ath_update_txpow(sc);
255 ath9k_hw_set_interrupts(ah, ah->imask); 255 ath9k_hw_set_interrupts(ah, ah->imask);
256 256
257 if (!(sc->sc_flags & (SC_OP_OFFCHANNEL | SC_OP_SCANNING))) { 257 if (!(sc->sc_flags & (SC_OP_OFFCHANNEL | SC_OP_SCANNING))) {
258 ath_start_ani(common); 258 ath_start_ani(common);
259 ieee80211_queue_delayed_work(sc->hw, &sc->tx_complete_work, 0); 259 ieee80211_queue_delayed_work(sc->hw, &sc->tx_complete_work, 0);
260 }
261
262 if (!(sc->sc_flags & (SC_OP_OFFCHANNEL)))
260 ath_beacon_config(sc, NULL); 263 ath_beacon_config(sc, NULL);
261 }
262 264
263 ps_restore: 265 ps_restore:
264 ath9k_ps_restore(sc); 266 ath9k_ps_restore(sc);
265 return r; 267 return r;
266 } 268 }
267 269
268 static void ath_paprd_activate(struct ath_softc *sc) 270 static void ath_paprd_activate(struct ath_softc *sc)
269 { 271 {
270 struct ath_hw *ah = sc->sc_ah; 272 struct ath_hw *ah = sc->sc_ah;
271 struct ath9k_hw_cal_data *caldata = ah->caldata; 273 struct ath9k_hw_cal_data *caldata = ah->caldata;
(...skipping 672 matching lines...) Expand 10 before | Expand all | Expand 10 after
944 946
945 /* 947 /*
946 * We may be doing a reset in response to a request 948 * We may be doing a reset in response to a request
947 * that changes the channel so update any state that 949 * that changes the channel so update any state that
948 * might change as a result. 950 * might change as a result.
949 */ 951 */
950 ath_cache_conf_rate(sc, &hw->conf); 952 ath_cache_conf_rate(sc, &hw->conf);
951 953
952 ath_update_txpow(sc); 954 ath_update_txpow(sc);
953 955
954 » if (sc->sc_flags & SC_OP_BEACONS) 956 » if ((sc->sc_flags & SC_OP_BEACONS) || !(sc->sc_flags & (SC_OP_OFFCHANNEL )))
955 ath_beacon_config(sc, NULL); /* restart beacons */ 957 ath_beacon_config(sc, NULL); /* restart beacons */
956 958
957 ath9k_hw_set_interrupts(ah, ah->imask); 959 ath9k_hw_set_interrupts(ah, ah->imask);
958 960
959 if (retry_tx) { 961 if (retry_tx) {
960 int i; 962 int i;
961 for (i = 0; i < ATH9K_NUM_TX_QUEUES; i++) { 963 for (i = 0; i < ATH9K_NUM_TX_QUEUES; i++) {
962 if (ATH_TXQ_SETUP(sc, i)) { 964 if (ATH_TXQ_SETUP(sc, i)) {
963 spin_lock_bh(&sc->tx.txq[i].axq_lock); 965 spin_lock_bh(&sc->tx.txq[i].axq_lock);
964 ath_txq_schedule(sc, &sc->tx.txq[i]); 966 ath_txq_schedule(sc, &sc->tx.txq[i]);
(...skipping 1114 matching lines...) Expand 10 before | Expand all | Expand 10 after
2079 .get_tsf = ath9k_get_tsf, 2081 .get_tsf = ath9k_get_tsf,
2080 .set_tsf = ath9k_set_tsf, 2082 .set_tsf = ath9k_set_tsf,
2081 .reset_tsf = ath9k_reset_tsf, 2083 .reset_tsf = ath9k_reset_tsf,
2082 .ampdu_action = ath9k_ampdu_action, 2084 .ampdu_action = ath9k_ampdu_action,
2083 .get_survey = ath9k_get_survey, 2085 .get_survey = ath9k_get_survey,
2084 .sw_scan_start = ath9k_sw_scan_start, 2086 .sw_scan_start = ath9k_sw_scan_start,
2085 .sw_scan_complete = ath9k_sw_scan_complete, 2087 .sw_scan_complete = ath9k_sw_scan_complete,
2086 .rfkill_poll = ath9k_rfkill_poll_state, 2088 .rfkill_poll = ath9k_rfkill_poll_state,
2087 .set_coverage_class = ath9k_set_coverage_class, 2089 .set_coverage_class = ath9k_set_coverage_class,
2088 }; 2090 };
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698