+@@ -386,6 +386,19 @@ static void bgmac_dma_rx_setup_desc(stru
+ dma_desc->ctl1 = cpu_to_le32(ctl1);
+ }
+
++static void bgmac_dma_rx_poison_buf(struct device *dma_dev,
++ struct bgmac_slot_info *slot)
++{
++ struct bgmac_rx_header *rx = slot->buf + BGMAC_RX_BUF_OFFSET;
++
++ dma_sync_single_for_cpu(dma_dev, slot->dma_addr, BGMAC_RX_BUF_SIZE,
++ DMA_FROM_DEVICE);
++ rx->len = cpu_to_le16(0xdead);
++ rx->flags = cpu_to_le16(0xbeef);
++ dma_sync_single_for_device(dma_dev, slot->dma_addr, BGMAC_RX_BUF_SIZE,
++ DMA_FROM_DEVICE);
++}
++
+ static int bgmac_dma_rx_read(struct bgmac *bgmac, struct bgmac_dma_ring *ring,
+ int weight)
+ {
+@@ -406,53 +419,35 @@ static int bgmac_dma_rx_read(struct bgma
+ struct bgmac_rx_header *rx = slot->buf + BGMAC_RX_BUF_OFFSET;
+ struct sk_buff *skb;