diff options
Diffstat (limited to 'net/mac80211/driver-ops.h')
| -rw-r--r-- | net/mac80211/driver-ops.h | 14 | 
1 files changed, 13 insertions, 1 deletions
| diff --git a/net/mac80211/driver-ops.h b/net/mac80211/driver-ops.h index 5d078c0a2323..d382d9729e85 100644 --- a/net/mac80211/driver-ops.h +++ b/net/mac80211/driver-ops.h @@ -88,7 +88,7 @@ static inline int drv_get_et_sset_count(struct ieee80211_sub_if_data *sdata,  }  int drv_start(struct ieee80211_local *local); -void drv_stop(struct ieee80211_local *local); +void drv_stop(struct ieee80211_local *local, bool suspend);  #ifdef CONFIG_PM  static inline int drv_suspend(struct ieee80211_local *local, @@ -1150,6 +1150,9 @@ drv_pre_channel_switch(struct ieee80211_sub_if_data *sdata,  	if (!check_sdata_in_driver(sdata))  		return -EIO; +	if (!ieee80211_vif_link_active(&sdata->vif, ch_switch->link_id)) +		return 0; +  	trace_drv_pre_channel_switch(local, sdata, ch_switch);  	if (local->ops->pre_channel_switch)  		ret = local->ops->pre_channel_switch(&local->hw, &sdata->vif, @@ -1171,6 +1174,9 @@ drv_post_channel_switch(struct ieee80211_link_data *link)  	if (!check_sdata_in_driver(sdata))  		return -EIO; +	if (!ieee80211_vif_link_active(&sdata->vif, link->link_id)) +		return 0; +  	trace_drv_post_channel_switch(local, sdata);  	if (local->ops->post_channel_switch)  		ret = local->ops->post_channel_switch(&local->hw, &sdata->vif, @@ -1191,6 +1197,9 @@ drv_abort_channel_switch(struct ieee80211_link_data *link)  	if (!check_sdata_in_driver(sdata))  		return; +	if (!ieee80211_vif_link_active(&sdata->vif, link->link_id)) +		return; +  	trace_drv_abort_channel_switch(local, sdata);  	if (local->ops->abort_channel_switch) @@ -1210,6 +1219,9 @@ drv_channel_switch_rx_beacon(struct ieee80211_sub_if_data *sdata,  	if (!check_sdata_in_driver(sdata))  		return; +	if (!ieee80211_vif_link_active(&sdata->vif, ch_switch->link_id)) +		return; +  	trace_drv_channel_switch_rx_beacon(local, sdata, ch_switch);  	if (local->ops->channel_switch_rx_beacon)  		local->ops->channel_switch_rx_beacon(&local->hw, &sdata->vif, |