[ovs-dev] [PATCH RFC] netdev-linux: Read packet auxdata to obtain vlan_tid

Ben Pfaff blp at nicira.com
Wed Dec 11 17:31:49 UTC 2013


On Wed, Dec 11, 2013 at 11:24:14AM +0900, Simon Horman wrote:
> If VLAN acceleration is used when the kernel receives a packet
> then the outer-most VLAN tag will not be present in the packet
> when it is received by netdev-linux. Rather, it will be present
> in auxdata.
> 
> This patch uses recvmsg() instead of recv() to read auxdata for
> each packet and if the vlan_tid is set then it is added to the packet.
> 
> Adding the vlan_tid to the packet involves copying most of the packet
> and may be rather expensive. There is ample scope to avoid this by
> passing the vlan_tid back to the caller separately to the packet itself
> or providing access headroom in the packet. This would most likely
> involve updating the netdev-class API.
> 
> Signed-off-by: Simon Horman <horms at verge.net.au>

Thanks for doing this.

I think that we should change netdev_class to pass an ofpbuf into
rx_recv.  Then we can just ofpbuf_reserve() VLAN_HEADER_LEN bytes
before doing the receive, and just use eth_push_vlan() to insert the
VLAN header.



More information about the dev mailing list