/* ask for interrupts */
        nv_enable_hw_interrupts(dev, np->irqmask);
 
+       netdev_lock(dev);
        spin_lock_irq(&np->lock);
        writel(NVREG_MCASTADDRA_FORCE, base + NvRegMulticastAddrA);
        writel(0, base + NvRegMulticastAddrB);
        ret = nv_update_linkspeed(dev);
        nv_start_rxtx(dev);
        netif_start_queue(dev);
-       napi_enable(&np->napi);
+       napi_enable_locked(&np->napi);
 
        if (ret) {
                netif_carrier_on(dev);
                        round_jiffies(jiffies + STATS_INTERVAL));
 
        spin_unlock_irq(&np->lock);
+       netdev_unlock(dev);
 
        /* If the loopback feature was set while the device was down, make sure
         * that it's set correctly now.