On 07/08/2024 03:37, Ping-Ke Shih wrote: > Bitterblue Smith <rtl8821cerfe2@xxxxxxxxx> wrote: >> @@ -236,13 +237,17 @@ static void rtw_watch_dog_work(struct work_struct *work) >> else >> ps_active = false; >> >> - ewma_tp_add(&stats->tx_ewma_tp, >> - (u32)(stats->tx_unicast >> RTW_TP_SHIFT)); >> - ewma_tp_add(&stats->rx_ewma_tp, >> - (u32)(stats->rx_unicast >> RTW_TP_SHIFT)); >> + tx_unicast_mbps = stats->tx_unicast >> RTW_TP_SHIFT; >> + rx_unicast_mbps = stats->rx_unicast >> RTW_TP_SHIFT; >> + >> + ewma_tp_add(&stats->tx_ewma_tp, tx_unicast_mbps); >> + ewma_tp_add(&stats->rx_ewma_tp, rx_unicast_mbps); >> stats->tx_throughput = ewma_tp_read(&stats->tx_ewma_tp); >> stats->rx_throughput = ewma_tp_read(&stats->rx_ewma_tp); >> >> + rtw_hci_dynamic_rx_agg(rtwdev, >> + tx_unicast_mbps >= 1 || rx_unicast_mbps >= 1); >> + > > Not sure if you have tried RTL8822CU with this dynamic_rx_agg? > I suspect RTL8822CU can't access IO before rtw_leave_lps(), at least RTL8822CE can't. > Let's move rtw_hci_dynamic_rx_agg() right after rtw_phy_dynamic_mechanism() below. > > Sorry to forget this point on v2 review. > >> /* reset tx/rx statictics */ >> stats->tx_unicast = 0; >> stats->rx_unicast = 0; > > > I received RTL8822CU (LM842) two days ago and tested these patches with it, but I was too lazy to update the commit messages. I didn't notice any problems. The RX speed measured with iperf3 before was ~200 Mbps, after it's ~300 Mbps on my x86_64 laptop. I will move the function call.