a question about DMA (realtek ethernet chip driver)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,
I need help in understanding realtek8139 ethernet chip driver. (it's about basic DMA operation)
in http://lxr.free-electrons.com/source/drivers/net/ethernet/realtek/8139cp.c?v=3.4#L707
in cp_start_xmit which is linked to start_xmit of netdev_ops of teh net_device, I see the driver uses dma_map_single to convert the sk_buf's data address to dma_address_t. (physical address). I understand the sk_buf is coming from upper protocol layer.
For an address range to be used as DMA address, it should be physical address and non-cacheable.
Also, during the initialization(cp_init_hw function) dma_alloc_cohererent is called to allocate DMA buffer and this address is written in the driver data (ring_dma), and also this DMA buffer address is written to the chip.
Is the data in sk_buf copied to the DMA ring somewhere? if it is, where in the code is it done?
Is it always like this? (using cacheable memory for sk_buf for speed and copy the data to DMA area and let the I/O chip or DMA controller take the data using DMA). I'm just curious if we don't use non-cacheable memory (DMA buffer) for sk_buf.
Thanks,
Chan Kim

 

_______________________________________________
Kernelnewbies mailing list
Kernelnewbies@xxxxxxxxxxxxxxxxx
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies

[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux