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 <[email protected]>

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.
_______________________________________________
dev mailing list
[email protected]
http://openvswitch.org/mailman/listinfo/dev

Reply via email to