mirror of
https://github.com/FEX-Emu/linux.git
synced 2024-12-27 03:47:43 +00:00
ath9k: Calculate sleep duration
Right now sleep duration is configured as beacon interval. It should be the multiple of beacon interval by listen period which helps to reduce station power consumption. Signed-off-by: Rajkumar Manoharan <rmanohar@qti.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
5f2f9e44ba
commit
09ebb81092
@ -57,7 +57,7 @@ int ath9k_cmn_beacon_config_sta(struct ath_hw *ah,
|
|||||||
struct ath9k_beacon_state *bs)
|
struct ath9k_beacon_state *bs)
|
||||||
{
|
{
|
||||||
struct ath_common *common = ath9k_hw_common(ah);
|
struct ath_common *common = ath9k_hw_common(ah);
|
||||||
int dtim_intval;
|
int dtim_intval, sleepduration;
|
||||||
u64 tsf;
|
u64 tsf;
|
||||||
|
|
||||||
/* No need to configure beacon if we are not associated */
|
/* No need to configure beacon if we are not associated */
|
||||||
@ -75,6 +75,7 @@ int ath9k_cmn_beacon_config_sta(struct ath_hw *ah,
|
|||||||
* last beacon we received (which may be none).
|
* last beacon we received (which may be none).
|
||||||
*/
|
*/
|
||||||
dtim_intval = conf->intval * conf->dtim_period;
|
dtim_intval = conf->intval * conf->dtim_period;
|
||||||
|
sleepduration = ah->hw->conf.listen_interval * conf->intval;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Pull nexttbtt forward to reflect the current
|
* Pull nexttbtt forward to reflect the current
|
||||||
@ -112,7 +113,7 @@ int ath9k_cmn_beacon_config_sta(struct ath_hw *ah,
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
bs->bs_sleepduration = TU_TO_USEC(roundup(IEEE80211_MS_TO_TU(100),
|
bs->bs_sleepduration = TU_TO_USEC(roundup(IEEE80211_MS_TO_TU(100),
|
||||||
conf->intval));
|
sleepduration));
|
||||||
if (bs->bs_sleepduration > bs->bs_dtimperiod)
|
if (bs->bs_sleepduration > bs->bs_dtimperiod)
|
||||||
bs->bs_sleepduration = bs->bs_dtimperiod;
|
bs->bs_sleepduration = bs->bs_dtimperiod;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user