|
@@ -1456,7 +1456,7 @@ u32 __ieee80211_recalc_idle(struct ieee80211_local *local)
|
|
|
{
|
|
|
struct ieee80211_sub_if_data *sdata;
|
|
|
int count = 0;
|
|
|
- bool working = false, scanning = false, hw_roc = false;
|
|
|
+ bool working = false, scanning = false;
|
|
|
struct ieee80211_work *wk;
|
|
|
unsigned int led_trig_start = 0, led_trig_stop = 0;
|
|
|
|
|
@@ -1493,9 +1493,11 @@ u32 __ieee80211_recalc_idle(struct ieee80211_local *local)
|
|
|
count++;
|
|
|
}
|
|
|
|
|
|
- list_for_each_entry(wk, &local->work_list, list) {
|
|
|
- working = true;
|
|
|
- wk->sdata->vif.bss_conf.idle = false;
|
|
|
+ if (!local->ops->remain_on_channel) {
|
|
|
+ list_for_each_entry(wk, &local->work_list, list) {
|
|
|
+ working = true;
|
|
|
+ wk->sdata->vif.bss_conf.idle = false;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
if (local->scan_sdata &&
|
|
@@ -1504,9 +1506,6 @@ u32 __ieee80211_recalc_idle(struct ieee80211_local *local)
|
|
|
local->scan_sdata->vif.bss_conf.idle = false;
|
|
|
}
|
|
|
|
|
|
- if (local->hw_roc_channel)
|
|
|
- hw_roc = true;
|
|
|
-
|
|
|
list_for_each_entry(sdata, &local->interfaces, list) {
|
|
|
if (sdata->vif.type == NL80211_IFTYPE_MONITOR ||
|
|
|
sdata->vif.type == NL80211_IFTYPE_AP_VLAN)
|
|
@@ -1518,7 +1517,7 @@ u32 __ieee80211_recalc_idle(struct ieee80211_local *local)
|
|
|
ieee80211_bss_info_change_notify(sdata, BSS_CHANGED_IDLE);
|
|
|
}
|
|
|
|
|
|
- if (working || scanning || hw_roc)
|
|
|
+ if (working || scanning)
|
|
|
led_trig_start |= IEEE80211_TPT_LEDTRIG_FL_WORK;
|
|
|
else
|
|
|
led_trig_stop |= IEEE80211_TPT_LEDTRIG_FL_WORK;
|
|
@@ -1530,8 +1529,6 @@ u32 __ieee80211_recalc_idle(struct ieee80211_local *local)
|
|
|
|
|
|
ieee80211_mod_tpt_led_trig(local, led_trig_start, led_trig_stop);
|
|
|
|
|
|
- if (hw_roc)
|
|
|
- return ieee80211_idle_off(local, "hw remain-on-channel");
|
|
|
if (working)
|
|
|
return ieee80211_idle_off(local, "working");
|
|
|
if (scanning)
|