Skip to content
  • Sujith's avatar
    ath9k_hw: fix noisefloor history buffer usage on AR9271 · 6398dc03
    Sujith authored
    
    
    Noisefloor calibration involves querying hardware for samples
    and storing this information on a history buffer in hardware for
    actual noisefloor calibration processing in hardware. The history
    buffer supports collecting information for all Atheros hardware,
    one history buffer slot for each chain on each channel used for
    MIMO operation. For current hardware this means one history
    buffer slot for each chain on both the control (or primary) channel
    and the extension (or secondary) channel. We know which noisefloor
    registers to poke for collecting noisefloor data through the
    chainmask.
    
    For AR9285 and AR9271 devices, both 1x1, the chaimmask is defined as
    0x9 = 0b0001001. The first four bits represent each chain out of
    a maximum of 4 chains [0-3] on the primary channel. The last four
    bits represent each chain on the extension channel. A chainmask
    of 0x9 therefore indicates chain 1 is active on both the primary
    and the extension channel.
    
    AR9271 only requires collecting and storing noisefloor history buffer
    data for the first chain on both the control and extension channel
    (nfarray[0] and nfarray[3]) so fix the code and avoid which reads
    and writes to the history buffer for the other chains.
    
    Since the noisefloor varies depending on the number of chains your
    device supports also initialize the noisefloor history buffer with
    reasonable values seen on 1x1 devices such as AR9285.
    
    Signed-off-by: default avatarSujith <Sujith.Manoharan@atheros.com>
    Signed-off-by: default avatarVasanthakumar Thiagarajan <vasanth@atheros.com>
    Signed-off-by: default avatarLuis R. Rodriguez <lrodriguez@atheros.com>
    Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
    6398dc03