From nobody Thu Jun 18 21:25:55 2026 Received: from mail-pj1-f44.google.com (mail-pj1-f44.google.com [209.85.216.44]) (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 723163019A6 for ; Sun, 17 May 2026 21:43:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779054201; cv=none; b=t5xSsExFgbYUs8diLTShslTT/fhQNQ+MCTIrfJSQTI9KK7tYV9aSQ9axH5CU/MHPX7heWTSFC47r/kWFtXlbb0JsRiJ+2xXX0JSp9ioPCG1NlxZM+whCIlbfcJxvozPcCgLwmgoMgCkoA8nujyWYpuTVuRpjM7ZCHS13Pai6aGs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779054201; c=relaxed/simple; bh=x2SnDPx6H1QagNxCIExQTM0vo6QvPDaPGnXJCvJjNMs=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=HCpPh0C2l9vwLQ5CRXZlNCGko1hoAqiK72ZbkWsu8iyhs9FQ8WwH0QeOu5H0SaJEdW13Zm6KtXIsd8l6IEqG+DaJUbSpdfmeluP6C9cZM1cBjnr3hl/cWWwrU8ciVWyaG9MxZtOm3gxQ5aY2imgIkm7J3pt9GNUdAwtDFHjXo/Y= 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=hWaBxjQP; arc=none smtp.client-ip=209.85.216.44 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="hWaBxjQP" Received: by mail-pj1-f44.google.com with SMTP id 98e67ed59e1d1-367d88b9940so786403a91.1 for ; Sun, 17 May 2026 14:43:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1779054200; x=1779659000; 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=QTe3wQNFzUmJo4OqUtxIUOB0CH2AbajczwxLdZTke8s=; b=hWaBxjQPSsTxT0ov4+m9HsfmhD25+HxsIeCWXohqy7DMFN4VTLfQ8650WtX3SQ8ta9 OP9aB+qZAZ+RFd5xG2dkMkvVcmN4ZZvbBgSetwGv8YwwFaeEI+Mr8K3JTb5ES3hBJxkW rnLXwR3mHnZjVkVN1v6QrzuM0HT3hC676mIIUzB27qShHVoi7rp3RgJ3IQdHKyNfMo9F yAj0Lq9X0X7jv0Y5Uq/zEJVewsiNDi/ALPXDO8EWGIr9trAddbefTCbtr+FTQBReSva7 VHt6lM5q2u4kKgnAgNYN5bW5SMK6LIv5vtSX0q6tO7ZOOBCv1QR4it5IByQZMiszjYUF f8ig== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779054200; x=1779659000; 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=QTe3wQNFzUmJo4OqUtxIUOB0CH2AbajczwxLdZTke8s=; b=tEzTajhRwpyhgHsbJZCR/syCFgFmM1tbjOGN/NPGp/xlPRnHkub0xfLHuZd3pCVbQA /nqSD8J1bAKQXCSFDTdZQ9J9Uob/uZlnGIP+skk30N8aE1jD4Lq8GaWVg2TOTyR+Gukt iA60aQa5qw+sJIdBFWGI6hRZ7suntbHfYxRgXyYEh+NOAmeWZgg700Fa8RFKUMbYnkyk 03Li5ecAUdqYhZLKtJ7Ai5ZgBLd4Rx5PWwD6ueWXjwr3jdvdMNHC2N5k4YLmzj4XVAvh iUxSagS1zM6Db5Hdb6+SUbWiXdkxcL6GCypalh0/ANETTYDVEXqjXgJWFfjBNayfHpzm wzbw== X-Forwarded-Encrypted: i=1; AFNElJ/wJGn3G3vpyWU9U429z7M7CAqsf6y++r1FdBYQCl8ZLa+AaD+CVoLMI9XsYb7Jjh4+C0TarmMGp7E7uSI=@vger.kernel.org X-Gm-Message-State: AOJu0YznyT62s8s0ayNf4Asen+movmeW7XM+4WiWbegRaWIilgEy4zkV sM3Wa1tfcFF8AFz8J/ofRTPnknpCKla+nRPitUeHiDqsW3vLDd3jIUsL X-Gm-Gg: Acq92OFcpHsbtvZPkB1dlF8eX6Cv6ViH1xKJsahe4ChGgbRIvwy8Gvb4Txht7FmN0ie Iwlo5yZHMKnwgB6DQVELXl+z93qveN7kBaHwP3Kn0FNx27/jHaeyIgS3Est5I+F8aOo4A0u+GVf lJ97uqceY5lDwNuMO451YglR+e+UqzgLZJ8MerujVGlZTLyHNeXAFphFDWROpFn2DO5MiuuhDrK jJlPJ7zqNT1EbXMQz/fo46Rrf6GuTMttxpzyW0tIOBiTmHW6DKGJXJihTTINzXE6+TTRAnfhgnP wxHOpftuFLWauisqtqoQ9h9dzY+825SVOno3OET2lTTP7sUMkiMNbmhIqvd+RhTs42fVZqeGCHO l/9ff+0WJBa9tS9OXNinlxQoq3yxfsMtd0Q7YRtGtd4LR697TNB9ro9DZGEJJj17U5vNsuAw++N nxe3uDDa1nDLVxBzYMelusL6XvTwRIvD2Cu7aN0RjzdJDcqLoCuW+XKW6HNliUaU73jKQwmqP+f hgLUI49NdrsMmbstKWc1Yj0NNsuBCGnDHM= X-Received: by 2002:a17:903:3c28:b0:2ba:bfb5:9cc with SMTP id d9443c01a7336-2bd7e8d3b9fmr141367515ad.26.1779054199825; Sun, 17 May 2026 14:43:19 -0700 (PDT) Received: from ryzen ([2601:644:8000:5b5d:7285:c2ff:fe45:8a32]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2bd5cfe6512sm128545545ad.52.2026.05.17.14.43.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 17 May 2026 14:43:19 -0700 (PDT) From: Rosen Penev To: netdev@vger.kernel.org Cc: Chris Snook , Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , linux-kernel@vger.kernel.org (open list) Subject: [PATCH net-next] net: ag71xx: Unmap TX DMA buffers on completion Date: Sun, 17 May 2026 14:43:02 -0700 Message-ID: <20260517214302.1450433-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: quoted-printable Content-Type: text/plain; charset="utf-8" Store the DMA address used for each transmitted skb and unmap it when the skb is completed or cleaned from the TX ring. This keeps the streaming DMA mapping lifetime paired with the skb lifetime on both normal completion and shutdown cleanup paths. Assisted-by: Codex:GPT-5.5 Signed-off-by: Rosen Penev --- drivers/net/ethernet/atheros/ag71xx.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/drivers/net/ethernet/atheros/ag71xx.c b/drivers/net/ethernet/a= theros/ag71xx.c index ac4eadb9190a..50136d6ccda6 100644 --- a/drivers/net/ethernet/atheros/ag71xx.c +++ b/drivers/net/ethernet/atheros/ag71xx.c @@ -305,6 +305,7 @@ struct ag71xx_buf { union { struct { struct sk_buff *skb; + dma_addr_t dma_addr; unsigned int len; } tx; struct { @@ -805,6 +806,8 @@ static int ag71xx_tx_packets(struct ag71xx *ag, bool fl= ush, int budget) if (!skb) continue; =20 + dma_unmap_single(&ag->pdev->dev, ring->buf[i].tx.dma_addr, + ring->buf[i].tx.len, DMA_TO_DEVICE); napi_consume_skb(skb, budget); ring->buf[i].tx.skb =3D NULL; =20 @@ -1133,6 +1136,9 @@ static void ag71xx_ring_tx_clean(struct ag71xx *ag) } =20 if (ring->buf[i].tx.skb) { + dma_unmap_single(&ag->pdev->dev, + ring->buf[i].tx.dma_addr, + ring->buf[i].tx.len, DMA_TO_DEVICE); bytes_compl +=3D ring->buf[i].tx.len; pkts_compl++; dev_kfree_skb_any(ring->buf[i].tx.skb); @@ -1531,6 +1537,7 @@ static netdev_tx_t ag71xx_hard_start_xmit(struct sk_b= uff *skb, goto err_drop_unmap; =20 i =3D (ring->curr + n - 1) & ring_mask; + ring->buf[i].tx.dma_addr =3D dma_addr; ring->buf[i].tx.len =3D skb->len; ring->buf[i].tx.skb =3D skb; =20 --=20 2.54.0