]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
wifi: ath12k: Fix memory leak during vdev_id mismatch
authorP Praneesh <praneesh.p@oss.qualcomm.com>
Wed, 2 Apr 2025 17:40:32 +0000 (23:10 +0530)
committerJeff Johnson <jeff.johnson@oss.qualcomm.com>
Mon, 7 Apr 2025 15:21:58 +0000 (08:21 -0700)
Currently driver enables vdev_id check as part of the bank configuration
in ath12k_dp_tx_get_vdev_bank_config(). This check ensures that the vdev_id
configured in the bank register aligns with the vdev_id in the packet's
address search table within the firmware. If there is a mismatch, the
firmware forwards the packet with the HTT status
HAL_WBM_REL_HTT_TX_COMP_STATUS_VDEVID_MISMATCH. Since driver does not
handle this vdev_id mismatch HTT status, the corresponding buffers are not
freed properly, causing a memory leak. Fix this issue by adding handling to
free the buffers when a vdev_id mismatch HTT status is encountered.

Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.4.1-00199-QCAHKSWPL_SILICONZ-1
Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.0.c5-00481-QCAHMTSWPL_V1.0_V2.0_SILICONZ-

Fixes: d889913205cf ("wifi: ath12k: driver for Qualcomm Wi-Fi 7 devices")
Signed-off-by: P Praneesh <praneesh.p@oss.qualcomm.com>
Link: https://patch.msgid.link/20250402174032.2651221-1-praneesh.p@oss.qualcomm.com
Signed-off-by: Jeff Johnson <jeff.johnson@oss.qualcomm.com>
drivers/net/wireless/ath/ath12k/dp_tx.c
drivers/net/wireless/ath/ath12k/hal_desc.h

index 29e2715024cea270d5e122abf6ee9a7d6139ee1b..b93669348f358ccead877f20271b0d4954c6aed4 100644 (file)
@@ -586,6 +586,7 @@ ath12k_dp_tx_process_htt_tx_complete(struct ath12k_base *ab,
        case HAL_WBM_REL_HTT_TX_COMP_STATUS_TTL:
        case HAL_WBM_REL_HTT_TX_COMP_STATUS_REINJ:
        case HAL_WBM_REL_HTT_TX_COMP_STATUS_INSPECT:
+       case HAL_WBM_REL_HTT_TX_COMP_STATUS_VDEVID_MISMATCH:
                ath12k_dp_tx_free_txbuf(ab, msdu, mac_id, tx_ring);
                break;
        case HAL_WBM_REL_HTT_TX_COMP_STATUS_MEC_NOTIFY:
index 3e8983b85de86327c8ab757099356855af055f7d..63d279fab322491f4324016157fe1a6a7c336fd3 100644 (file)
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: BSD-3-Clause-Clear */
 /*
  * Copyright (c) 2018-2021 The Linux Foundation. All rights reserved.
- * Copyright (c) 2021-2022, 2024 Qualcomm Innovation Center, Inc. All rights reserved.
+ * Copyright (c) 2021-2022, 2024-2025 Qualcomm Innovation Center, Inc. All rights reserved.
  */
 #include "core.h"
 
@@ -1298,6 +1298,7 @@ enum hal_wbm_htt_tx_comp_status {
        HAL_WBM_REL_HTT_TX_COMP_STATUS_REINJ,
        HAL_WBM_REL_HTT_TX_COMP_STATUS_INSPECT,
        HAL_WBM_REL_HTT_TX_COMP_STATUS_MEC_NOTIFY,
+       HAL_WBM_REL_HTT_TX_COMP_STATUS_VDEVID_MISMATCH,
        HAL_WBM_REL_HTT_TX_COMP_STATUS_MAX,
 };