ipoib_mcast_stop_thread(dev, 0);
 
        local_irq_save(flags);
-       netif_tx_lock(dev);
        netif_addr_lock(dev);
        spin_lock(&priv->lock);
 
 
        spin_unlock(&priv->lock);
        netif_addr_unlock(dev);
-       netif_tx_unlock(dev);
        local_irq_restore(flags);
 
        /* We have to cancel outside of the spinlock */
 
 
        dvb_net_feed_stop(dev);
        priv->rx_mode = RX_MODE_UNI;
-       netif_tx_lock_bh(dev);
-       netif_addr_lock(dev);
+       netif_addr_lock_bh(dev);
 
        if (dev->flags & IFF_PROMISC) {
                dprintk("%s: promiscuous mode\n", dev->name);
                }
        }
 
-       netif_addr_unlock(dev);
-       netif_tx_unlock_bh(dev);
+       netif_addr_unlock_bh(dev);
        dvb_net_feed_start(dev);
 }
 
 
                                goto err_close;
                }
 
-               netif_tx_lock_bh(bond_dev);
-               netif_addr_lock(bond_dev);
+               netif_addr_lock_bh(bond_dev);
                /* upload master's mc_list to new slave */
                for (dmi = bond_dev->mc_list; dmi; dmi = dmi->next) {
                        dev_mc_add (slave_dev, dmi->dmi_addr, dmi->dmi_addrlen, 0);
                }
-               netif_addr_unlock(bond_dev);
-               netif_tx_unlock_bh(bond_dev);
+               netif_addr_unlock_bh(bond_dev);
        }
 
        if (bond->params.mode == BOND_MODE_8023AD) {
                }
 
                /* flush master's mc_list from slave */
-               netif_tx_lock_bh(bond_dev);
-               netif_addr_lock(bond_dev);
+               netif_addr_lock_bh(bond_dev);
                bond_mc_list_flush(bond_dev, slave_dev);
-               netif_addr_unlock(bond_dev);
-               netif_tx_unlock_bh(bond_dev);
+               netif_addr_unlock_bh(bond_dev);
        }
 
        netdev_set_master(slave_dev, NULL);
                        }
 
                        /* flush master's mc_list from slave */
-                       netif_tx_lock_bh(bond_dev);
-                       netif_addr_lock(bond_dev);
+                       netif_addr_lock_bh(bond_dev);
                        bond_mc_list_flush(bond_dev, slave_dev);
-                       netif_addr_unlock(bond_dev);
-                       netif_tx_unlock_bh(bond_dev);
+                       netif_addr_unlock_bh(bond_dev);
                }
 
                netdev_set_master(slave_dev, NULL);
                struct net_device *bond_dev = bond->dev;
 
                bond_work_cancel_all(bond);
-               netif_tx_lock_bh(bond_dev);
-               netif_addr_lock(bond_dev);
+               netif_addr_lock_bh(bond_dev);
                bond_mc_list_destroy(bond);
-               netif_addr_unlock(bond_dev);
-               netif_tx_unlock_bh(bond_dev);
+               netif_addr_unlock_bh(bond_dev);
                /* Release the bonded slaves */
                bond_release_all(bond_dev);
                bond_destroy(bond);
 
 
        /* Serialise against efx_set_multicast_list() */
        if (efx_dev_registered(efx)) {
-               netif_tx_lock_bh(efx->net_dev);
-               netif_addr_lock(efx->net_dev);
-               netif_addr_unlock(efx->net_dev);
-               netif_tx_unlock_bh(efx->net_dev);
+               netif_addr_lock_bh(efx->net_dev);
+               netif_addr_unlock_bh(efx->net_dev);
        }
 }
 
 
        if ((dev->flags & (IFF_UP|IFF_MULTICAST)) != (IFF_UP|IFF_MULTICAST))
                return nr_addrs;
 
-       netif_tx_lock_bh(dev);
-       netif_addr_lock(dev);
+       netif_addr_lock_bh(dev);
        for (mc_list = dev->mc_list; mc_list; mc_list = mc_list->next) {
                if (mac_in_list(cmd->maclist, nr_addrs, mc_list->dmi_addr)) {
                        lbs_deb_net("mcast address %s:%s skipped\n", dev->name,
                            print_mac(mac, mc_list->dmi_addr));
                i++;
        }
-       netif_addr_unlock(dev);
-       netif_tx_unlock_bh(dev);
+       netif_addr_unlock_bh(dev);
        if (mc_list)
                return -EOVERFLOW;
 
 
 
 void dev_set_rx_mode(struct net_device *dev)
 {
-       netif_tx_lock_bh(dev);
-       netif_addr_lock(dev);
+       netif_addr_lock_bh(dev);
        __dev_set_rx_mode(dev);
-       netif_addr_unlock(dev);
-       netif_tx_unlock_bh(dev);
+       netif_addr_unlock_bh(dev);
 }
 
 int __dev_addr_delete(struct dev_addr_list **list, int *count,
 
        ASSERT_RTNL();
 
-       netif_tx_lock_bh(dev);
-       netif_addr_lock(dev);
+       netif_addr_lock_bh(dev);
        err = __dev_addr_delete(&dev->uc_list, &dev->uc_count, addr, alen, 0);
        if (!err)
                __dev_set_rx_mode(dev);
-       netif_addr_unlock(dev);
-       netif_tx_unlock_bh(dev);
+       netif_addr_unlock_bh(dev);
        return err;
 }
 EXPORT_SYMBOL(dev_unicast_delete);
 
        ASSERT_RTNL();
 
-       netif_tx_lock_bh(dev);
-       netif_addr_lock(dev);
+       netif_addr_lock_bh(dev);
        err = __dev_addr_add(&dev->uc_list, &dev->uc_count, addr, alen, 0);
        if (!err)
                __dev_set_rx_mode(dev);
-       netif_addr_unlock(dev);
-       netif_tx_unlock_bh(dev);
+       netif_addr_unlock_bh(dev);
        return err;
 }
 EXPORT_SYMBOL(dev_unicast_add);
 {
        int err = 0;
 
-       netif_tx_lock_bh(to);
-       netif_addr_lock(to);
+       netif_addr_lock_bh(to);
        err = __dev_addr_sync(&to->uc_list, &to->uc_count,
                              &from->uc_list, &from->uc_count);
        if (!err)
                __dev_set_rx_mode(to);
-       netif_addr_unlock(to);
-       netif_tx_unlock_bh(to);
+       netif_addr_unlock_bh(to);
        return err;
 }
 EXPORT_SYMBOL(dev_unicast_sync);
  */
 void dev_unicast_unsync(struct net_device *to, struct net_device *from)
 {
-       netif_tx_lock_bh(from);
-       netif_addr_lock(from);
-       netif_tx_lock_bh(to);
+       netif_addr_lock_bh(from);
        netif_addr_lock(to);
 
        __dev_addr_unsync(&to->uc_list, &to->uc_count,
        __dev_set_rx_mode(to);
 
        netif_addr_unlock(to);
-       netif_tx_unlock_bh(to);
-       netif_addr_unlock(from);
-       netif_tx_unlock_bh(from);
+       netif_addr_unlock_bh(from);
 }
 EXPORT_SYMBOL(dev_unicast_unsync);
 
 
 static void dev_addr_discard(struct net_device *dev)
 {
-       netif_tx_lock_bh(dev);
-       netif_addr_lock(dev);
+       netif_addr_lock_bh(dev);
 
        __dev_addr_discard(&dev->uc_list);
        dev->uc_count = 0;
        __dev_addr_discard(&dev->mc_list);
        dev->mc_count = 0;
 
-       netif_addr_unlock(dev);
-       netif_tx_unlock_bh(dev);
+       netif_addr_unlock_bh(dev);
 }
 
 unsigned dev_get_flags(const struct net_device *dev)
 
 {
        int err;
 
-       netif_tx_lock_bh(dev);
-       netif_addr_lock(dev);
+       netif_addr_lock_bh(dev);
        err = __dev_addr_delete(&dev->mc_list, &dev->mc_count,
                                addr, alen, glbl);
        if (!err) {
 
                __dev_set_rx_mode(dev);
        }
-       netif_addr_unlock(dev);
-       netif_tx_unlock_bh(dev);
+       netif_addr_unlock_bh(dev);
        return err;
 }
 
 {
        int err;
 
-       netif_tx_lock_bh(dev);
-       netif_addr_lock(dev);
+       netif_addr_lock_bh(dev);
        err = __dev_addr_add(&dev->mc_list, &dev->mc_count, addr, alen, glbl);
        if (!err)
                __dev_set_rx_mode(dev);
-       netif_addr_unlock(dev);
-       netif_tx_unlock_bh(dev);
+       netif_addr_unlock_bh(dev);
        return err;
 }
 
 {
        int err = 0;
 
-       netif_tx_lock_bh(to);
-       netif_addr_lock(to);
+       netif_addr_lock_bh(to);
        err = __dev_addr_sync(&to->mc_list, &to->mc_count,
                              &from->mc_list, &from->mc_count);
        if (!err)
                __dev_set_rx_mode(to);
-       netif_addr_unlock(to);
-       netif_tx_unlock_bh(to);
+       netif_addr_unlock_bh(to);
 
        return err;
 }
  */
 void dev_mc_unsync(struct net_device *to, struct net_device *from)
 {
-       netif_tx_lock_bh(from);
-       netif_addr_lock(from);
-       netif_tx_lock_bh(to);
+       netif_addr_lock_bh(from);
        netif_addr_lock(to);
 
        __dev_addr_unsync(&to->mc_list, &to->mc_count,
        __dev_set_rx_mode(to);
 
        netif_addr_unlock(to);
-       netif_tx_unlock_bh(to);
-       netif_addr_unlock(from);
-       netif_tx_unlock_bh(from);
+       netif_addr_unlock_bh(from);
 }
 EXPORT_SYMBOL(dev_mc_unsync);
 
        if (v == SEQ_START_TOKEN)
                return 0;
 
-       netif_tx_lock_bh(dev);
-       netif_addr_lock(dev);
+       netif_addr_lock_bh(dev);
        for (m = dev->mc_list; m; m = m->next) {
                int i;
 
 
                seq_putc(seq, '\n');
        }
-       netif_addr_unlock(dev);
-       netif_tx_unlock_bh(dev);
+       netif_addr_unlock_bh(dev);
        return 0;
 }
 
 
                if (sdata->u.mntr_flags & MONITOR_FLAG_OTHER_BSS)
                        local->fif_other_bss++;
 
-               netif_tx_lock_bh(local->mdev);
-               netif_addr_lock(local->mdev);
+               netif_addr_lock_bh(local->mdev);
                ieee80211_configure_filter(local);
-               netif_addr_unlock(local->mdev);
-               netif_tx_unlock_bh(local->mdev);
+               netif_addr_unlock_bh(local->mdev);
                break;
        case IEEE80211_IF_TYPE_STA:
        case IEEE80211_IF_TYPE_IBSS:
                if (sdata->u.mntr_flags & MONITOR_FLAG_OTHER_BSS)
                        local->fif_other_bss--;
 
-               netif_tx_lock_bh(local->mdev);
-               netif_addr_lock(local->mdev);
+               netif_addr_lock_bh(local->mdev);
                ieee80211_configure_filter(local);
-               netif_addr_unlock(local->mdev);
-               netif_tx_unlock_bh(local->mdev);
+               netif_addr_unlock_bh(local->mdev);
                break;
        case IEEE80211_IF_TYPE_MESH_POINT:
        case IEEE80211_IF_TYPE_STA:
 
        local->scan_band = IEEE80211_BAND_2GHZ;
        local->scan_dev = dev;
 
-       netif_tx_lock_bh(local->mdev);
-       netif_addr_lock(local->mdev);
+       netif_addr_lock_bh(local->mdev);
        local->filter_flags |= FIF_BCN_PRBRESP_PROMISC;
        local->ops->configure_filter(local_to_hw(local),
                                     FIF_BCN_PRBRESP_PROMISC,
                                     &local->filter_flags,
                                     local->mdev->mc_count,
                                     local->mdev->mc_list);
-       netif_addr_unlock(local->mdev);
-       netif_tx_unlock_bh(local->mdev);
+       netif_addr_unlock_bh(local->mdev);
 
        /* TODO: start scan as soon as all nullfunc frames are ACKed */
        queue_delayed_work(local->hw.workqueue, &local->scan_work,