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

Side by Side Diff: chromeos/compat-wireless/net/mac80211/offchannel.c

Issue 3438006: CHROMIUMOS: mac80211: disable beacon monitor while going offchannel (Closed) Base URL: ssh://gitrw.chromium.org/kernel.git
Patch Set: Distill after parent push 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 * Off-channel operation helpers 2 * Off-channel operation helpers
3 * 3 *
4 * Copyright 2003, Jouni Malinen <jkmaline@cc.hut.fi> 4 * Copyright 2003, Jouni Malinen <jkmaline@cc.hut.fi>
5 * Copyright 2004, Instant802 Networks, Inc. 5 * Copyright 2004, Instant802 Networks, Inc.
6 * Copyright 2005, Devicescape Software, Inc. 6 * Copyright 2005, Devicescape Software, Inc.
7 * Copyright 2006-2007 Jiri Benc <jbenc@suse.cz> 7 * Copyright 2006-2007 Jiri Benc <jbenc@suse.cz>
8 * Copyright 2007, Michael Wu <flamingice@sourmilk.net> 8 * Copyright 2007, Michael Wu <flamingice@sourmilk.net>
9 * Copyright 2009 Johannes Berg <johannes@sipsolutions.net> 9 * Copyright 2009 Johannes Berg <johannes@sipsolutions.net>
10 * 10 *
(...skipping 11 matching lines...) Expand all
22 static void ieee80211_offchannel_ps_enable(struct ieee80211_sub_if_data *sdata) 22 static void ieee80211_offchannel_ps_enable(struct ieee80211_sub_if_data *sdata)
23 { 23 {
24 struct ieee80211_local *local = sdata->local; 24 struct ieee80211_local *local = sdata->local;
25 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; 25 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd;
26 26
27 local->offchannel_ps_enabled = false; 27 local->offchannel_ps_enabled = false;
28 28
29 /* FIXME: what to do when local->pspolling is true? */ 29 /* FIXME: what to do when local->pspolling is true? */
30 30
31 del_timer_sync(&local->dynamic_ps_timer); 31 del_timer_sync(&local->dynamic_ps_timer);
32 del_timer_sync(&ifmgd->bcn_mon_timer);
32 del_timer_sync(&ifmgd->conn_mon_timer); 33 del_timer_sync(&ifmgd->conn_mon_timer);
33 34
34 cancel_work_sync(&local->dynamic_ps_enable_work); 35 cancel_work_sync(&local->dynamic_ps_enable_work);
35 36
36 if (local->hw.conf.flags & IEEE80211_CONF_PS) { 37 if (local->hw.conf.flags & IEEE80211_CONF_PS) {
37 local->offchannel_ps_enabled = true; 38 local->offchannel_ps_enabled = true;
38 local->hw.conf.flags &= ~IEEE80211_CONF_PS; 39 local->hw.conf.flags &= ~IEEE80211_CONF_PS;
39 ieee80211_hw_config(local, IEEE80211_CONF_CHANGE_PS); 40 ieee80211_hw_config(local, IEEE80211_CONF_CHANGE_PS);
40 } 41 }
41 42
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
82 * If IEEE80211_CONF_PS was not set and the dynamic_ps_timer 83 * If IEEE80211_CONF_PS was not set and the dynamic_ps_timer
83 * had been running before leaving the operating channel, 84 * had been running before leaving the operating channel,
84 * restart the timer now and send a nullfunc frame to inform 85 * restart the timer now and send a nullfunc frame to inform
85 * the AP that we are awake. 86 * the AP that we are awake.
86 */ 87 */
87 ieee80211_send_nullfunc(local, sdata, 0); 88 ieee80211_send_nullfunc(local, sdata, 0);
88 mod_timer(&local->dynamic_ps_timer, jiffies + 89 mod_timer(&local->dynamic_ps_timer, jiffies +
89 msecs_to_jiffies(local->hw.conf.dynamic_ps_timeout)); 90 msecs_to_jiffies(local->hw.conf.dynamic_ps_timeout));
90 } 91 }
91 92
93 ieee80211_sta_reset_beacon_monitor(sdata);
92 ieee80211_sta_reset_conn_monitor(sdata); 94 ieee80211_sta_reset_conn_monitor(sdata);
93 } 95 }
94 96
95 void ieee80211_offchannel_stop_beaconing(struct ieee80211_local *local) 97 void ieee80211_offchannel_stop_beaconing(struct ieee80211_local *local)
96 { 98 {
97 struct ieee80211_sub_if_data *sdata; 99 struct ieee80211_sub_if_data *sdata;
98 100
99 mutex_lock(&local->iflist_mtx); 101 mutex_lock(&local->iflist_mtx);
100 list_for_each_entry(sdata, &local->interfaces, list) { 102 list_for_each_entry(sdata, &local->interfaces, list) {
101 if (!ieee80211_sdata_running(sdata)) 103 if (!ieee80211_sdata_running(sdata))
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
166 /* re-enable beaconing */ 168 /* re-enable beaconing */
167 if (enable_beaconing && 169 if (enable_beaconing &&
168 (sdata->vif.type == NL80211_IFTYPE_AP || 170 (sdata->vif.type == NL80211_IFTYPE_AP ||
169 sdata->vif.type == NL80211_IFTYPE_ADHOC || 171 sdata->vif.type == NL80211_IFTYPE_ADHOC ||
170 sdata->vif.type == NL80211_IFTYPE_MESH_POINT)) 172 sdata->vif.type == NL80211_IFTYPE_MESH_POINT))
171 ieee80211_bss_info_change_notify( 173 ieee80211_bss_info_change_notify(
172 sdata, BSS_CHANGED_BEACON_ENABLED); 174 sdata, BSS_CHANGED_BEACON_ENABLED);
173 } 175 }
174 mutex_unlock(&local->iflist_mtx); 176 mutex_unlock(&local->iflist_mtx);
175 } 177 }
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