[PATCH v2 1/4] mac80211: call ieee80211_tx_h_rate_ctrl() when dequeue

Felix Fietkau nbd at nbd.name
Thu Jun 17 10:59:26 PDT 2021

On 2021-06-17 12:50, Felix Fietkau wrote:
> On 2021-05-28 08:05, Ryder Lee wrote:
>> Make ieee80211_tx_h_rate_ctrl() get called on dequeue to improve
>> performance since it reduces the turnaround time for rate control.
>> Signed-off-by: Ryder Lee <ryder.lee at mediatek.com>
>> ---
>> change since v2 - roll ieee80211_tx_h_rate_ctrl checks into one condition
> There were some OpenWrt crash reported which appear to be related to
> this patch. I was able to reproduce a deadlock with ath9k, and I'm
> currently looking into it.
Some more information about the crash:
- ath9k calls ieee80211_tx_dequeue with the tx queue lock held
- ieee80211_tx_dequeue calls minstrel get_rate
- get_rate calls minstrel_aggr_check
- minstrel_aggr check calls ieee80211_start_tx_ba_session
- ieee80211_start_tx_ba_session tries to send a frame
- ath9k tries to acquire the tx lock it already holds

I've fixed this in v3 by moving the logic of minstrel_aggr_check into

- Felix

More information about the Linux-mediatek mailing list