• Emmanuel Grumbach's avatar
    iwlwifi: dvm: handle FLUSH ampdu actions from mac80211 · 2d055afd
    Emmanuel Grumbach authored
    Until now we didn't handle properly the FLUSH ampdu action
    coming from mac80211. This could result in SCD queue leak:
    mac80211 would STOP_FLUSH an AMPDU Tx session and remove
    the station. If we had still packets on the ring, we
    wouldn't deallocate the SCD queue and wait for it to be
    empty.
    The indication of the queue being empty comes from the Tx
    response flow which relies on the tid_data structure. The
    problem is that this structure has been cleared when the
    station has been removed.
    In order to solve this issue, block in the STOP_FLUSH
    ampdu_action until the SCD queue is flushed, and only then,
    let mac80211 move forward to remove the station.
    iwlagn_txfifo_flush had to be enhanced to allow this.
    
    The bug fixed here caused the "txq_id mismatch: 12 0" print.
    Signed-off-by: default avatarEmmanuel Grumbach <emmanuel.grumbach@intel.com>
    Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
    2d055afd
lib.c 37.2 KB