netmap over virtio giving packets with extra 12 bytes

Adrian Chadd adrian at freebsd.org
Mon Jan 5 20:39:00 UTC 2015


On 5 January 2015 at 09:05, Luigi Rizzo <rizzo at iet.unipi.it> wrote:
> On Mon, Jan 05, 2015 at 08:33:17AM -0800, Adrian Chadd wrote:
>> ... surely virtio should be skipping over those bytes in the netmap rx
>> side before handing them up?
>>
>> (It won't be the only hardware that puts the RX descriptor status in
>> the RX frame itself..)
>
> it is not the rx descriptor, those 12 bytes are also present on the tx side.
> Think of them as an encapsulation whose presence is negotiated when KVM connects
> to the TAP port, and after that is present on all packets bidirectionally.
>
> Now, surely we could add/remove those bytes in the virtio-netmap code
> (at the price of an additional data copy).

Right, but I have similar issues with other wifi devices who put RX
descriptor completion info in the header of the mbuf you pass to the
NIC.

So in the driver RX path, I have to += the data pointer /past/ the header.

So, maybe for netmap you need to consider adding something that lets
you specify how many bytes into the RX buffer the payload starts.




-adrian


More information about the freebsd-net mailing list