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.
The purpose of this series is to obtain the vlan_tid from auxdata as appropriate and push it onto the packet. In order to allow the push to be performed efficiently netdev_class is updated to provide an ofpbuf * argument to rx_recv(). Key Changes between v2 and v3: * On success, update struct ofpbuf size inside netdev_class rx_recv implementation and return 0. This moves logic from the caller. * Document that it is recommended that the struct ofpbuf should provide extra tailroom for a VLAN header. This will be used by a subsequent patch. * Update BSD code * Limit to reading one VLAN from auxdata Key Changes between v1 and v2: * Update netdev_class to provide an ofpbuf * argument to rx_recv() Simon Horman (2): netdev_class: Pass a struct ofpbuf * to rx_recv() netdev-linux: Read packet auxdata to obtain vlan_tid include/sparse/sys/socket.h | 1 + lib/netdev-bsd.c | 24 +++++---- lib/netdev-dummy.c | 9 ++-- lib/netdev-linux.c | 115 ++++++++++++++++++++++++++++++++++++++------ lib/netdev-provider.h | 18 ++++--- lib/netdev.c | 4 +- 6 files changed, 134 insertions(+), 37 deletions(-) -- 1.8.4 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev