<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<div id="ezFormProc_div" style="FONT-SIZE: 10pt; FONT-FAMILY: 굴림">
<div id="msgbody">
<div>
<div style="LINE-HEIGHT: 15pt">Hi,</div>
<div style="LINE-HEIGHT: 15pt">I need help in understanding realtek8139 ethernet chip driver. (it's about basic DMA operation)</div>
<div style="LINE-HEIGHT: 15pt">in <a href="http://lxr.free-electrons.com/source/drivers/net/ethernet/realtek/8139cp.c?v=3.4#L707" target="_blank">
http://lxr.free-electrons.com/source/drivers/net/ethernet/realtek/8139cp.c?v=3.4#L707</a></div>
<div style="LINE-HEIGHT: 15pt">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.</div>
<div style="LINE-HEIGHT: 15pt">For an address range to be used as DMA address, it should be physical address and non-cacheable.</div>
<div style="LINE-HEIGHT: 15pt">Also, during the initialization(cp_init_hw function)&nbsp;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.</div>
<div style="LINE-HEIGHT: 15pt">Is the data in sk_buf copied to the DMA ring somewhere? if it is, where in the code is it done?</div>
<div style="LINE-HEIGHT: 15pt">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. </div>
<div style="LINE-HEIGHT: 15pt">Thanks,</div>
<div style="LINE-HEIGHT: 15pt">Chan Kim</div>
<div style="LINE-HEIGHT: 15pt"><br>
&nbsp;</div>
<div id="MailSignSent" style="LINE-HEIGHT: 15pt"></div>
<div style="LINE-HEIGHT: 15pt"><br>
</div>
</div>
</div>
</div>
</body>
</html>