Michal Kazior <[email protected]> writes:

> When QCA988X cycle counter HW register wraps
> around it resets to 0x7fffffff instead of 0. All
> other cycle counter related registers are divided
> by 2 so they never wraparound themselves. QCA61X4
> has a uniform CC and it wraparounds in a regular
> fashion though.
>
> Worst case wraparound time is approx 24 seconds
> (2**31 / 88MHz). Since scan channel visit times
> are max 5 seconds (offchannel case) it is
> guaranteed there's been at most 1 wraparound and
> it is possible to compute survey data.
>
> This fixes some occasional incorrect survey data
> on QCA988X as some channels (depending on how/when
> scan/offchannel requests were requested) would
> have approx 24 sec active time which wasn't
> actually the case.
>
> This should help make hostapd ACS more reliable.
>
> Reported-by: Srinivasa Duvvuri <[email protected]>
> Signed-off-by: Michal Kazior <[email protected]>

[...]

> +void ath10k_core_get_cc_delta(struct ath10k *ar,
> +                           u32 *cc_delta, u32 *rcc_delta,
> +                           u32 cc, u32 rcc,
> +                           u32 cc_prev, u32 rcc_prev)
> +{
> +     if (ar->hw_params.has_shifted_cc_wraparound && cc < cc_prev) {
> +             cc_prev -= 0x7fffffff;
> +             rcc *= 2;
> +     }
> +
> +     *cc_delta = cc - cc_prev;
> +     *rcc_delta = rcc - rcc_prev;
> +}

Why do you have this function in core.c? Why not in wmi.c?


-- 
Kalle Valo
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to