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 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 (4):
  netdev: Update rx_recv documentation for NULL case
  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           | 152 ++++++++++++++++++++++++++++++++++++++-----
 lib/netdev-provider.h        |  28 +++++---
 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, 192 insertions(+), 54 deletions(-)

-- 
1.8.4

_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to