image image image image image

On This Page

Q-in-Q tunneling allows the user to create a Layer 2 Ethernet connection between two servers. The user can segregate a different VLAN traffic on a link or bundle different VLANs into a single VLAN. Q-in-Q tunneling adds a service VLAN tag before the user's 802.1Q VLAN tags.
For Q-in-Q support in virtualized environments (SR-IOV), please refer to  "Q-in-Q Encapsulation per VF in Linux (VST)".


  • ConnectX-3/ConnectX-3 Pro without Rx offloads
  • Firmware version 2.34.8240 and up
  • Kernel version 3.10 and up
  • iproute-3.10.0-13.el7.x86_64 and up

To enable device support for accelerated 802.1ad VLAN:

  1. Turn on the new ethtool private flag "phv-bit" (disabled by default). 

    $ ethtool --set-priv-flags eth1 phv-bit on 

    Enabling this flag sets the phv_en port capability.

  2. Change the interface device features by turning on the ethtool device feature "tx-vlan- stag-hw-insert" (disabled by default). 

    $ ethtool -K eth1 tx-vlan-stag-hw-insert on 

    Once the private flag and the ethtool device feature are set, the device will be ready for 802.1ad VLAN acceleration. 

    The "phv-bit" private flag setting is available for the Physical Function (PF) only.
    The Virtual Function (VF) can use the VLAN acceleration by setting the "tx-vlan-stag-hw-insert" parameter only if the private flag "phv-bit" is enabled by the PF. If the PF enables/disables the "phv-bit" flag after the VF driver is up, the configuration will take place only after the VF driver is restarted.