* NIC to stop sending us irqs, engaging "in-intr-handler"
         * event coalescing.
         */
-       tw32_mailbox(MAILBOX_INTERRUPT_0 + TG3_64BIT_REG_LOW, 0x00000001);
+       tw32_mailbox(tnapi->int_mbox, 0x00000001);
        if (likely(!tg3_irq_sync(tp)))
                napi_schedule(&tnapi->napi);
 
        if (tg3_flag(tp, USING_MSIX) && tp->irq_cnt > 1) {
                val = tr32(MSGINT_MODE);
                val |= MSGINT_MODE_MULTIVEC_EN | MSGINT_MODE_ENABLE;
+               if (!tg3_flag(tp, 1SHOT_MSI))
+                       val |= MSGINT_MODE_ONE_SHOT_DISABLE;
                tw32(MSGINT_MODE, val);
        }
 
 
        if (intr_ok) {
                /* Reenable MSI one shot mode. */
-               if (tg3_flag(tp, 57765_PLUS)) {
+               if (tg3_flag(tp, 57765_PLUS) && tg3_flag(tp, 1SHOT_MSI)) {
                        val = tr32(MSGINT_MODE) & ~MSGINT_MODE_ONE_SHOT_DISABLE;
                        tw32(MSGINT_MODE, val);
                }
                u32 msi_mode = tr32(MSGINT_MODE);
                if (tg3_flag(tp, USING_MSIX) && tp->irq_cnt > 1)
                        msi_mode |= MSGINT_MODE_MULTIVEC_EN;
+               if (!tg3_flag(tp, 1SHOT_MSI))
+                       msi_mode |= MSGINT_MODE_ONE_SHOT_DISABLE;
                tw32(MSGINT_MODE, msi_mode | MSGINT_MODE_ENABLE);
        }
 defcfg: