net: dsa: do not enable or disable non user ports
[linux-block.git] / drivers / net / dsa / microchip / ksz_common.c
index a3d2d67894bd6e197a05ce95941431e4323b4c60..b0b870f0c252095f7844230b3e3fe700e14d75fe 100644 (file)
 #include <net/dsa.h>
 #include <net/switchdev.h>
 
-#include "ksz_priv.h"
-
-void ksz_port_cleanup(struct ksz_device *dev, int port)
-{
-       /* Common code for port cleanup. */
-       mutex_lock(&dev->dev_mutex);
-       dev->on_ports &= ~(1 << port);
-       dev->live_ports &= ~(1 << port);
-       mutex_unlock(&dev->dev_mutex);
-}
-EXPORT_SYMBOL_GPL(ksz_port_cleanup);
+#include "ksz_common.h"
 
 void ksz_update_port_member(struct ksz_device *dev, int port)
 {
@@ -371,9 +361,13 @@ int ksz_enable_port(struct dsa_switch *ds, int port, struct phy_device *phy)
 {
        struct ksz_device *dev = ds->priv;
 
+       if (!dsa_is_user_port(ds, port))
+               return 0;
+
        /* setup slave port */
        dev->dev_ops->port_setup(dev, port, false);
-       dev->dev_ops->phy_setup(dev, port, phy);
+       if (dev->dev_ops->phy_setup)
+               dev->dev_ops->phy_setup(dev, port, phy);
 
        /* port_stp_state_set() will be called after to enable the port so
         * there is no need to do anything.
@@ -387,6 +381,9 @@ void ksz_disable_port(struct dsa_switch *ds, int port)
 {
        struct ksz_device *dev = ds->priv;
 
+       if (!dsa_is_user_port(ds, port))
+               return;
+
        dev->on_ports &= ~(1 << port);
        dev->live_ports &= ~(1 << port);