• Ivo van Doorn's avatar
    rt2x00: Split watchdog check into a DMA and STATUS timeout · 652a9dd2
    Ivo van Doorn authored
    The watchdog for rt2800usb triggers frequently causing all URB's
    to be canceled often enough to interrupt the normal TX flow.
    More research indicated that not the URB upload to the USB host
    were hanging, but instead the TX status reports.
    
    To correctly detect what is going on, we introduce Q_INDEX_DMA_DONE
    which is an index counter between Q_INDEX_DONE and Q_INDEX and indicates
    if the frame has been transfered to the device.
    
    This also requires the rt2x00queue timeout functions to be updated
    to differentiate between a DMA timeout (time between Q_INDEX and
    Q_INDEX_DMA_DONE timeout) and a STATUS timeout (time between
    Q_INDEX_DMA_DONE and Q_INDEX_DONE timeout)
    
    All Q_INDEX_DMA_DONE code was taken from the RFC from
    Helmut Schaa <helmut.schaa@googlemail.com> for the implementation
    for watchdog for rt2800pci.
    Signed-off-by: default avatarIvo van Doorn <IvDoorn@gmail.com>
    Acked-by: default avatarGertjan van Wingerde <gwingerde@gmail.com>
    Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
    652a9dd2
rt2x00queue.h 21.2 KB