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 -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html