• Ivo van Doorn's avatar
    rt2x00: Cleanup rt2x00usb_watchdog_reset_tx · cd35a391
    Ivo van Doorn authored
    rt2x00usb_watchdog_reset_tx performs the same task
    as rt2x00usb_kill_tx_queue, with the only difference
    is that it waits for all entries to be returned to
    the driver and for all frames the status has been
    reported to mac80211.
    
    We can easily split this task by calling rt2x00usb_kill_tx_queue,
    sleep for a short period and invoke the TX status reporting
    function. By adding the sleep() to the kill_entry we make sure
    that even during shutdown we guarentee the entry has been killed when
    the function returns. To make this work correctly the interrupt
    handlers have to be updated to prevent checking for the RADIO_ENABLED
    flag too early which prevents the ownership of the entry to be reset.
    Additionally a check for the DEVICE_PRESENT flag is not required but
    is nice to prevent race conditions when the device was unplugged.
    
    Additionally rather then calling rt2x00usb_work_txdone() for
    status reporting we let the driver perform the TX status reporting
    first. If this is not sufficient then rt2x00usb_work_txdone() will
    still be used to cleanup the mess.
    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>
    cd35a391
rt2x00usb.c 20.1 KB