OSDN Git Service

net: dsa: mt7530: get cpu-port via dp->cpu_dp instead of constant
authorFrank Wunderlich <frank-w@public-files.de>
Fri, 10 Jun 2022 17:05:39 +0000 (19:05 +0200)
committerJakub Kicinski <kuba@kernel.org>
Wed, 15 Jun 2022 05:35:16 +0000 (22:35 -0700)
Replace last occurences of hardcoded cpu-port by cpu_dp member of
dsa_port struct.

Now the constant can be dropped.

Suggested-by: Vladimir Oltean <olteanv@gmail.com>
Signed-off-by: Frank Wunderlich <frank-w@public-files.de>
Reviewed-by: Vladimir Oltean <olteanv@gmail.com>
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/dsa/mt7530.c
drivers/net/dsa/mt7530.h

index 9c14e46..8358079 100644 (file)
@@ -1038,6 +1038,7 @@ static int
 mt7530_port_enable(struct dsa_switch *ds, int port,
                   struct phy_device *phy)
 {
+       struct dsa_port *dp = dsa_to_port(ds, port);
        struct mt7530_priv *priv = ds->priv;
 
        mutex_lock(&priv->reg_mutex);
@@ -1046,7 +1047,11 @@ mt7530_port_enable(struct dsa_switch *ds, int port,
         * restore the port matrix if the port is the member of a certain
         * bridge.
         */
-       priv->ports[port].pm |= PCR_MATRIX(BIT(MT7530_CPU_PORT));
+       if (dsa_port_is_user(dp)) {
+               struct dsa_port *cpu_dp = dp->cpu_dp;
+
+               priv->ports[port].pm |= PCR_MATRIX(BIT(cpu_dp->index));
+       }
        priv->ports[port].enable = true;
        mt7530_rmw(priv, MT7530_PCR_P(port), PCR_MATRIX_MASK,
                   priv->ports[port].pm);
@@ -1195,7 +1200,8 @@ mt7530_port_bridge_join(struct dsa_switch *ds, int port,
                        struct netlink_ext_ack *extack)
 {
        struct dsa_port *dp = dsa_to_port(ds, port), *other_dp;
-       u32 port_bitmap = BIT(MT7530_CPU_PORT);
+       struct dsa_port *cpu_dp = dp->cpu_dp;
+       u32 port_bitmap = BIT(cpu_dp->index);
        struct mt7530_priv *priv = ds->priv;
 
        mutex_lock(&priv->reg_mutex);
@@ -1272,9 +1278,12 @@ mt7530_port_set_vlan_unaware(struct dsa_switch *ds, int port)
         * the CPU port get out of VLAN filtering mode.
         */
        if (all_user_ports_removed) {
-               mt7530_write(priv, MT7530_PCR_P(MT7530_CPU_PORT),
+               struct dsa_port *dp = dsa_to_port(ds, port);
+               struct dsa_port *cpu_dp = dp->cpu_dp;
+
+               mt7530_write(priv, MT7530_PCR_P(cpu_dp->index),
                             PCR_MATRIX(dsa_user_ports(priv->ds)));
-               mt7530_write(priv, MT7530_PVC_P(MT7530_CPU_PORT), PORT_SPEC_TAG
+               mt7530_write(priv, MT7530_PVC_P(cpu_dp->index), PORT_SPEC_TAG
                             | PVC_EG_TAG(MT7530_VLAN_EG_CONSISTENT));
        }
 }
@@ -1312,6 +1321,7 @@ mt7530_port_bridge_leave(struct dsa_switch *ds, int port,
                         struct dsa_bridge bridge)
 {
        struct dsa_port *dp = dsa_to_port(ds, port), *other_dp;
+       struct dsa_port *cpu_dp = dp->cpu_dp;
        struct mt7530_priv *priv = ds->priv;
 
        mutex_lock(&priv->reg_mutex);
@@ -1340,8 +1350,8 @@ mt7530_port_bridge_leave(struct dsa_switch *ds, int port,
         */
        if (priv->ports[port].enable)
                mt7530_rmw(priv, MT7530_PCR_P(port), PCR_MATRIX_MASK,
-                          PCR_MATRIX(BIT(MT7530_CPU_PORT)));
-       priv->ports[port].pm = PCR_MATRIX(BIT(MT7530_CPU_PORT));
+                          PCR_MATRIX(BIT(cpu_dp->index)));
+       priv->ports[port].pm = PCR_MATRIX(BIT(cpu_dp->index));
 
        /* When a port is removed from the bridge, the port would be set up
         * back to the default as is at initial boot which is a VLAN-unaware
@@ -1508,6 +1518,9 @@ static int
 mt7530_port_vlan_filtering(struct dsa_switch *ds, int port, bool vlan_filtering,
                           struct netlink_ext_ack *extack)
 {
+       struct dsa_port *dp = dsa_to_port(ds, port);
+       struct dsa_port *cpu_dp = dp->cpu_dp;
+
        if (vlan_filtering) {
                /* The port is being kept as VLAN-unaware port when bridge is
                 * set up with vlan_filtering not being set, Otherwise, the
@@ -1515,7 +1528,7 @@ mt7530_port_vlan_filtering(struct dsa_switch *ds, int port, bool vlan_filtering,
                 * for becoming a VLAN-aware port.
                 */
                mt7530_port_set_vlan_aware(ds, port);
-               mt7530_port_set_vlan_aware(ds, MT7530_CPU_PORT);
+               mt7530_port_set_vlan_aware(ds, cpu_dp->index);
        } else {
                mt7530_port_set_vlan_unaware(ds, port);
        }
index 71e36b6..e509af9 100644 (file)
@@ -8,7 +8,6 @@
 
 #define MT7530_NUM_PORTS               7
 #define MT7530_NUM_PHYS                        5
-#define MT7530_CPU_PORT                        6
 #define MT7530_NUM_FDB_RECORDS         2048
 #define MT7530_ALL_MEMBERS             0xff