Patch "net: bcmgenet: Utilize correct struct device for all DMA operations" has been added to the 4.8-stable tree
Subsystems (3)
This is a note to let you know that I've just added the patch titled
net: bcmgenet: Utilize correct struct device for all DMA operations
to the 4.8-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
net-bcmgenet-utilize-correct-struct-device-for-all-dma-operations.patch
and it can be found in the queue-4.8 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From foo@baz Thu Dec 8 07:19:12 CET 2016
From: Florian Fainelli <[email protected]>
Date: Thu, 1 Dec 2016 09:45:45 -0800
Subject: net: bcmgenet: Utilize correct struct device for all DMA operations
From: Florian Fainelli <[email protected]>
[ Upstream commit 8c4799ac799665065f9bf1364fd71bf4f7dc6a4a ]
__bcmgenet_tx_reclaim() and bcmgenet_free_rx_buffers() are not using the same struct device during unmap that was used for the map operation, which makes DMA-API debugging warn about it. Fix this by always using &priv->pdev->dev throughout the driver, using an identical device reference for all map/unmap calls.
--- drivers/net/ethernet/broadcom/genet/bcmgenet.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-)
drivers/net/ethernet/broadcom/genet/bcmgenet.c +5 -3
@@ -1172,6 +1172,7 @@ static unsigned int __bcmgenet_tx_reclai struct bcmgenet_tx_ring *ring) {struct bcmgenet_priv *priv =netdev_priv (dev); +struct device *kdev = &priv->pdev->dev;struct enet_cb *tx_cb_ptr;struct netdev_queue *txq;unsigned int pkts_compl =0 ;
@@ -1199,13 +1200,13 @@ static unsigned int __bcmgenet_tx_reclaiif (tx_cb_ptr->skb) { pkts_compl++; bytes_compl +=GENET_CB (tx_cb_ptr->skb)->bytes_sent; -dma_unmap_single (&dev->dev, +dma_unmap_single (kdev,dma_unmap_addr (tx_cb_ptr, dma_addr),dma_unmap_len (tx_cb_ptr, dma_len),DMA_TO_DEVICE );bcmgenet_free_cb (tx_cb_ptr); }else if (dma_unmap_addr (tx_cb_ptr, dma_addr)) { -dma_unmap_page (&dev->dev, +dma_unmap_page (kdev,dma_unmap_addr (tx_cb_ptr, dma_addr),dma_unmap_len (tx_cb_ptr, dma_len),DMA_TO_DEVICE );
@@ -1775,6 +1776,7 @@ static int bcmgenet_alloc_rx_buffers(strstatic void bcmgenet_free_rx_buffers (struct bcmgenet_priv *priv) { +struct device *kdev = &priv->pdev->dev;struct enet_cb *cb;int i;
@@ -1782,7 +1784,7 @@ static void bcmgenet_free_rx_buffers(str cb = &priv->rx_cbs[i];if (dma_unmap_addr (cb, dma_addr)) { -dma_unmap_single (&priv->dev->dev, +dma_unmap_single (kdev,dma_unmap_addr (cb, dma_addr), priv->rx_buf_len,DMA_FROM_DEVICE );dma_unmap_addr_set (cb, dma_addr,0 );
Patches currently in stable-queue which might be from [email protected] are
queue-4.8/net-dsa-bcm_sf2-ensure-we-re-negotiate-eee-during-after-link-change.patch queue-4.8/net-dsa-b53-fix-vlan-usage-and-how-we-treat-cpu-port.patch queue-4.8/net-bcmgenet-utilize-correct-struct-device-for-all-dma-operations.patch