return 0;
 }
 
-static int bcm_sf2_sw_fdb_add(struct dsa_switch *ds, int port,
-                             const struct switchdev_obj_port_fdb *fdb,
-                             struct switchdev_trans *trans)
+static void bcm_sf2_sw_fdb_add(struct dsa_switch *ds, int port,
+                              const struct switchdev_obj_port_fdb *fdb,
+                              struct switchdev_trans *trans)
 {
        struct bcm_sf2_priv *priv = ds_to_priv(ds);
 
-       return bcm_sf2_arl_op(priv, 0, port, fdb->addr, fdb->vid, true);
+       if (bcm_sf2_arl_op(priv, 0, port, fdb->addr, fdb->vid, true))
+               pr_err("%s: failed to add MAC address\n", __func__);
 }
 
 static int bcm_sf2_sw_fdb_del(struct dsa_switch *ds, int port,
 
        return 0;
 }
 
-int mv88e6xxx_port_fdb_add(struct dsa_switch *ds, int port,
-                          const struct switchdev_obj_port_fdb *fdb,
-                          struct switchdev_trans *trans)
+void mv88e6xxx_port_fdb_add(struct dsa_switch *ds, int port,
+                           const struct switchdev_obj_port_fdb *fdb,
+                           struct switchdev_trans *trans)
 {
        int state = is_multicast_ether_addr(fdb->addr) ?
                GLOBAL_ATU_DATA_STATE_MC_STATIC :
                GLOBAL_ATU_DATA_STATE_UC_STATIC;
        struct mv88e6xxx_priv_state *ps = ds_to_priv(ds);
-       int ret;
 
        mutex_lock(&ps->smi_mutex);
-       ret = _mv88e6xxx_port_fdb_load(ds, port, fdb->addr, fdb->vid, state);
+       if (_mv88e6xxx_port_fdb_load(ds, port, fdb->addr, fdb->vid, state))
+               netdev_err(ds->ports[port], "failed to load MAC address\n");
        mutex_unlock(&ps->smi_mutex);
-
-       return ret;
 }
 
 int mv88e6xxx_port_fdb_del(struct dsa_switch *ds, int port,
 
 int mv88e6xxx_port_fdb_prepare(struct dsa_switch *ds, int port,
                               const struct switchdev_obj_port_fdb *fdb,
                               struct switchdev_trans *trans);
-int mv88e6xxx_port_fdb_add(struct dsa_switch *ds, int port,
-                          const struct switchdev_obj_port_fdb *fdb,
-                          struct switchdev_trans *trans);
+void mv88e6xxx_port_fdb_add(struct dsa_switch *ds, int port,
+                           const struct switchdev_obj_port_fdb *fdb,
+                           struct switchdev_trans *trans);
 int mv88e6xxx_port_fdb_del(struct dsa_switch *ds, int port,
                           const struct switchdev_obj_port_fdb *fdb);
 int mv88e6xxx_port_fdb_dump(struct dsa_switch *ds, int port,
 
        int     (*port_fdb_prepare)(struct dsa_switch *ds, int port,
                                    const struct switchdev_obj_port_fdb *fdb,
                                    struct switchdev_trans *trans);
-       int     (*port_fdb_add)(struct dsa_switch *ds, int port,
+       void    (*port_fdb_add)(struct dsa_switch *ds, int port,
                                const struct switchdev_obj_port_fdb *fdb,
                                struct switchdev_trans *trans);
        int     (*port_fdb_del)(struct dsa_switch *ds, int port,
 
 {
        struct dsa_slave_priv *p = netdev_priv(dev);
        struct dsa_switch *ds = p->parent;
-       int ret;
 
-       if (!ds->drv->port_fdb_prepare || !ds->drv->port_fdb_add)
-               return -EOPNOTSUPP;
+       if (switchdev_trans_ph_prepare(trans)) {
+               if (!ds->drv->port_fdb_prepare || !ds->drv->port_fdb_add)
+                       return -EOPNOTSUPP;
 
-       if (switchdev_trans_ph_prepare(trans))
-               ret = ds->drv->port_fdb_prepare(ds, p->port, fdb, trans);
-       else
-               ret = ds->drv->port_fdb_add(ds, p->port, fdb, trans);
+               return ds->drv->port_fdb_prepare(ds, p->port, fdb, trans);
+       }
 
-       return ret;
+       ds->drv->port_fdb_add(ds, p->port, fdb, trans);
+
+       return 0;
 }
 
 static int dsa_slave_port_fdb_del(struct net_device *dev,