net: dsa: mv88e6xxx: use port 802.1Q mode Secure
authorVivien Didelot <vivien.didelot@savoirfairelinux.com>
Thu, 13 Aug 2015 16:52:23 +0000 (12:52 -0400)
committerDavid S. Miller <davem@davemloft.net>
Fri, 14 Aug 2015 04:31:13 +0000 (21:31 -0700)
This commit changes the 802.1Q mode of each port from Disabled to
Secure. This enables the VLAN support, by checking the VTU entries on
ingress.

Signed-off-by: Vivien Didelot <vivien.didelot@savoirfairelinux.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/dsa/mv88e6xxx.c
drivers/net/dsa/mv88e6xxx.h

index ca867e456a0df67a40b981461936e5958af0622f..332f2c8090d0f1ce9030774a424123b1c47f1515 100644 (file)
@@ -2005,13 +2005,11 @@ static int mv88e6xxx_setup_port(struct dsa_switch *ds, int port)
                        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) ||
@@ -2033,6 +2031,8 @@ static int mv88e6xxx_setup_port(struct dsa_switch *ds, int port)
                        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);
index ca3268fe05951fa7805728296e5872ca69afef93..72ca887feb0d56bafb47334b28eafe660efc418d 100644 (file)
 #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)