netdev-linux: Read packet auxdata to obtain vlan_tid
authorSimon Horman <horms@verge.net.au>
Wed, 15 Jan 2014 08:17:02 +0000 (17:17 +0900)
committerBen Pfaff <blp@nicira.com>
Thu, 16 Jan 2014 23:09:14 +0000 (15:09 -0800)
commitb73c85181df9cc38231a42d6f8095dcb604d230a
tree7c3d4f9363ad681e7f001e008cf71a2e661d5725
parent1bf02876a46e3e86a59f959fdac57db7f6b0a4ad
netdev-linux: Read packet auxdata to obtain vlan_tid

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 makes use of headroom available
in the buffer parameter of rx_recv.

Signed-off-by: Simon Horman <horms@verge.net.au>
Co-authored-by: Ben Pfaff <blp@nicira.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
include/sparse/sys/socket.h
lib/netdev-linux.c
lib/netdev-provider.h
lib/netdev.c