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
[email protected]
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies

Reply via email to