goto abort;
        }
 
-       /* Port Control 2: don't force a good FCS, set the maximum
-        * frame size to 10240 bytes, don't let the switch add or
-        * strip 802.1q tags, don't discard tagged or untagged frames
-        * on this port, do a destination address lookup on all
-        * received packets as usual, disable ARP mirroring and don't
-        * send a copy of all transmitted/received frames on this port
-        * to the CPU.
+       /* Port Control 2: don't force a good FCS, set the maximum frame size to
+        * 10240 bytes, enable secure 802.1q tags, don't discard tagged or
+        * untagged frames on this port, do a destination address lookup on all
+        * received packets as usual, disable ARP mirroring and don't send a
+        * copy of all transmitted/received frames on this port to the CPU.
         */
        reg = 0;
        if (mv88e6xxx_6352_family(ds) || mv88e6xxx_6351_family(ds) ||
                        reg |= PORT_CONTROL_2_FORWARD_UNKNOWN;
        }
 
+       reg |= PORT_CONTROL_2_8021Q_SECURE;
+
        if (reg) {
                ret = _mv88e6xxx_reg_write(ds, REG_PORT(port),
                                           PORT_CONTROL_2, reg);
 
 #define PORT_CONTROL_2_JUMBO_1522      (0x00 << 12)
 #define PORT_CONTROL_2_JUMBO_2048      (0x01 << 12)
 #define PORT_CONTROL_2_JUMBO_10240     (0x02 << 12)
+#define PORT_CONTROL_2_8021Q_MASK      (0x03 << 10)
+#define PORT_CONTROL_2_8021Q_DISABLED  (0x00 << 10)
+#define PORT_CONTROL_2_8021Q_FALLBACK  (0x01 << 10)
+#define PORT_CONTROL_2_8021Q_CHECK     (0x02 << 10)
+#define PORT_CONTROL_2_8021Q_SECURE    (0x03 << 10)
 #define PORT_CONTROL_2_DISCARD_TAGGED  BIT(9)
 #define PORT_CONTROL_2_DISCARD_UNTAGGED        BIT(8)
 #define PORT_CONTROL_2_MAP_DA          BIT(7)