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;