Skip to content

Commit 8c4799a

Browse files
ffainellidavem330
authored andcommitted
net: bcmgenet: Utilize correct struct device for all DMA operations
__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. Fixes: 1c1008c ("net: bcmgenet: add main driver file") Signed-off-by: Florian Fainelli <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent 9bd813d commit 8c4799a

File tree

1 file changed

+5
-3
lines changed

1 file changed

+5
-3
lines changed

drivers/net/ethernet/broadcom/genet/bcmgenet.c

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1172,6 +1172,7 @@ static unsigned int __bcmgenet_tx_reclaim(struct net_device *dev,
11721172
struct bcmgenet_tx_ring *ring)
11731173
{
11741174
struct bcmgenet_priv *priv = netdev_priv(dev);
1175+
struct device *kdev = &priv->pdev->dev;
11751176
struct enet_cb *tx_cb_ptr;
11761177
struct netdev_queue *txq;
11771178
unsigned int pkts_compl = 0;
@@ -1199,13 +1200,13 @@ static unsigned int __bcmgenet_tx_reclaim(struct net_device *dev,
11991200
if (tx_cb_ptr->skb) {
12001201
pkts_compl++;
12011202
bytes_compl += GENET_CB(tx_cb_ptr->skb)->bytes_sent;
1202-
dma_unmap_single(&dev->dev,
1203+
dma_unmap_single(kdev,
12031204
dma_unmap_addr(tx_cb_ptr, dma_addr),
12041205
dma_unmap_len(tx_cb_ptr, dma_len),
12051206
DMA_TO_DEVICE);
12061207
bcmgenet_free_cb(tx_cb_ptr);
12071208
} else if (dma_unmap_addr(tx_cb_ptr, dma_addr)) {
1208-
dma_unmap_page(&dev->dev,
1209+
dma_unmap_page(kdev,
12091210
dma_unmap_addr(tx_cb_ptr, dma_addr),
12101211
dma_unmap_len(tx_cb_ptr, dma_len),
12111212
DMA_TO_DEVICE);
@@ -1775,14 +1776,15 @@ static int bcmgenet_alloc_rx_buffers(struct bcmgenet_priv *priv,
17751776

17761777
static void bcmgenet_free_rx_buffers(struct bcmgenet_priv *priv)
17771778
{
1779+
struct device *kdev = &priv->pdev->dev;
17781780
struct enet_cb *cb;
17791781
int i;
17801782

17811783
for (i = 0; i < priv->num_rx_bds; i++) {
17821784
cb = &priv->rx_cbs[i];
17831785

17841786
if (dma_unmap_addr(cb, dma_addr)) {
1785-
dma_unmap_single(&priv->dev->dev,
1787+
dma_unmap_single(kdev,
17861788
dma_unmap_addr(cb, dma_addr),
17871789
priv->rx_buf_len, DMA_FROM_DEVICE);
17881790
dma_unmap_addr_set(cb, dma_addr, 0);

0 commit comments

Comments
 (0)