mac80211: Check for queued frames before entering power save.
In a highly noisy environment, the tx rate of the driver drops and the application slows down since it has not yet received ACKs for the frames already queued in the hardware. Since this ACK may take more than 100ms, stopping the dev queues for entering PS at this stage breaks applications, WMM test cases in my testing. If there are frames already pending in the tx queue, postponing the PS logic helps to avoid redundant queue stops. When power save is enabled by default and in a noisy environment, this API certainly helps in improving the average throughput. Signed-off-by: Vivek Natarajan <vnatarajan@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:

committed by
John W. Linville

parent
6fc3ba9999
commit
e8306f9894
@@ -552,4 +552,17 @@ static inline void drv_get_ringparam(struct ieee80211_local *local,
|
||||
trace_drv_return_void(local);
|
||||
}
|
||||
|
||||
static inline bool drv_tx_frames_pending(struct ieee80211_local *local)
|
||||
{
|
||||
bool ret = false;
|
||||
|
||||
might_sleep();
|
||||
|
||||
trace_drv_tx_frames_pending(local);
|
||||
if (local->ops->tx_frames_pending)
|
||||
ret = local->ops->tx_frames_pending(&local->hw);
|
||||
trace_drv_return_bool(local, ret);
|
||||
|
||||
return ret;
|
||||
}
|
||||
#endif /* __MAC80211_DRIVER_OPS */
|
||||
|
Reference in New Issue
Block a user