• Michal Kazior's avatar
    ath10k: handle cycle counter wraparound · 587f7031
    Michal Kazior authored
    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 active time
    value. It is, however, impossible to determine the
    point at which Rx Clear Count has been divided by
    two so it is not reported upon wraparound.
    
    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 improve hostapd ACS a little bit.
    Reported-by: default avatarSrinivasa Duvvuri <sduvvuri@chromium.org>
    Signed-off-by: default avatarMichal Kazior <michal.kazior@tieto.com>
    Signed-off-by: default avatarKalle Valo <kvalo@qca.qualcomm.com>
    587f7031
core.c 36.2 KB