diff options
| author | a1205z <a1205z@motorola.com> | 2013-12-06 15:01:07 -0600 | 
|---|---|---|
| committer | James Wylder <jwylder@motorola.com> | 2014-03-05 17:46:55 -0600 | 
| commit | 58262e28fc9897833ab4a0dff122dff9bdbe8a33 (patch) | |
| tree | 38b58df036278d5382787cccd590a2c36c206a62 /net/mac80211/offchannel.c | |
| parent | 67b53586a795503f5885e673ab59de8c2ad93922 (diff) | |
| download | olio-linux-3.10-58262e28fc9897833ab4a0dff122dff9bdbe8a33.tar.xz olio-linux-3.10-58262e28fc9897833ab4a0dff122dff9bdbe8a33.zip  | |
IKG5-1471: Change the WLAN driver from dynamic module to static module
Change the WLAN driver from dynamic module to static module, move it
from hardware/ti/wlan to kernel drivers.
This driver is pulled from https://github.com/TI-OpenLink/wl18xx by
the latest commit as the following.
commit 01d7a03557723e7028b36a39c3de3c33ebf02c53
Author: Arik Nemtsov <arik@wizery.com>
Date:   Mon Oct 7 10:37:43 2013 +0300
    wlcore: decrease warning verbosity during recovery
    Silently ignore repetitive scheduling of recovery work and commands
    being passed to the bus when the HW is not available. This can happen
    many times during recovery and slow it down. It also spams the kernel
    logs.
Change-Id: I5d8bdc05b23632a8de3e106cd54a39f70a6bcbac
Signed-off-by: a1205z <a1205z@motorola.com>
Reviewed-on: http://gerrit.pcs.mot.com/588639
SLTApproved: Slta Waiver <sltawvr@motorola.com>
Tested-by: Jira Key <jirakey@motorola.com>
Reviewed-by: Amit Jain <ajain@motorola.com>
Submit-Approved: Jira Key <jirakey@motorola.com>
Diffstat (limited to 'net/mac80211/offchannel.c')
| -rw-r--r-- | net/mac80211/offchannel.c | 24 | 
1 files changed, 15 insertions, 9 deletions
diff --git a/net/mac80211/offchannel.c b/net/mac80211/offchannel.c index acd1f71adc0..edcc6a623b5 100644 --- a/net/mac80211/offchannel.c +++ b/net/mac80211/offchannel.c @@ -126,10 +126,9 @@ void ieee80211_offchannel_stop_vifs(struct ieee80211_local *local)  	list_for_each_entry(sdata, &local->interfaces, list) {  		if (!ieee80211_sdata_running(sdata))  			continue; -  		if (sdata->vif.type == NL80211_IFTYPE_P2P_DEVICE)  			continue; - +#if 0  		if (sdata->vif.type != NL80211_IFTYPE_MONITOR)  			set_bit(SDATA_STATE_OFFCHANNEL, &sdata->state); @@ -141,7 +140,7 @@ void ieee80211_offchannel_stop_vifs(struct ieee80211_local *local)  			ieee80211_bss_info_change_notify(  				sdata, BSS_CHANGED_BEACON_ENABLED);  		} - +#endif  		if (sdata->vif.type == NL80211_IFTYPE_STATION &&  		    sdata->u.mgd.associated)  			ieee80211_offchannel_ps_enable(sdata); @@ -160,10 +159,10 @@ void ieee80211_offchannel_return(struct ieee80211_local *local)  	list_for_each_entry(sdata, &local->interfaces, list) {  		if (sdata->vif.type == NL80211_IFTYPE_P2P_DEVICE)  			continue; - +#if 0  		if (sdata->vif.type != NL80211_IFTYPE_MONITOR)  			clear_bit(SDATA_STATE_OFFCHANNEL, &sdata->state); - +#endif  		if (!ieee80211_sdata_running(sdata))  			continue; @@ -171,13 +170,14 @@ void ieee80211_offchannel_return(struct ieee80211_local *local)  		if (sdata->vif.type == NL80211_IFTYPE_STATION &&  		    sdata->u.mgd.associated)  			ieee80211_offchannel_ps_disable(sdata); - +#if 0  		if (test_and_clear_bit(SDATA_STATE_OFFCHANNEL_BEACON_STOPPED,  				       &sdata->state)) {  			sdata->vif.bss_conf.enable_beacon = true;  			ieee80211_bss_info_change_notify(  				sdata, BSS_CHANGED_BEACON_ENABLED);  		} +#endif  	}  	mutex_unlock(&local->iflist_mtx); @@ -277,7 +277,7 @@ void ieee80211_start_next_roc(struct ieee80211_local *local)  			duration = 10;  		ret = drv_remain_on_channel(local, roc->sdata, roc->chan, -					    duration, roc->type); +					    duration, roc->type, (unsigned long) roc);  		roc->started = true; @@ -288,7 +288,8 @@ void ieee80211_start_next_roc(struct ieee80211_local *local)  			 * queue the work struct again to avoid recursion  			 * when multiple failures occur  			 */ -			ieee80211_remain_on_channel_expired(&local->hw); +			ieee80211_remain_on_channel_expired(&local->hw, +						(unsigned long) roc);  		}  	} else {  		/* delay it a bit */ @@ -417,6 +418,9 @@ static void ieee80211_hw_roc_done(struct work_struct *work)  	if (!roc->started)  		goto out_unlock; +	if (local->expired_roc_cookie != (unsigned long) roc) +		goto out_unlock; +  	list_del(&roc->list);  	ieee80211_roc_notify_destroy(roc, true); @@ -428,12 +432,14 @@ static void ieee80211_hw_roc_done(struct work_struct *work)  	mutex_unlock(&local->mtx);  } -void ieee80211_remain_on_channel_expired(struct ieee80211_hw *hw) +void ieee80211_remain_on_channel_expired(struct ieee80211_hw *hw, u64 cookie)  {  	struct ieee80211_local *local = hw_to_local(hw);  	trace_api_remain_on_channel_expired(local); +	local->expired_roc_cookie = cookie; +  	ieee80211_queue_work(hw, &local->hw_roc_done);  }  EXPORT_SYMBOL_GPL(ieee80211_remain_on_channel_expired);  |