From e0acafee870374f11cbfe42df094900bd15a33bb Mon Sep 17 00:00:00 2001 From: Bitterblue Smith Date: Sun, 21 Jul 2024 23:33:47 +0300 Subject: [PATCH] 8821a, 8812a: Switch to dynamic RX aggregation --- rtw8821a.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/rtw8821a.c b/rtw8821a.c index 0ba357e..7031ca1 100644 --- a/rtw8821a.c +++ b/rtw8821a.c @@ -551,14 +551,13 @@ static void rtw8821au_tx_aggregation(struct rtw_dev *rtwdev) chip->usb_tx_agg_desc_num << 1); } -static void rtw8821au_rx_aggregation(struct rtw_dev *rtwdev) +static void rtw8821au_rx_aggregation(struct rtw_dev *rtwdev, bool enable) { struct rtw_usb *rtwusb = rtw_get_usb_priv(rtwdev); - enum usb_device_speed speed = rtwusb->udev->speed; u8 rxagg_usb_size, rxagg_usb_timeout; u16 val16; - if (speed == USB_SPEED_SUPER) { + if (rtwusb->udev->speed == USB_SPEED_SUPER) { rxagg_usb_size = 0x7; rxagg_usb_timeout = 0x1a; } else { @@ -566,6 +565,11 @@ static void rtw8821au_rx_aggregation(struct rtw_dev *rtwdev) rxagg_usb_timeout = 0x20; } + if (!enable) { + rxagg_usb_size = 0x0; + rxagg_usb_timeout = 0x1; + } + val16 = (rxagg_usb_timeout << 8) | rxagg_usb_size; rtw_write16(rtwdev, REG_RXDMA_AGG_PG_TH, val16); @@ -1222,7 +1226,6 @@ static int rtw8821a_power_on(struct rtw_dev *rtwdev) rtw_write8(rtwdev, REG_ACKTO, 0x80); rtw8821au_tx_aggregation(rtwdev); - rtw8821au_rx_aggregation(rtwdev); rtw8821a_init_beacon_parameters(rtwdev); rtw_write8(rtwdev, REG_BCN_MAX_ERR, 0xff); @@ -3808,6 +3811,7 @@ static struct rtw_chip_ops rtw8821a_ops = { .set_gid_table = NULL, .cfg_csi_rate = NULL, .fill_txdesc_checksum = rtw8821a_fill_txdesc_checksum, + .rx_aggregation = rtw8821au_rx_aggregation, .coex_set_init = rtw8821a_coex_cfg_init, .coex_set_ant_switch = rtw8821a_coex_cfg_ant_switch, .coex_set_gnt_fix = rtw8821a_coex_cfg_gnt_fix,