|
@@ -840,10 +840,9 @@ int br_fdb_add(struct ndmsg *ndm, struct nlattr *tb[],
|
|
|
/* VID was specified, so use it. */
|
|
|
err = __br_fdb_add(ndm, p, addr, nlh_flags, vid);
|
|
|
} else {
|
|
|
- if (!pv || bitmap_empty(pv->vlan_bitmap, VLAN_N_VID)) {
|
|
|
- err = __br_fdb_add(ndm, p, addr, nlh_flags, 0);
|
|
|
+ err = __br_fdb_add(ndm, p, addr, nlh_flags, 0);
|
|
|
+ if (err || !pv)
|
|
|
goto out;
|
|
|
- }
|
|
|
|
|
|
/* We have vlans configured on this port and user didn't
|
|
|
* specify a VLAN. To be nice, add/update entry for every
|
|
@@ -911,16 +910,15 @@ int br_fdb_delete(struct ndmsg *ndm, struct nlattr *tb[],
|
|
|
|
|
|
err = __br_fdb_delete(p, addr, vid);
|
|
|
} else {
|
|
|
- if (!pv || bitmap_empty(pv->vlan_bitmap, VLAN_N_VID)) {
|
|
|
- err = __br_fdb_delete(p, addr, 0);
|
|
|
+ err = -ENOENT;
|
|
|
+ err &= __br_fdb_delete(p, addr, 0);
|
|
|
+ if (!pv)
|
|
|
goto out;
|
|
|
- }
|
|
|
|
|
|
/* We have vlans configured on this port and user didn't
|
|
|
* specify a VLAN. To be nice, add/update entry for every
|
|
|
* vlan on this port.
|
|
|
*/
|
|
|
- err = -ENOENT;
|
|
|
for_each_set_bit(vid, pv->vlan_bitmap, VLAN_N_VID) {
|
|
|
err &= __br_fdb_delete(p, addr, vid);
|
|
|
}
|