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 and if available the vlan_tpid from auxdata as appropriate and push a VLAN tag onto the packet accordingly. 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 v4 and v5: * Updated documentation of rx_recv to text suggested by Ben Pfaff. * As provided by Ben Pfaff - Include local copy of struct tpacket_auxdata and related #defines to avoid depending on the kernel headers used for the build. Key Changes between v3 and v4: * Add patch to correct truncated documentation of the rx_recv field of struct netdev_class. * On error in rx_recv implementations return a positive error code rather than a negative one * Use TP_STATUS_VLAN_VALID to allow vlan 0 to be read from auxdata * Use TP_STATUS_VLAN_TPID_VALID allow the VLAN tpid to be read from auxdata 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 (3): netdev_class: Pass a struct ofpbuf * to rx_recv() lib: Add tpid parameter to eth_push_vlan() netdev-linux: Read packet auxdata to obtain vlan_tid include/sparse/sys/socket.h | 1 + lib/cfm.c | 2 +- lib/flow.c | 2 +- lib/netdev-bsd.c | 28 ++++---- lib/netdev-dummy.c | 13 ++-- lib/netdev-linux.c | 160 +++++++++++++++++++++++++++++++++++++++---- lib/netdev-provider.h | 25 +++++-- lib/netdev.c | 8 +-- lib/odp-execute.c | 2 +- lib/packets.c | 4 +- lib/packets.h | 2 +- ofproto/bond.c | 2 +- ofproto/ofproto-dpif-xlate.c | 2 +- 13 files changed, 198 insertions(+), 53 deletions(-) -- 1.8.4 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev