• Jussi Kivilinna's avatar
    zd1211rw: use urb anchors for tx and fix tx-queue disabling · 78fc800f
    Jussi Kivilinna authored
    When stress testing AP-mode I hit OOPS when unpluging or rmmodding
    driver.
    
    It appears that when tx-queue is disabled, tx-urbs might be left pending.
    These can cause ehci to call non-existing tx_urb_complete() (after rmmod)
    or uninitialized/reseted private structure (after disconnect()). Add skb
    queue for submitted packets and unlink pending urbs on zd_usb_disable_tx().
    
    Part of the problem seems to be usb->free_urb_list that isn't always
    working as it should, causing machine freeze when trying to free the list
    in zd_usb_disable_tx(). Caching free urbs isn't what other drivers seem
    to be doing (usbnet for example) so strip free_usb_list.
    
    Patch makes tx-urb handling saner with use of urb anchors.
    Signed-off-by: default avatarJussi Kivilinna <jussi.kivilinna@mbnet.fi>
    Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
    78fc800f
zd_usb.c 37.9 KB