[PATCH] net: dma: use dmaengine_desc_set_callback()

Frank.Li at oss.nxp.com Frank.Li at oss.nxp.com
Mon Nov 2 11:19:16 PST 2026


From: Frank Li <Frank.Li at nxp.com>

Replace open-coded assignments to callback and callback_param fields
of struct dma_async_tx_descriptor with calls to the
dmaengine_desc_set_callback() helper across net drivers.

No functional change intended. Prepare to make struct
dma_async_tx_descriptor private to the DMA engine.

Signed-off-by: Frank Li <Frank.Li at nxp.com>
---
 drivers/net/ethernet/allwinner/sun4i-emac.c       |  3 +--
 drivers/net/ethernet/micrel/ks8842.c              |  6 ++----
 drivers/net/ethernet/xilinx/xilinx_axienet_main.c |  6 ++----
 drivers/net/wwan/qcom_bam_dmux.c                  | 10 ++++------
 4 files changed, 9 insertions(+), 16 deletions(-)

diff --git a/drivers/net/ethernet/allwinner/sun4i-emac.c b/drivers/net/ethernet/allwinner/sun4i-emac.c
index 09b2abdfc9e84..d7ee42b2c1976 100644
--- a/drivers/net/ethernet/allwinner/sun4i-emac.c
+++ b/drivers/net/ethernet/allwinner/sun4i-emac.c
@@ -303,8 +303,7 @@ static int emac_dma_inblk_32bit(struct emac_board_info *db,
 		goto prepare_err;
 	}
 
-	desc->callback_param = req;
-	desc->callback = emac_dma_done_callback;
+	dmaengine_desc_set_callback(desc, emac_dma_done_callback, NULL, req);
 
 	cookie = dmaengine_submit(desc);
 	ret = dma_submit_error(cookie);
diff --git a/drivers/net/ethernet/micrel/ks8842.c b/drivers/net/ethernet/micrel/ks8842.c
index f0d6bfc6025ca..c68abd4643e72 100644
--- a/drivers/net/ethernet/micrel/ks8842.c
+++ b/drivers/net/ethernet/micrel/ks8842.c
@@ -453,8 +453,7 @@ static int ks8842_tx_frame_dma(struct sk_buff *skb, struct net_device *netdev)
 	if (!ctl->adesc)
 		return NETDEV_TX_BUSY;
 
-	ctl->adesc->callback_param = netdev;
-	ctl->adesc->callback = ks8842_dma_tx_cb;
+	dmaengine_desc_set_callback(ctl->adesc, ks8842_dma_tx_cb, NULL, netdev);
 	dmaengine_submit(ctl->adesc);
 
 	netdev->stats.tx_bytes += skb->len;
@@ -567,8 +566,7 @@ static int __ks8842_start_new_rx_dma(struct net_device *netdev)
 			goto out;
 		}
 
-		ctl->adesc->callback_param = netdev;
-		ctl->adesc->callback = ks8842_dma_rx_cb;
+		dmaengine_desc_set_callback(ctl->adesc, ks8842_dma_rx_cb, NULL, netdev);
 		dmaengine_submit(ctl->adesc);
 	} else {
 		err = -ENOMEM;
diff --git a/drivers/net/ethernet/xilinx/xilinx_axienet_main.c b/drivers/net/ethernet/xilinx/xilinx_axienet_main.c
index 8a50cad1c104f..7e83c4b5f1931 100644
--- a/drivers/net/ethernet/xilinx/xilinx_axienet_main.c
+++ b/drivers/net/ethernet/xilinx/xilinx_axienet_main.c
@@ -1014,8 +1014,7 @@ axienet_start_xmit_dmaengine(struct sk_buff *skb, struct net_device *ndev)
 
 	skbuf_dma->skb = skb;
 	skbuf_dma->sg_len = sg_len;
-	dma_tx_desc->callback_param = lp;
-	dma_tx_desc->callback_result = axienet_dma_tx_cb;
+	dmaengine_desc_set_callback(dma_tx_desc, NULL, axienet_dma_tx_cb, lp);
 	/* Claim the ring slot only after the steps above that can fail.  The
 	 * completion callback can't run before dmaengine_submit().
 	 */
@@ -1565,8 +1564,7 @@ static void axienet_rx_submit_desc(struct net_device *ndev)
 	skbuf_dma->skb = skb;
 	skbuf_dma->dma_address = sg_dma_address(skbuf_dma->sgl);
 	skbuf_dma->desc = dma_rx_desc;
-	dma_rx_desc->callback_param = lp;
-	dma_rx_desc->callback_result = axienet_dma_rx_cb;
+	dmaengine_desc_set_callback(dma_rx_desc, NULL, axienet_dma_rx_cb, lp);
 	lp->rx_ring_head++;
 	dmaengine_submit(dma_rx_desc);
 
diff --git a/drivers/net/wwan/qcom_bam_dmux.c b/drivers/net/wwan/qcom_bam_dmux.c
index cc6ace8d64371..1479f8362e04e 100644
--- a/drivers/net/wwan/qcom_bam_dmux.c
+++ b/drivers/net/wwan/qcom_bam_dmux.c
@@ -195,9 +195,8 @@ static bool bam_dmux_skb_dma_submit_tx(struct bam_dmux_skb_dma *skb_dma)
 		return false;
 	}
 
-	desc->callback = bam_dmux_tx_callback;
-	desc->callback_param = skb_dma;
-	desc->cookie = dmaengine_submit(desc);
+	dmaengine_desc_set_callback(desc, bam_dmux_tx_callback, NULL, skb_dma);
+	dmaengine_submit(desc);
 	return true;
 }
 
@@ -477,9 +476,8 @@ static bool bam_dmux_skb_dma_submit_rx(struct bam_dmux_skb_dma *skb_dma)
 		return false;
 	}
 
-	desc->callback = bam_dmux_rx_callback;
-	desc->callback_param = skb_dma;
-	desc->cookie = dmaengine_submit(desc);
+	dmaengine_desc_set_callback(desc, bam_dmux_rx_callback, NULL, skb_dma);
+	dmaengine_submit(desc);
 	return true;
 }
 
-- 
2.43.0




More information about the linux-arm-kernel mailing list