Could you fill me in on how the bounce buffer approach to memory management
in IXGBE and I40E works?

Why do you allocate the same amount of memory in ixgbe_setup_rx_resources()
First time with a call to rx_ring->rx_buffer_info = vzalloc_node() - where
size represents what I set with ethtool -G (N buffers, each represented
with a struct ixgbe_rx_buffer).
Second in the rx_ring->desc = dma_alloc_coherent() of the same size as

Second question. So we have a single ring (per queue) with a chains of
buffers "attached" to it - a chunk of memory composed from multiple pages.
Each page will have a single packet.
Does the driver replace "used" pages every time it uses one? I'm confused,
because that's kind of logical it does, there are functions doing that, yet
there are comments in the driver that "we are reusing buffers".

My understanding is that once a page (2048 bytes here) contains a packet
data, it is only "re-attached" to SKB with minimal copying (header,
basically). That would require allocating a new page every time we used
one  - attached it to SKB.
Check out the vibrant tech community on one of the world's most 
engaging tech sites,!
E1000-devel mailing list
To learn more about Intel® Ethernet, visit

Reply via email to