My IXGBE data path journey made me ask questions, like the one above.
Basically (I'm skipping a few steps here):

1. packet arrives to the card and is verified by MAC
2. packet is placed in the card's FIFO (which is small)
3. lots of steps here but finally card does DMA into one of receive buffers
4. are these buffers shared with skb->data ? Or does 82599 copy bits
between rx buffers and skb->data ?

Given that dma_map_single(rx_ring->dev, skb->data,...) is called in
ixgbe_alloc_maped_skb() I would say "card does DMA into SKB" (excuse my
oversimplification) but I'd like to verify it, especially that
ixgbe_alloc_mapped_page() can be used instead, depending on
CONFIG_IXGBE_DISABLE_PACKET_SPLIT

I'm trying to understand where data copying occurs, because it might be
impossible to go with some clever memory mappings.

A side question - why is the FIFO buffer that small? What's stopping us
from having it (theoretically) say 1GB? Some (super expensive) capture
cards do this, but they have other challenges.

Of course, X520 is not a capture card (but it's very efficient doing it,
anyway). I do not believe in a dedicated hardware anymore.


--
Michal Purzynski
------------------------------------------------------------------------------
_______________________________________________
E1000-devel mailing list
E1000-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/e1000-devel
To learn more about Intel® Ethernet, visit 
http://communities.intel.com/community/wired

Reply via email to