From: Jérôme Pouiller <jerome.pouiller@xxxxxxxxxx> This current implementation of the Tx queue is far more complex than necessary and its behavior is dubious on some corner cases. This series rework the Tx queue: - Simplify support for QoS (since device already do the job) - Simplify support for Power Saving stations (since mac80211 already do the job) - Improve support of Content After DTIM Beacon (CAB) when device is AP and some station use power save. - Improve robustness of flushing Jérôme Pouiller (32): staging: wfx: add sanity checks to hif_join() staging: wfx: do not stop mac80211 queueing during tx_policy upload staging: wfx: take advantage of ieee80211_{stop/start}_queues staging: wfx: remove "burst" mechanism staging: wfx: uniformize queue_id retrieval staging: wfx: drop useless queue_id field staging: wfx: avoid useless wake_up staging: wfx: simplify hif_handle_tx_data() staging: wfx: simplify wfx_tx_queues_empty() staging: wfx: drop unused argument in wfx_get_prio_queue() staging: wfx: simplify wfx_tx_queue_mask_get() staging: wfx: drop useless sta_asleep_mask staging: wfx: drop argument tx_allowed_mask since it is constant now staging: wfx: do not use link_map_cache to track CAB staging: wfx: drop useless link_map_cache staging: wfx: do not rely anymore on link_id to choose packet in queue staging: wfx: drop unused link_id field staging: wfx: drop unused raw_link_id field staging: wfx: rename wfx_tx_get_raw_link_id() staging: wfx: replace wfx_tx_queues_get_after_dtim() by wfx_tx_queues_has_cab() staging: wfx: introduce a counter of pending frames staging: wfx: change the way to choose frame to send staging: wfx: drop now useless field edca_params staging: wfx: drop struct wfx_queue_stats staging: wfx: simplify usage of wfx_tx_queues_put() staging: wfx: improve interface between data_tx.c and queue.c staging: wfx: relocate wfx_skb_dtor() prior its callers staging: wfx: repair wfx_flush() staging: wfx: wfx_flush() did not ensure that frames are processed staging: wfx: fix potential deadlock in wfx_tx_flush() staging: wfx: fix case where AP stop with CAB traffic pending staging: wfx: remove hack about tx_rate policies drivers/staging/wfx/bh.c | 4 +- drivers/staging/wfx/data_tx.c | 196 +++++-------- drivers/staging/wfx/data_tx.h | 5 +- drivers/staging/wfx/hif_tx.c | 2 + drivers/staging/wfx/main.c | 2 - drivers/staging/wfx/queue.c | 529 +++++++++++----------------------- drivers/staging/wfx/queue.h | 36 +-- drivers/staging/wfx/sta.c | 87 ++---- drivers/staging/wfx/sta.h | 2 - drivers/staging/wfx/wfx.h | 7 +- 10 files changed, 281 insertions(+), 589 deletions(-) -- 2.25.1