On 2011-04-18 10:15 AM, Johannes Berg wrote:
On Sun, 2011-04-17 at 17:45 +0200, Felix Fietkau wrote:
This allows a driver to buffer frames for a PS station and tell mac80211
to wake it up even though mac80211 does not have any buffered frames for
it.
This is necessary for properly handling aggregation related buffering,
in ath9k, because the driver needs to keep its frames in order to keep
track of the Block-ACK window.
Indeed, I thought I'd solved these cases with the WLAN_STA_PS_DRIVER
thing but that's not true of course because it blocks wakeup until all
frames have been filtered, which will never happen here. I think I'll
probably need to implement using this in iwlwifi as well.
The only question I have is how will PS-Poll be handled while an
aggregation session is active?? Is it even allowed to poll a-MPDUs?
Not sure - polling A-MPDUs may not be allowed, the standard only
mentions polling MSDU and A-MSDU. We could add a driver callback later
that mac80211 calls upon receiving a PS-Poll when WLAN_STA_PS_DRIVER_BUF
is set, which will trigger the release of a single packet and indicate
in the return status whether it was the last one (from the driver's
point of view).
- Felix
--
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