From: Kuan-Chung Chen Currently, we reclaim TXBD only when the available resource is 0. When two ACs share the same DMA channel, the lower-priority AC occupies the whole channel, which affects the higher-priority AC's throughput. Add RTW89_PCI_TXBD_RECLAIM_TH to reclaim early once the available resource falls below it, improving TX fairness between ACs sharing a DMA channel. Signed-off-by: Kuan-Chung Chen Signed-off-by: Ping-Ke Shih --- drivers/net/wireless/realtek/rtw89/pci.c | 4 ++-- drivers/net/wireless/realtek/rtw89/pci.h | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/net/wireless/realtek/rtw89/pci.c b/drivers/net/wireless/realtek/rtw89/pci.c index 6d19e759fc0d..76523d057825 100644 --- a/drivers/net/wireless/realtek/rtw89/pci.c +++ b/drivers/net/wireless/realtek/rtw89/pci.c @@ -1281,7 +1281,7 @@ static u32 __rtw89_pci_check_and_reclaim_tx_resource(struct rtw89_dev *rtwdev, bd_cnt = rtw89_pci_get_avail_txbd_num(tx_ring); wd_cnt = wd_ring->curr_num; - if (wd_cnt == 0 || bd_cnt == 0) { + if (wd_cnt == 0 || bd_cnt < RTW89_PCI_TXBD_RECLAIM_TH) { cnt = rtw89_pci_rxbd_recalc(rtwdev, rx_ring); if (cnt) rtw89_pci_release_tx(rtwdev, rx_ring, cnt); @@ -1289,7 +1289,7 @@ static u32 __rtw89_pci_check_and_reclaim_tx_resource(struct rtw89_dev *rtwdev, goto out_unlock; bd_cnt = rtw89_pci_get_avail_txbd_num(tx_ring); - if (bd_cnt == 0) + if (bd_cnt < RTW89_PCI_TXBD_RECLAIM_TH) rtw89_pci_reclaim_txbd(rtwdev, tx_ring); } diff --git a/drivers/net/wireless/realtek/rtw89/pci.h b/drivers/net/wireless/realtek/rtw89/pci.h index 0f9ea4bf54ea..3cc484bc1ca8 100644 --- a/drivers/net/wireless/realtek/rtw89/pci.h +++ b/drivers/net/wireless/realtek/rtw89/pci.h @@ -1120,6 +1120,7 @@ #define B_BE_MAX_TAG_NUM_MASK GENMASK(3, 0) #define RTW89_PCI_TXBD_NUM_MAX 256 +#define RTW89_PCI_TXBD_RECLAIM_TH (RTW89_PCI_TXBD_NUM_MAX >> 1) #define RTW89_PCI_RXBD_NUM_MAX 256 #define RTW89_PCI_TXWD_NUM_MAX 512 #define RTW89_PCI_TXWD_PAGE_SIZE 128 -- 2.53.0