Skip to content

Commit

Permalink
r8169: improve DMA handling in rtl_rx
Browse files Browse the repository at this point in the history
Move the call to dma_sync_single_for_cpu after calling napi_alloc_skb.
This avoids calling dma_sync_single_for_cpu w/o handing control back
to device if the memory allocation should fail.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Heiner Kallweit authored and David S. Miller committed Aug 26, 2019
1 parent 72991b5 commit 3c95e50
Showing 1 changed file with 3 additions and 4 deletions.
7 changes: 3 additions & 4 deletions drivers/net/ethernet/realtek/r8169_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -5807,16 +5807,15 @@ static int rtl_rx(struct net_device *dev, struct rtl8169_private *tp, u32 budget
goto release_descriptor;
}

dma_sync_single_for_cpu(tp_to_dev(tp),
le64_to_cpu(desc->addr),
pkt_size, DMA_FROM_DEVICE);

skb = napi_alloc_skb(&tp->napi, pkt_size);
if (unlikely(!skb)) {
dev->stats.rx_dropped++;
goto release_descriptor;
}

dma_sync_single_for_cpu(tp_to_dev(tp),
le64_to_cpu(desc->addr),
pkt_size, DMA_FROM_DEVICE);
prefetch(rx_buf);
skb_copy_to_linear_data(skb, rx_buf, pkt_size);
skb->tail += pkt_size;
Expand Down

0 comments on commit 3c95e50

Please sign in to comment.