Re: [PATCH] net: dma: use dmaengine_desc_set_callback()
From: Loic Poulain
Date: Tue Nov 03 2026 - 04:00:32 EST
On Mon, Nov 2, 2026 at 8:19 PM <Frank.Li@xxxxxxxxxxx> wrote:
>
> From: Frank Li <Frank.Li@xxxxxxx>
>
> 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@xxxxxxx>
Reviewed-by: Loic Poulain <loic.poulain@xxxxxxxxxxxxxxxx>
> ---
> 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
>