net: dsa: install the host MDB and FDB entries in the master's RX filter
[linux-2.6-microblaze.git] / net / dsa / port.c
index 1b80e0f..778b0dc 100644 (file)
@@ -655,6 +655,12 @@ int dsa_port_host_fdb_add(struct dsa_port *dp, const unsigned char *addr,
                .addr = addr,
                .vid = vid,
        };
+       struct dsa_port *cpu_dp = dp->cpu_dp;
+       int err;
+
+       err = dev_uc_add(cpu_dp->master, addr);
+       if (err)
+               return err;
 
        return dsa_port_notify(dp, DSA_NOTIFIER_HOST_FDB_ADD, &info);
 }
@@ -668,6 +674,12 @@ int dsa_port_host_fdb_del(struct dsa_port *dp, const unsigned char *addr,
                .addr = addr,
                .vid = vid,
        };
+       struct dsa_port *cpu_dp = dp->cpu_dp;
+       int err;
+
+       err = dev_uc_del(cpu_dp->master, addr);
+       if (err)
+               return err;
 
        return dsa_port_notify(dp, DSA_NOTIFIER_HOST_FDB_DEL, &info);
 }
@@ -715,6 +727,12 @@ int dsa_port_host_mdb_add(const struct dsa_port *dp,
                .port = dp->index,
                .mdb = mdb,
        };
+       struct dsa_port *cpu_dp = dp->cpu_dp;
+       int err;
+
+       err = dev_mc_add(cpu_dp->master, mdb->addr);
+       if (err)
+               return err;
 
        return dsa_port_notify(dp, DSA_NOTIFIER_HOST_MDB_ADD, &info);
 }
@@ -727,6 +745,12 @@ int dsa_port_host_mdb_del(const struct dsa_port *dp,
                .port = dp->index,
                .mdb = mdb,
        };
+       struct dsa_port *cpu_dp = dp->cpu_dp;
+       int err;
+
+       err = dev_mc_del(cpu_dp->master, mdb->addr);
+       if (err)
+               return err;
 
        return dsa_port_notify(dp, DSA_NOTIFIER_HOST_MDB_DEL, &info);
 }