• Johannes Berg's avatar
    iwlwifi: mvm: fix mac80211 queue tracking · 37e474ac
    Johannes Berg authored
    In the driver, we track which hardware queue is associated with
    which mac80211 "hw_queue", in order to be able to stop and wake
    it. When moving these bitmaps out of the queue_info structures,
    the type of the bitmap was erroneously changed from u32 to u8,
    presumably in order to save memory.
    
    Turns out that u32 isn't needed, because the highest queue we
    can ever tell mac80211 is always < 16, but a u16 definitely is
    needed, queues >=8 do happen.
    
    While at it, throw a BUILD_BUG_ON() into the place where we set
    the limit (mvm->first_agg_queue) and a warning when it actually
    gets put into the bitmap.
    
    The consequence of this bug is that full HW queues associated
    with such a too-high mac80211 number never stop higher layer
    queues when full, and thus would simply drop all packets that
    couldn't be enqueued to the hardware queue.
    
    Fixes: 34e10860 ("iwlwifi: mvm: remove references to queue_info in new TX path")
    Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
    Signed-off-by: default avatarLuca Coelho <luciano.coelho@intel.com>
    37e474ac
ops.c 50.9 KB