• Arik Nemtsov's avatar
    wl12xx: fix potential race condition with TX queue watermark · f4d08ddd
    Arik Nemtsov authored
    Check the conditions for the high/low TX queue watermarks when the
    spin-lock is taken. This prevents race conditions as tx_queue_count and
    the flag checked are only modified when the spin-lock is taken.
    
    The following race was in mind:
    - Queues are almost full and wl1271_op_tx() will stop the queues, but it
      doesn't get the spin-lock yet.
    - (on another CPU) tx_work_locked() dequeues 15 skbs from this queue and
      tx_queue_count is updated to reflect this
    - wl1271_op_tx() does not check tx_queue_count after taking the
      spin-lock and incorrectly stops the queue.
    Signed-off-by: default avatarArik Nemtsov <arik@wizery.com>
    Signed-off-by: default avatarLuciano Coelho <coelho@ti.com>
    f4d08ddd
main.c 84.5 KB