• Rajkumar Manoharan's avatar
    ath10k: fix copy engine 5 destination ring stuck · 8a9398b9
    Rajkumar Manoharan authored
    commit 0628467f upstream.
    
    Firmware is running watchdog timer for tracking copy engine ring index
    and write index. Whenever both indices are stuck at same location for
    given duration, watchdog will be trigger to assert target. While
    updating copy engine destination ring write index, driver ensures that
    write index will not be same as read index by finding delta between these
    two indices (CE_RING_DELTA).
    
    HTT target to host copy engine (CE5) is special case where ring buffers
    will be reused and delta check is not applied while updating write index.
    In rare scenario, whenever CE5 ring is full, both indices will be referring
    same location and this is causing CE ring stuck issue as explained
    above. This issue is originally reported on IPQ4019 during long hour stress
    testing and during veriwave max clients testsuites. The same issue is
    also observed in other chips as well. Fix this by ensuring that write
    index is one less than read index which means that full ring is
    available for receiving data.
    Tested-by: default avatarTamizh chelvam <c_traja@qti.qualcomm.com>
    Signed-off-by: default avatarRajkumar Manoharan <rmanohar@qti.qualcomm.com>
    Signed-off-by: default avatarKalle Valo <kvalo@qca.qualcomm.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    8a9398b9
ce.c 32 KB