From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pf1-f173.google.com (mail-pf1-f173.google.com [209.85.210.173]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B92C427B50F for ; Fri, 26 Jun 2026 04:10:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.173 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782447016; cv=none; b=ppmjSN3Estib/frtLIOE2qXSnDixqkn6K09SEE+2rx6ZjXW7X6+pk6TAKEJFzYo6SX3h2YnnGWGovZD3puAU2jGS+neztRDJFz72CBPAuVhOpK10JsCWw6g4hJhCtCp2VyD1AEbR43XybpVW5xTedncawrcZegtM8arUDAz69pQ= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782447016; c=relaxed/simple; bh=Z7PEm0588yWqu+t0ZOme97u5bbYjfelGlCrcrE8324M=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=SgMWqfq6A7xJUEHv+FPpdq0FIjKjbvscFbX6Ivo2Nf3oMiVcEqiiQq75tF2lBtmV95nSA6LoxFKYpjhZ4W3lYi4Godl3mWnwpgaWQRGs1Hl1KjvSxZTVC13fbR8wc9ND/uMZqn912XChNJ5i8v9Lwqvwdk47A7bw8Cp07TLsTSE= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=J0dSl2v5; arc=none smtp.client-ip=209.85.210.173 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="J0dSl2v5" Received: by mail-pf1-f173.google.com with SMTP id d2e1a72fcca58-8453a67659fso260014b3a.1 for ; Thu, 25 Jun 2026 21:10:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1782447015; x=1783051815; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=5VajJu/wk8wk7RNe/rjqp2e4ZKVCEWthZPhYfYg7pOE=; b=J0dSl2v5TfM5TBZ4W0/Wn8rVdcDRRuQ9LwgXS2uIIHoIpBPF7CpPCXgrko0v3K1NAZ 2fYBNmmB0t0X2+2xySB9mRMFbiJQxJ/hoznYLRQ8+Rkfop939/nAHmJ3dkMj/S9z9GeS V0kH4IeET4anibbH9pzi2Y+brSzHoW4Kl9G2zlClYn1/wQUpMryh1LAhgowTug9A63Fn veuGxMoBCkaDcqu22p+ZPGQ4uHOOF0dZYF+6mvDqWEBhC3/9uEK9ed86R7JJBJRu9EP7 4Pd7RgUPg6wCFt9BSl9viJ86QJzghqJwdHSHTu2hGeEVLzErvakLS0spdi3OvU/OsMJp /FAw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1782447015; x=1783051815; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=5VajJu/wk8wk7RNe/rjqp2e4ZKVCEWthZPhYfYg7pOE=; b=mhW03EeP7FWCafiAh9IUeq9lRGQYbIU/tFd5b2PT0Z7xvcWZa+80LGOz9MROIP1fow LCvQgcqKY3U4spoGhX8CgLzpiNQpjFpSioi8QJ8PUlnR3ZQa83tTvVK/LCJlijTjldOW 5vbcxnI4CQsQhns4bXpiQv538t1UweKgIS8q/ZR4YIrZMtA1nsWKb3AwDBKSuOUVxPaA 5jlsR4u9FUhs7Hia0vfd/Ai1PPxK8TFlcQwaXel2RhW3SxW1OOk0j+4GISdFn8qm2WXy pzx71qoWyg27MTQR7OEV5BhIWsJP2iEzzQtBnQFxqtivroCHU1X8QlXVmDYGxVyHHOuv J3Fw== X-Forwarded-Encrypted: i=1; AHgh+RrF6WohkNCDOMHEPSTQYfhD19z9PHtj7zUjr56NBu2E2XLS+zm9mtpIlADg8r0kuviWa1awiq6P7kO/kn8=@vger.kernel.org X-Gm-Message-State: AOJu0YyVe6Z3VD2iIjINN5DxJNbaxx83w+pGZg9vaG3wOARKtWRZp9hG LsKkgbUFqZ5htvILoGus343dyOwSW3Os+QemHtCGV4Lv4EIYMSYaFNvfE7U3ew== X-Gm-Gg: AfdE7ckkZNY1uREqHcteVOPSUQ5urnMCWxNb4HX0fTx4mRi0je0Il0tVV/r/CSZU/BQ kELt08eu/HP5pYDewMvqxda77MAzZwRmR1/y+5ItCBMoxA6GFOCfsY1qWomaevQF7ZAr+2Jmoq6 ccgU1JVaKbzlUAm5xsomOqBUumplvOn+a1WEEBCsjyP3FZthsYcLHjFe05OLVd3UKab5Nlc3jvg jGEn9/PjmqksW+biuB+XSUO8sUdfRfzztKTut9jtowHzQL53crz6NK94E+mKDWTxxDVWWaFQFLd h3vr/fDyQIHb/7fn8YRYcC3IVFbTrkdoKF55Gjl2wX2MsbnAm0RmQtjK1f0+T46KHvVCGZoaCia 5AtgVGyifthepHIwdyqZkU/1/Lx4caZDbAbcYQy2D0kw+PmqsJAG6XHKJ5aTdT7IU+AXqaRISaC GRUh/tdt6xVIqRrZrc3yp86aRSa/ALDKbTOR037lBthaM3TuUF9+gaLNXxQi/NbwAjmYpSmeOXa SrP15N/f327txtDzwW3 X-Received: by 2002:a05:6a00:1382:b0:842:2419:6bfe with SMTP id d2e1a72fcca58-845b39a255cmr7441406b3a.7.1782447014981; Thu, 25 Jun 2026 21:10:14 -0700 (PDT) Received: from ryzen.lan ([2601:644:8000:5b5d::e34]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-845a40f05f9sm5876961b3a.42.2026.06.25.21.10.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 25 Jun 2026 21:10:14 -0700 (PDT) From: Rosen Penev To: linux-wireless@vger.kernel.org Cc: =?UTF-8?q?Toke=20H=C3=B8iland-J=C3=B8rgensen?= , linux-kernel@vger.kernel.org (open list) Subject: [PATCHv2 ath-next] wifi: ath9k: return ath_buf to pool on A-MPDU subframe retry Date: Thu, 25 Jun 2026 21:10:13 -0700 Message-ID: <20260626041013.859834-1-rosenp@gmail.com> X-Mailer: git-send-email 2.54.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit When an A-MPDU subframe needs retransmission, its ath_buf descriptor was moved to a local bf_head list that went out of scope without returning the buffer to the free pool (sc->tx.txbuf). This progressively depletes the 512-entry TX buffer pool under normal retransmission conditions, eventually stalling all TX. Unmap the DMA mapping (a new one will be created on retry), clear the buffer references including fi->bf to prevent reuse of the freed descriptor on retry, and return it to the pool via ath_tx_return_buffer. Assisted-by: opencode:big-pickle Signed-off-by: Rosen Penev --- v2: set fi-bf to NULL. drivers/net/wireless/ath/ath9k/xmit.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/drivers/net/wireless/ath/ath9k/xmit.c b/drivers/net/wireless/ath/ath9k/xmit.c index 3334f570be50..31187753a819 100644 --- a/drivers/net/wireless/ath/ath9k/xmit.c +++ b/drivers/net/wireless/ath/ath9k/xmit.c @@ -665,6 +665,16 @@ static void ath_tx_complete_aggr(struct ath_softc *sc, struct ath_txq *txq, * queue to retain ordering */ __skb_queue_tail(&bf_pending, skb); + + if (!list_empty(&bf_head)) { + dma_unmap_single(sc->dev, bf->bf_buf_addr, + skb->len, DMA_TO_DEVICE); + bf->bf_buf_addr = 0; + bf->bf_mpdu = NULL; + fi->bf = NULL; + list_del(&bf->list); + ath_tx_return_buffer(sc, bf); + } } bf = bf_next; -- 2.54.0