static struct sk_buff *rtl8169_try_rx_copy(void *data,
struct rtl8169_private *tp,
int pkt_size,
dma_addr_t addr)
{
struct sk_buff *skb;
struct device *d = &tp->pci_dev->dev;
data = rtl8169_align(data);
dma_sync_single_for_cpu(d, addr, pkt_size, DMA_FROM_DEVICE);
//同步cache 取得最新的内存数据 内存与cache同步
//数据写入了 cache,但是还没有同步到内存中
prefetch(data);
skb = napi_alloc_skb(&tp->napi, pkt_size);
if (skb)
memcpy(skb->data, data, pkt_size);
dma_sync_single_for_device(d, addr, pkt_size, DMA_FROM_DEVICE);
//刷新cache 写穿操作 把cache的数据同步到内存中
//cache数据修改了(写数据先写cache,再适时同步到内存中),可能还没有同步到内存中去
return skb;
}