]> Git Repo - J-linux.git/blobdiff - drivers/net/dsa/dsa_loop.c
Merge tag 'trace-v5.13-2' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt...
[J-linux.git] / drivers / net / dsa / dsa_loop.c
index 8e3d623f4dbd2fd67a2bdc93ddf63ffa96a0bbba..bfdf3324aac3a24172b096ef48c05d656a633a38 100644 (file)
@@ -190,7 +190,8 @@ static void dsa_loop_port_stp_state_set(struct dsa_switch *ds, int port,
 }
 
 static int dsa_loop_port_vlan_filtering(struct dsa_switch *ds, int port,
-                                       bool vlan_filtering)
+                                       bool vlan_filtering,
+                                       struct netlink_ext_ack *extack)
 {
        dev_dbg(ds->dev, "%s: port: %d, vlan_filtering: %d\n",
                __func__, port, vlan_filtering);
@@ -198,26 +199,9 @@ static int dsa_loop_port_vlan_filtering(struct dsa_switch *ds, int port,
        return 0;
 }
 
-static int
-dsa_loop_port_vlan_prepare(struct dsa_switch *ds, int port,
-                          const struct switchdev_obj_port_vlan *vlan)
-{
-       struct dsa_loop_priv *ps = ds->priv;
-       struct mii_bus *bus = ps->bus;
-
-       dev_dbg(ds->dev, "%s: port: %d, vlan: %d", __func__, port, vlan->vid);
-
-       /* Just do a sleeping operation to make lockdep checks effective */
-       mdiobus_read(bus, ps->port_base + port, MII_BMSR);
-
-       if (vlan->vid > ARRAY_SIZE(ps->vlans))
-               return -ERANGE;
-
-       return 0;
-}
-
-static void dsa_loop_port_vlan_add(struct dsa_switch *ds, int port,
-                                  const struct switchdev_obj_port_vlan *vlan)
+static int dsa_loop_port_vlan_add(struct dsa_switch *ds, int port,
+                                 const struct switchdev_obj_port_vlan *vlan,
+                                 struct netlink_ext_ack *extack)
 {
        bool untagged = vlan->flags & BRIDGE_VLAN_INFO_UNTAGGED;
        bool pvid = vlan->flags & BRIDGE_VLAN_INFO_PVID;
@@ -225,6 +209,9 @@ static void dsa_loop_port_vlan_add(struct dsa_switch *ds, int port,
        struct mii_bus *bus = ps->bus;
        struct dsa_loop_vlan *vl;
 
+       if (vlan->vid >= ARRAY_SIZE(ps->vlans))
+               return -ERANGE;
+
        /* Just do a sleeping operation to make lockdep checks effective */
        mdiobus_read(bus, ps->port_base + port, MII_BMSR);
 
@@ -241,6 +228,8 @@ static void dsa_loop_port_vlan_add(struct dsa_switch *ds, int port,
 
        if (pvid)
                ps->ports[port].pvid = vlan->vid;
+
+       return 0;
 }
 
 static int dsa_loop_port_vlan_del(struct dsa_switch *ds, int port,
@@ -300,7 +289,6 @@ static const struct dsa_switch_ops dsa_loop_driver = {
        .port_bridge_leave      = dsa_loop_port_bridge_leave,
        .port_stp_state_set     = dsa_loop_port_stp_state_set,
        .port_vlan_filtering    = dsa_loop_port_vlan_filtering,
-       .port_vlan_prepare      = dsa_loop_port_vlan_prepare,
        .port_vlan_add          = dsa_loop_port_vlan_add,
        .port_vlan_del          = dsa_loop_port_vlan_del,
        .port_change_mtu        = dsa_loop_port_change_mtu,
@@ -337,7 +325,6 @@ static int dsa_loop_drv_probe(struct mdio_device *mdiodev)
        ds->dev = &mdiodev->dev;
        ds->ops = &dsa_loop_driver;
        ds->priv = ps;
-       ds->configure_vlan_while_not_filtering = true;
        ps->bus = mdiodev->bus;
 
        dev_set_drvdata(&mdiodev->dev, ds);
This page took 0.033052 seconds and 4 git commands to generate.