diff options
author | Christian Lamparter <chunkeey@web.de> | 2009-04-18 13:39:15 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2009-04-22 16:57:16 -0400 |
commit | fef99929cd6b409a67a35e41f7c177bade5bca34 (patch) | |
tree | 9dafe774df9920c9349c721fd33894e3ac0f62ed /net/mac80211/tx.c | |
parent | d577e7cdb1be027bc51ee1030bc7fd647ea6d0da (diff) |
mac80211: set CLEAR_PS for pspolled frames
This patch sets IEEE80211_TX_CTL_CLEAR_PS_FILT for outgoing
frames for a half-wake station.
this is necessary if one wants to get ps-poll working properly with a p54 ap.
Signed-off-by: Christian Lamparter <chunkeey@web.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/mac80211/tx.c')
-rw-r--r-- | net/mac80211/tx.c | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c index 3fb04a86444d..f336cc731df6 100644 --- a/net/mac80211/tx.c +++ b/net/mac80211/tx.c | |||
@@ -409,8 +409,24 @@ ieee80211_tx_h_unicast_ps_buf(struct ieee80211_tx_data *tx) | |||
409 | sta->sta.addr); | 409 | sta->sta.addr); |
410 | } | 410 | } |
411 | #endif /* CONFIG_MAC80211_VERBOSE_PS_DEBUG */ | 411 | #endif /* CONFIG_MAC80211_VERBOSE_PS_DEBUG */ |
412 | clear_sta_flags(sta, WLAN_STA_PSPOLL); | 412 | if (test_and_clear_sta_flags(sta, WLAN_STA_PSPOLL)) { |
413 | /* | ||
414 | * The sleeping station with pending data is now snoozing. | ||
415 | * It queried us for its buffered frames and will go back | ||
416 | * to deep sleep once it got everything. | ||
417 | * | ||
418 | * inform the driver, in case the hardware does powersave | ||
419 | * frame filtering and keeps a station blacklist on its own | ||
420 | * (e.g: p54), so that frames can be delivered unimpeded. | ||
421 | * | ||
422 | * Note: It should be save to disable the filter now. | ||
423 | * As, it is really unlikely that we still have any pending | ||
424 | * frame for this station in the hw's buffers/fifos left, | ||
425 | * that is not rejected with a unsuccessful tx_status yet. | ||
426 | */ | ||
413 | 427 | ||
428 | info->flags |= IEEE80211_TX_CTL_CLEAR_PS_FILT; | ||
429 | } | ||
414 | return TX_CONTINUE; | 430 | return TX_CONTINUE; |
415 | } | 431 | } |
416 | 432 | ||