Messages in this thread | | | From | David Laight <> | Subject | RE: [PATCH net-next RFC] net: increase LL_MAX_HEADER for Hyper-V | Date | Thu, 17 Sep 2015 08:38:12 +0000 |
| |
From: KY Srinivasan > Sent: 16 September 2015 23:58 ... > > I think we get that. The question is does the Remote NDIS header and > > packet info actually need to be a part of the header data? I would > > argue that it probably doesn't. > > > > So for example in netvsc_start_xmit it looks like you are calling > > init_page_array in order to populate a set of page buffers, but the > > first buffer for the Remote NDIS protocol is populated as a separate > > page and offset. As such it doesn't seem like it necessarily needs to > > be a part of the header data but could be maintained perhaps in a > > separate ring buffer, or perhaps just be a separate page that you break > > up to use for each header. > > You are right; the rndis header can be built as a separate fragment and sent. > Indeed this is what we were doing earlier - on the outgoing path we would allocate > memory for the rndis header. My goal was to avoid this allocation on every packet being > sent and I decided to use the headroom instead. If we can completely avoid all memory > allocation for rndis header, it makes a significant perf difference: ...
So just preallocate the header space as a fixed buffer for each ring entry (or tx frame).
If you allocate a fixed buffer for each ring entry you may find there are performance gains from copying small fragments into the buffer instead of doing whatever mapping operations are required.
David
| |