[PATCH ath-next] wifi: ath12k: change MAC buffer ring size to 4096
Shawn Guo
shengchao.guo at oss.qualcomm.com
Tue Oct 20 01:53:03 PDT 2026
+ linux-arm-msm
On Tue, Jun 09, 2026 at 08:13:58PM -0700, Yingying Tang wrote:
> For WCN7850, MAC buffer ring size is updated to 2048 in
> 955df16f2a4c3 ("wifi: ath12k: change MAC buffer ring size to 2048")
> to increase peak throughput.
>
> But during the RX process, a phenomenon can still be observed where
> the throughput drops by about 30% from its peak value and then recovers,
> and this behavior repeats during RX.
>
> After increasing MAC buffer ring size to 4096, the data rate drop has
> gone.
>
> Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.1.c5-00302-QCAHMTSWPL_V1.0_V2.0_SILICONZ-1.115823.3
>
> Signed-off-by: Yingying Tang <yingying.tang at oss.qualcomm.com>
FYI, in case someone else runs into this: with this change (merged in
v7.3), WiFi on my Lenovo Yoga Slim 7x (X1E80100, WCN7850 hw2.0) stopped
working with the older firmware that Debian trixie still ships
(firmware-atheros 20250410-2):
WLAN.HMT.1.0.c5-00481-QCAHMTSWPL_V1.0_V2.0_SILICONZ-3
Probe and firmware download succeed, but every WMI command times out
once the interface is brought up:
ath12k_wifi7_pci 0004:01:00.0: wmi command 16387 timeout
ath12k_wifi7_pci 0004:01:00.0: failed to send WMI_PDEV_SET_PARAM cmd
ath12k_wifi7_pci 0004:01:00.0: failed to enable PMF QOS: -11
ath12k_wifi7_pci 0004:01:00.0: fail to start mac operations in pdev idx 0 ret -11
Bisecting ath12k between v7.2 and v7.3 lands on this commit, and
reverting it on v7.3 brings WiFi back with the old firmware.
Unmodified v7.3 works fine after updating to the current linux-firmware
image:
WLAN.HMT.1.1.c7-00108-QCAHMTSWPL_V1.0_V2.0_SILICONZ_UPSTREAM-3
On Debian trixie that one is available from trixie-backports
(firmware-atheros 20260916-1~bpo13+1).
So nothing needs fixing on the driver side. I'm just leaving this here
so that anyone who sees "wmi command ... timeout" on WCN7850 after a
kernel upgrade knows to update the firmware first.
Thanks,
Shawn
> ---
> drivers/net/wireless/ath/ath12k/dp.h | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/net/wireless/ath/ath12k/dp.h b/drivers/net/wireless/ath/ath12k/dp.h
> index f8cfc7bb29dd..6596089d4168 100644
> --- a/drivers/net/wireless/ath/ath12k/dp.h
> +++ b/drivers/net/wireless/ath/ath12k/dp.h
> @@ -205,7 +205,7 @@ struct ath12k_pdev_dp {
> #define DP_REO_CMD_RING_SIZE 256
> #define DP_REO_STATUS_RING_SIZE 2048
> #define DP_RXDMA_BUF_RING_SIZE 4096
> -#define DP_RX_MAC_BUF_RING_SIZE 2048
> +#define DP_RX_MAC_BUF_RING_SIZE 4096
> #define DP_RXDMA_REFILL_RING_SIZE 2048
> #define DP_RXDMA_ERR_DST_RING_SIZE 1024
> #define DP_RXDMA_MON_STATUS_RING_SIZE 1024
> --
> base-commit: ff49eba595df500e4ddccc593088c8a4ab5f2c27
More information about the ath12k
mailing list