Commit bd81533d authored by Sujith Manoharan's avatar Sujith Manoharan Committed by John W. Linville

ath9k: Fix NoA start time calculation

The start time field in the NoA attribute needs to be
updated based on the TSF timer when an absence notification
is sent by the P2P GO. When two channel contexts are active,
continuous, cyclic NoA is announced by setting the count value to 255,
but the start time is updated only once, for one beacon and
the same value is sent in all subsequent beacons, even
though the timestamp keeps moving.

Fix this by removing the check for 'periodic_noa_duration'
and assign the interface's start_time/duration values directly
when there is more than one active context.
Signed-off-by: default avatarSujith Manoharan <c_manoha@qca.qualcomm.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 9bf30ff9
...@@ -377,13 +377,13 @@ void ath_chanctx_event(struct ath_softc *sc, struct ieee80211_vif *vif, ...@@ -377,13 +377,13 @@ void ath_chanctx_event(struct ath_softc *sc, struct ieee80211_vif *vif,
tsf_time - avp->periodic_noa_start > BIT(30)) tsf_time - avp->periodic_noa_start > BIT(30))
avp->periodic_noa_duration = 0; avp->periodic_noa_duration = 0;
if (ctx->active && !avp->periodic_noa_duration) { if (ctx->active) {
avp->periodic_noa_start = tsf_time; avp->periodic_noa_start = tsf_time;
avp->periodic_noa_duration = avp->periodic_noa_duration =
TU_TO_USEC(cur_conf->beacon_interval) / 2 - TU_TO_USEC(cur_conf->beacon_interval) / 2 -
sc->sched.channel_switch_time; sc->sched.channel_switch_time;
noa_changed = true; noa_changed = true;
} else if (!ctx->active && avp->periodic_noa_duration) { } else if (!ctx->active) {
avp->periodic_noa_duration = 0; avp->periodic_noa_duration = 0;
noa_changed = true; noa_changed = true;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment