On Fri, Jan 27, 2012 at 11:02 AM, Helmut Schaa <helmut.schaa@xxxxxxxxxxxxxx> wrote: > If the driver blocked this specific STA with the help of > ieee80211_sta_block_awake we won't clear WLAN_STA_PS_STA later but > still decrement num_sta_ps. Hence, the next data frame from this > STA will trigger ap_sta_ps_end again and also decrement num_sta_ps > again leading to an incorrect num_sta_ps counter. > > This can result in problems with powersaving clients not waking up > from PS because the TIM calculation might be skipped due to the > incorrect num_sta_ps counter. John, I need to send a v2 for this since it introduces a warning: net/mac80211/rx.c: In function ‘ap_sta_ps_end’: net/mac80211/rx.c:1148:32: warning: unused variable ‘sdata’ [-Wunused-variable] Helmut > Signed-off-by: Helmut Schaa <helmut.schaa@xxxxxxxxxxxxxx> > --- > net/mac80211/rx.c | 1 - > net/mac80211/sta_info.c | 4 +++- > 2 files changed, 3 insertions(+), 2 deletions(-) > > diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c > index 3567586..f89617a 100644 > --- a/net/mac80211/rx.c > +++ b/net/mac80211/rx.c > @@ -1147,7 +1147,6 @@ static void ap_sta_ps_end(struct sta_info *sta) > { > struct ieee80211_sub_if_data *sdata = sta->sdata; > > - atomic_dec(&sdata->bss->num_sta_ps); > > #ifdef CONFIG_MAC80211_VERBOSE_PS_DEBUG > printk(KERN_DEBUG "%s: STA %pM aid %d exits power save mode\n", > diff --git a/net/mac80211/sta_info.c b/net/mac80211/sta_info.c > index 70a0de3..92b894c 100644 > --- a/net/mac80211/sta_info.c > +++ b/net/mac80211/sta_info.c > @@ -1007,9 +1007,11 @@ EXPORT_SYMBOL(ieee80211_find_sta); > static void clear_sta_ps_flags(void *_sta) > { > struct sta_info *sta = _sta; > + struct ieee80211_sub_if_data *sdata = sta->sdata; > > clear_sta_flag(sta, WLAN_STA_PS_DRIVER); > - clear_sta_flag(sta, WLAN_STA_PS_STA); > + if (test_and_clear_sta_flag(sta, WLAN_STA_PS_STA)) > + atomic_dec(&sdata->bss->num_sta_ps); > } > > /* powersave support code */ > -- > 1.7.7 > -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html