const struct net_bridge_fdb_entry *fdb)
 {
        return !test_bit(BR_FDB_STATIC, &fdb->flags) &&
-              !fdb->added_by_external_learn &&
+              !test_bit(BR_FDB_ADDED_BY_EXT_LEARN, &fdb->flags) &&
               time_before_eq(fdb->updated + hold_time(br), jiffies);
 }
 
                unsigned long this_timer;
 
                if (test_bit(BR_FDB_STATIC, &f->flags) ||
-                   f->added_by_external_learn)
+                   test_bit(BR_FDB_ADDED_BY_EXT_LEARN, &f->flags))
                        continue;
                this_timer = f->updated + delay;
                if (time_after(this_timer, now)) {
                        set_bit(BR_FDB_LOCAL, &fdb->flags);
                if (is_static)
                        set_bit(BR_FDB_STATIC, &fdb->flags);
-               fdb->added_by_external_learn = 0;
                fdb->offloaded = 0;
                fdb->updated = fdb->used = jiffies;
                if (rhashtable_lookup_insert_fast(&br->fdb_hash_tbl,
                                fdb->dst = source;
                                fdb_modified = true;
                                /* Take over HW learned entry */
-                               if (unlikely(fdb->added_by_external_learn))
-                                       fdb->added_by_external_learn = 0;
+                               test_and_clear_bit(BR_FDB_ADDED_BY_EXT_LEARN,
+                                                  &fdb->flags);
                        }
                        if (now != fdb->updated)
                                fdb->updated = now;
 
        if (fdb->offloaded)
                ndm->ndm_flags |= NTF_OFFLOADED;
-       if (fdb->added_by_external_learn)
+       if (test_bit(BR_FDB_ADDED_BY_EXT_LEARN, &fdb->flags))
                ndm->ndm_flags |= NTF_EXT_LEARNED;
        if (test_bit(BR_FDB_STICKY, &fdb->flags))
                ndm->ndm_flags |= NTF_STICKY;
                }
                if (swdev_notify)
                        set_bit(BR_FDB_ADDED_BY_USER, &fdb->flags);
-               fdb->added_by_external_learn = 1;
+               set_bit(BR_FDB_ADDED_BY_EXT_LEARN, &fdb->flags);
                fdb_notify(br, fdb, RTM_NEWNEIGH, swdev_notify);
        } else {
                fdb->updated = jiffies;
                        modified = true;
                }
 
-               if (fdb->added_by_external_learn) {
+               if (test_bit(BR_FDB_ADDED_BY_EXT_LEARN, &fdb->flags)) {
                        /* Refresh entry */
                        fdb->used = jiffies;
                } else if (!test_bit(BR_FDB_ADDED_BY_USER, &fdb->flags)) {
                        /* Take over SW learned entry */
-                       fdb->added_by_external_learn = 1;
+                       set_bit(BR_FDB_ADDED_BY_EXT_LEARN, &fdb->flags);
                        modified = true;
                }
 
        spin_lock_bh(&br->hash_lock);
 
        fdb = br_fdb_find(br, addr, vid);
-       if (fdb && fdb->added_by_external_learn)
+       if (fdb && test_bit(BR_FDB_ADDED_BY_EXT_LEARN, &fdb->flags))
                fdb_delete(br, fdb, swdev_notify);
        else
                err = -ENOENT;