lif->rx_mode = rx_mode;
 }
 
-static void ionic_set_rx_mode(struct net_device *netdev, bool from_ndo)
+static void ionic_set_rx_mode(struct net_device *netdev, bool can_sleep)
 {
        struct ionic_lif *lif = netdev_priv(netdev);
        struct ionic_deferred_work *work;
         *       we remove our overflow flag and check the netdev flags
         *       to see if we can disable NIC PROMISC
         */
-       if (from_ndo)
-               __dev_uc_sync(netdev, ionic_ndo_addr_add, ionic_ndo_addr_del);
-       else
+       if (can_sleep)
                __dev_uc_sync(netdev, ionic_addr_add, ionic_addr_del);
+       else
+               __dev_uc_sync(netdev, ionic_ndo_addr_add, ionic_ndo_addr_del);
        nfilters = le32_to_cpu(lif->identity->eth.max_ucast_filters);
        if (netdev_uc_count(netdev) + 1 > nfilters) {
                rx_mode |= IONIC_RX_MODE_F_PROMISC;
        }
 
        /* same for multicast */
-       if (from_ndo)
-               __dev_mc_sync(netdev, ionic_ndo_addr_add, ionic_ndo_addr_del);
-       else
+       if (can_sleep)
                __dev_mc_sync(netdev, ionic_addr_add, ionic_addr_del);
+       else
+               __dev_mc_sync(netdev, ionic_ndo_addr_add, ionic_ndo_addr_del);
        nfilters = le32_to_cpu(lif->identity->eth.max_mcast_filters);
        if (netdev_mc_count(netdev) > nfilters) {
                rx_mode |= IONIC_RX_MODE_F_ALLMULTI;
        }
 
        if (lif->rx_mode != rx_mode) {
-               if (from_ndo) {
+               if (!can_sleep) {
                        work = kzalloc(sizeof(*work), GFP_ATOMIC);
                        if (!work) {
                                netdev_err(lif->netdev, "%s OOM\n", __func__);
 
 static void ionic_ndo_set_rx_mode(struct net_device *netdev)
 {
-       ionic_set_rx_mode(netdev, true);
+       ionic_set_rx_mode(netdev, false);
 }
 
 static __le64 ionic_netdev_features_to_nic(netdev_features_t features)
        if (lif->netdev->features & NETIF_F_RXHASH)
                ionic_lif_rss_init(lif);
 
-       ionic_set_rx_mode(lif->netdev, false);
+       ionic_set_rx_mode(lif->netdev, true);
 
        return 0;