}
        }
        lpfc_destroy_vport_work_array(phba, vports);
-       /* Clean up any firmware default rpi's */
+
+       /* Clean up any SLI3 firmware default rpi's */
+       if (phba->sli_rev > LPFC_SLI_REV3)
+               goto skip_unreg_did;
+
        mb = mempool_alloc(phba->mbox_mem_pool, GFP_KERNEL);
        if (mb) {
                lpfc_unreg_did(phba, 0xffff, LPFC_UNREG_ALL_DFLT_RPIS, mb);
                }
        }
 
+ skip_unreg_did:
        /* Setup myDID for link up if we are in pt2pt mode */
        if (phba->pport->fc_flag & FC_PT2PT) {
                mb = mempool_alloc(phba->mbox_mem_pool, GFP_KERNEL);
        LPFC_MBOXQ_t     *mbox;
        int rc;
 
+       /* Unreg DID is an SLI3 operation. */
+       if (phba->sli_rev > LPFC_SLI_REV3)
+               return;
+
        mbox = mempool_alloc(phba->mbox_mem_pool, GFP_KERNEL);
        if (mbox) {
                lpfc_unreg_did(phba, vport->vpi, LPFC_UNREG_ALL_DFLT_RPIS,