FAILED: patch "[PATCH] net: moxa: pass pdev instead of ndev to DMA functions" failed to apply to 4.14-stable tree
Subsystems (2)
[email protected]
maintainerThe patch below does not apply to the 4.14-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 3a12df22a8f68954a4ba48435c06b3d1791c87c4 Mon Sep 17 00:00:00 2001
From: Sergei Antonov <[email protected]>
Date: Fri, 12 Aug 2022 20:13:39 +0300
Subject: [PATCH] net: moxa: pass pdev instead of ndev to DMA functions
dma_map_single() calls fail in moxart_mac_setup_desc_ring() and moxart_mac_start_xmit() which leads to an incessant output of this:
[ 16.043925] moxart-ethernet 92000000.mac eth0: DMA mapping error [ 16.050957] moxart-ethernet 92000000.mac eth0: DMA mapping error [ 16.058229] moxart-ethernet 92000000.mac eth0: DMA mapping error
Passing pdev to DMA is a common approach among net drivers.
Fixes 6c821bd9edc9 ("net: Add MOXA ART SoCs ethernet driver")
Signed-off-by Sergei Antonov <[email protected]>
Suggested-by Andrew Lunn <[email protected]>
Reviewed-by Andrew Lunn <[email protected]>
Signed-off-by Jakub Kicinski <[email protected]>
drivers/net/ethernet/moxa/moxart_ether.c +10 -10
@@ -77,7 +77,7 @@ static void moxart_mac_free_memory(struct net_device *ndev)int i;for (i =0 ; i <RX_DESC_NUM ; i++) -dma_unmap_single (&ndev->dev, priv->rx_mapping[i], +dma_unmap_single (&priv->pdev->dev, priv->rx_mapping[i], priv->rx_buf_size,DMA_FROM_DEVICE );if (priv->tx_desc_base)
@@ -147,11 +147,11 @@ static void moxart_mac_setup_desc_ring(struct net_device *ndev) desc + RX_REG_OFFSET_DESC1); priv->rx_buf[i] = priv->rx_buf_base + priv->rx_buf_size * i; - priv->rx_mapping[i] =dma_map_single (&ndev->dev, + priv->rx_mapping[i] =dma_map_single (&priv->pdev->dev, priv->rx_buf[i], priv->rx_buf_size,DMA_FROM_DEVICE ); -if (dma_mapping_error (&ndev->dev, priv->rx_mapping[i])) +if (dma_mapping_error (&priv->pdev->dev, priv->rx_mapping[i]))netdev_err (ndev,"DMA mapping error\n" ); moxart_desc_write(priv->rx_mapping[i],
@@ -240,7 +240,7 @@ static int moxart_rx_poll(struct napi_struct *napi, int budget)if (len >RX_BUF_SIZE ) len =RX_BUF_SIZE ; -dma_sync_single_for_cpu (&ndev->dev, +dma_sync_single_for_cpu (&priv->pdev->dev, priv->rx_mapping[rx_head], priv->rx_buf_size,DMA_FROM_DEVICE ); skb =netdev_alloc_skb_ip_align (ndev, len);
@@ -294,7 +294,7 @@ static void moxart_tx_finished(struct net_device *ndev)unsigned int tx_tail = priv->tx_tail;while (tx_tail != tx_head) { -dma_unmap_single (&ndev->dev, priv->tx_mapping[tx_tail], +dma_unmap_single (&priv->pdev->dev, priv->tx_mapping[tx_tail], priv->tx_len[tx_tail],DMA_TO_DEVICE ); ndev->stats.tx_packets++;
@@ -358,9 +358,9 @@ static netdev_tx_t moxart_mac_start_xmit(struct sk_buff *skb, len = skb->len >TX_BUF_SIZE ?TX_BUF_SIZE : skb->len; - priv->tx_mapping[tx_head] =dma_map_single (&ndev->dev, skb->data, + priv->tx_mapping[tx_head] =dma_map_single (&priv->pdev->dev, skb->data, len,DMA_TO_DEVICE ); -if (dma_mapping_error (&ndev->dev, priv->tx_mapping[tx_head])) { +if (dma_mapping_error (&priv->pdev->dev, priv->tx_mapping[tx_head])) {netdev_err (ndev,"DMA mapping error\n" ); goto out_unlock; }
@@ -379,7 +379,7 @@ static netdev_tx_t moxart_mac_start_xmit(struct sk_buff *skb, len =ETH_ZLEN ; } -dma_sync_single_for_device (&ndev->dev, priv->tx_mapping[tx_head], +dma_sync_single_for_device (&priv->pdev->dev, priv->tx_mapping[tx_head], priv->tx_buf_size,DMA_TO_DEVICE ); txdes1 =TX_DESC1_LTS |TX_DESC1_FTS | (len &TX_DESC1_BUF_SIZE_MASK );
@@ -493,7 +493,7 @@ static int moxart_mac_probe(struct platform_device *pdev) priv->tx_buf_size =TX_BUF_SIZE ; priv->rx_buf_size =RX_BUF_SIZE ; - priv->tx_desc_base =dma_alloc_coherent (&pdev->dev,TX_REG_DESC_SIZE * + priv->tx_desc_base =dma_alloc_coherent (p_dev,TX_REG_DESC_SIZE *TX_DESC_NUM , &priv->tx_base,GFP_DMA |GFP_KERNEL );if (!priv->tx_desc_base) {
@@ -501,7 +501,7 @@ static int moxart_mac_probe(struct platform_device *pdev) goto init_fail; } - priv->rx_desc_base =dma_alloc_coherent (&pdev->dev,RX_REG_DESC_SIZE * + priv->rx_desc_base =dma_alloc_coherent (p_dev,RX_REG_DESC_SIZE *RX_DESC_NUM , &priv->rx_base,GFP_DMA |GFP_KERNEL );if (!priv->rx_desc_base) {