• Johannes Stezenbach's avatar
    rt2800usb: read TX_STA_FIFO asynchronously · 0e0d39e5
    Johannes Stezenbach authored
    Trying to fix the "TX status report missed" warnings
    by reading the TX_STA_FIFO entries as quickly as possible.
    The TX_STA_FIFO is too small in hardware, thus reading
    it only from the workqueue is too slow and entries get lost.
    
    Start an asynchronous read of the TX_STA_FIFO directly from
    the TX URB completion callback (atomic context, thus it cannot
    use the blocking rt2800_register_read()). If the async
    read returns a valid FIFO entry, it is pushed into a larger
    FIFO inside struct rt2x00_dev, until rt2800_txdone() picks
    it up.
    
    A .tx_dma_done callback is added to struct rt2x00lib_ops
    to trigger the async read from the URB completion callback.
    Signed-off-by: default avatarJohannes Stezenbach <js@sig21.net>
    Signed-off-by: default avatarIvo van Doorn <IvDoorn@gmail.com>
    Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
    0e0d39e5
rt2x00usb.c 21.7 KB