struct rtl838x_eth_priv *priv = netdev_priv(dev);
struct ring_b *ring = priv->membase;
struct sk_buff *skb;
+ LIST_HEAD(rx_list);
unsigned long flags;
int i, len, work_done = 0;
u8 *data, *skb_data;
dev->stats.rx_packets++;
dev->stats.rx_bytes += len;
- netif_receive_skb(skb);
+ list_add_tail(&skb->list, &rx_list);
} else {
if (net_ratelimit())
dev_warn(&dev->dev, "low on memory - packet dropped\n");
last = (u32 *)KSEG1ADDR(sw_r32(priv->r->dma_if_rx_cur + r * 4));
} while (&ring->rx_r[r][ring->c_rx[r]] != last && work_done < budget);
+ netif_receive_skb_list(&rx_list);
+
// Update counters
priv->r->update_cntr(r, 0);