return NULL;
 }
 
+void be_async_mcc_enable(struct be_adapter *adapter)
+{
+       spin_lock_bh(&adapter->mcc_cq_lock);
+
+       be_cq_notify(adapter, adapter->mcc_obj.cq.id, true, 0);
+       adapter->mcc_obj.rearm_cq = true;
+
+       spin_unlock_bh(&adapter->mcc_cq_lock);
+}
+
+void be_async_mcc_disable(struct be_adapter *adapter)
+{
+       adapter->mcc_obj.rearm_cq = false;
+}
+
 int be_process_mcc(struct be_adapter *adapter)
 {
        struct be_mcc_compl *compl;
        int num = 0, status = 0;
+       struct be_mcc_obj *mcc_obj = &adapter->mcc_obj;
 
        spin_lock_bh(&adapter->mcc_cq_lock);
        while ((compl = be_mcc_compl_get(adapter))) {
                                (struct be_async_event_link_state *) compl);
                } else if (compl->flags & CQE_FLAGS_COMPLETED_MASK) {
                                status = be_mcc_compl_process(adapter, compl);
-                               atomic_dec(&adapter->mcc_obj.q.used);
+                               atomic_dec(&mcc_obj->q.used);
                }
                be_mcc_compl_use(compl);
                num++;
        }
 
        if (num)
-               be_cq_notify(adapter, adapter->mcc_obj.cq.id, true, num);
+               be_cq_notify(adapter, mcc_obj->cq.id, mcc_obj->rearm_cq, num);
 
        spin_unlock_bh(&adapter->mcc_cq_lock);
        return status;
 
                                struct be_dma_mem *nonemb_cmd);
 extern int be_cmd_fw_init(struct be_adapter *adapter);
 extern int be_cmd_fw_clean(struct be_adapter *adapter);
+extern void be_async_mcc_enable(struct be_adapter *adapter);
+extern void be_async_mcc_disable(struct be_adapter *adapter);
 extern int be_cmd_loopback_test(struct be_adapter *adapter, u32 port_num,
                                u32 loopback_type, u32 pkt_size,
                                u32 num_pkts, u64 pattern);
 
        /* Rx compl queue may be in unarmed state; rearm it */
        be_cq_notify(adapter, adapter->rx_obj.cq.id, true, 0);
 
+       /* Now that interrupts are on we can process async mcc */
+       be_async_mcc_enable(adapter);
+
        status = be_cmd_link_status_query(adapter, &link_up, &mac_speed,
                        &link_speed);
        if (status)
 
        cancel_delayed_work_sync(&adapter->work);
 
+       be_async_mcc_disable(adapter);
+
        netif_stop_queue(netdev);
        netif_carrier_off(netdev);
        adapter->link_up = false;