R&D/OS

TX/RX Ring Descriptor

sunshout 2014. 10. 31. 17:59

TX Ring Desc Architecture



Xmit Frame

 - device driver receive sk_buff from kernel

 - find tx_buffer_info which can be used

 - fill tx_buffer_info based on skb's info

 - update next_to_use (cf. may be used more than 1 index, if the size of skb is larger than 1 page)

 - notify tx_ring to H/W



추가 설명

- 전송할 패킷이 존재할 때, device driver는 ximt 을 하며, 이는 descriptor 의 tail에 쓰고, tail의 값을 업데이트 한다. (아래 TDT register)

- H/W는 Head (TDH register)가 가르키고 있는 data를 처리한다. DMA engine 은 Head가 가르키는 데이터를 처리한 후, TDH의 값을 업데이트한다. (즉 System memory에서 NIC 의 on-chip buffer로 복사가 완료된 상태, 따라서 Head는 H/W가 업데이트를 한다.)

- 따라서 Tail - Head 구간이 H/W NIC 이 처리해야 하는 Transmit Queue 에 해당된다.



Transmit Descriptor Ring Structure


82599 has 160 KB on-chip packet buffer.




References:

sk_buff : http://vger.kernel.org/~davem/skb_data.html

Intel 82599 10GbE Controller Datasheet