*
  *     On enable, emits a series of address notifications for all
  *     currently registered hosts.
- *
- *     Must be called under rtnl_lock
  */
 static int qeth_l2_dev2br_an_set(struct qeth_card *card, bool enable)
 {
        if (READ_ONCE(card->info.pnso_mode) == QETH_PNSO_NONE)
                goto free;
 
-       /* Potential re-config in progress, try again later: */
-       if (!rtnl_trylock()) {
-               queue_delayed_work(card->event_wq, dwork,
-                                  msecs_to_jiffies(100));
-               return;
-       }
-       if (!netif_device_present(card->dev))
-               goto out_unlock;
-
        if (data->ac_event.lost_event_mask) {
+               /* Potential re-config in progress, try again later: */
+               if (!rtnl_trylock()) {
+                       queue_delayed_work(card->event_wq, dwork,
+                                          msecs_to_jiffies(100));
+                       return;
+               }
+
+               if (!netif_device_present(card->dev)) {
+                       rtnl_unlock();
+                       goto free;
+               }
+
                QETH_DBF_MESSAGE(3,
                                 "Address change notification overflow on device %x\n",
                                 CARD_DEVID(card));
                                         "Address Notification resynced on device %x\n",
                                         CARD_DEVID(card));
                }
+
+               rtnl_unlock();
        } else {
                for (i = 0; i < data->ac_event.num_entries; i++) {
                        struct qeth_ipacmd_addr_change_entry *entry =
                }
        }
 
-out_unlock:
-       rtnl_unlock();
-
 free:
        kfree(data);
 }
                card->state = CARD_STATE_DOWN;
 
        qeth_l2_set_pnso_mode(card, QETH_PNSO_NONE);
-       if (priv->brport_features & BR_LEARNING_SYNC) {
-               rtnl_lock();
+       if (priv->brport_features & BR_LEARNING_SYNC)
                qeth_l2_dev2br_fdb_flush(card);
-               rtnl_unlock();
-       }
 }
 
 /* Returns zero if the command is successfully "consumed" */