Skip to content
  • Bob Copeland's avatar
    mac80211: fix pending queue hang due to TX_DROP · 147953b6
    Bob Copeland authored
    [ Upstream commit 6eae4a6c2be387fec41b0d2782c4fffb57159498 ]
    
    In our environment running lots of mesh nodes, we are seeing the
    pending queue hang periodically, with the debugfs queues file showing
    lines such as:
    
        00: 0x00000000/348
    
    i.e. there are a large number of frames but no stop reason set.
    
    One way this could happen is if queue processing from the pending
    tasklet exited early without processing all frames, and without having
    some future event (incoming frame, stop reason flag, ...) to reschedule
    it.
    
    Exactly this can occur today if ieee80211_tx() returns false due to
    packet drops or power-save buffering in the tx handlers.  In the
    past, this function would return true in such cases, and the change
    to false doesn't seem to be intentional.  Fix this case by reverting
    to the previous behavior.
    
    Fixes: bb42f2d1
    
     ("mac80211: Move reorder-sensitive TX handlers to after TXQ dequeue")
    Signed-off-by: default avatarBob Copeland <bobcopeland@fb.com>
    Acked-by: default avatarToke Høiland-Jørgensen <toke@toke.dk>
    Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
    Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
    147953b6