Ilpo Järvinen : [...] > Hmm, there was no explanation why the tp->rx_buf_sz to pkt_size change > was made in that commit (I have no idea whether those sizes have to match > to other places that use tp->rx_buf_sz)... Because there is no need to sync data that has not been used ? Timothy, could you check if the patch below does the job too ? It should fix at least one pci_map / pci_unmap unbalance. @@ -2789,10 +2789,10 @@ static int rtl8169_rx_interrupt(struct net_device *dev, if (rtl8169_try_rx_copy(&skb, tp, pkt_size, addr)) { pci_dma_sync_single_for_device(pdev, addr, pkt_size, PCI_DMA_FROMDEVICE); rtl8169_mark_to_asic(desc, tp->rx_buf_sz); } else { - pci_unmap_single(pdev, addr, pkt_size, + pci_unmap_single(pdev, addr, tp->rx_buf_sz, PCI_DMA_FROMDEVICE); tp->Rx_skbuff[entry] = NULL; } -- Ueimor