int lpfc_read_sparam(struct lpfc_hba *, LPFC_MBOXQ_t *);
 void lpfc_read_config(struct lpfc_hba *, LPFC_MBOXQ_t *);
 void lpfc_read_lnk_stat(struct lpfc_hba *, LPFC_MBOXQ_t *);
-void lpfc_set_slim(struct lpfc_hba *, LPFC_MBOXQ_t *, uint32_t, uint32_t);
 int lpfc_reg_login(struct lpfc_hba *, uint32_t, uint8_t *, LPFC_MBOXQ_t *,
                   uint32_t);
 void lpfc_unreg_login(struct lpfc_hba *, uint32_t, LPFC_MBOXQ_t *);
 
        if (lpfc_reg_login(phba, Fabric_DID, (uint8_t *) sp, mbox, 0))
                goto fail_free_mbox;
 
-       /*
-        * set_slim mailbox command needs to execute first,
-        * queue this command to be processed later.
-        */
        mbox->mbox_cmpl = lpfc_mbx_cmpl_fabric_reg_login;
        mbox->context2 = ndlp;
 
        if (mbox) {
                if ((rspiocb->iocb.ulpStatus == 0)
                    && (ndlp->nlp_flag & NLP_ACC_REGLOGIN)) {
-                       /* set_slim mailbox command needs to execute first,
-                        * queue this command to be processed later.
-                        */
                        lpfc_unreg_rpi(phba, ndlp);
                        mbox->mbox_cmpl = lpfc_mbx_cmpl_reg_login;
                        mbox->context2 = ndlp;
 
 
 #define FLAGS_TOPOLOGY_FAILOVER      0x0400    /* Bit 10 */
 #define FLAGS_LINK_SPEED             0x0800    /* Bit 11 */
+#define FLAGS_IMED_ABORT             0x04000   /* Bit 14 */
 
        uint32_t link_speed;
 #define LINK_SPEED_AUTO 0       /* Auto selection */
 
                }
        }
 
-       /* This should turn on DELAYED ABTS for ELS timeouts */
-       lpfc_set_slim(phba, pmb, 0x052198, 0x1);
-       if (lpfc_sli_issue_mbox(phba, pmb, MBX_POLL) != MBX_SUCCESS) {
-               phba->hba_state = LPFC_HBA_ERROR;
-               mempool_free( pmb, phba->mbox_mem_pool);
-               return -EIO;
-       }
-
-
        lpfc_read_config(phba, pmb);
        if (lpfc_sli_issue_mbox(phba, pmb, MBX_POLL) != MBX_SUCCESS) {
                lpfc_printf_log(phba,
 
                break;
        }
 
+       /* Enable asynchronous ABTS responses from firmware */
+       mb->un.varInitLnk.link_flags |= FLAGS_IMED_ABORT;
+
        /* NEW_FEATURE
         * Setting up the link speed
         */
        return;
 }
 
-/***********************************************/
-
-/*                  command to write slim      */
-/***********************************************/
-void
-lpfc_set_slim(struct lpfc_hba * phba, LPFC_MBOXQ_t * pmb, uint32_t addr,
-             uint32_t value)
-{
-       MAILBOX_t *mb;
-
-       mb = &pmb->mb;
-       memset(pmb, 0, sizeof (LPFC_MBOXQ_t));
-
-       /* addr = 0x090597 is AUTO ABTS disable for ELS commands */
-       /* addr = 0x052198 is DELAYED ABTS enable for ELS commands */
-
-       /*
-        * Always turn on DELAYED ABTS for ELS timeouts
-        */
-       if ((addr == 0x052198) && (value == 0))
-               value = 1;
-
-       mb->un.varWords[0] = addr;
-       mb->un.varWords[1] = value;
-
-       mb->mbxCommand = MBX_SET_SLIM;
-       mb->mbxOwner = OWN_HOST;
-       return;
-}
-
 /**********************************************/
 /*  lpfc_read_nv  Issue a READ CONFIG         */
 /*                mailbox command             */
 
        if (lpfc_reg_login
            (phba, irsp->un.elsreq64.remoteID,
             (uint8_t *) sp, mbox, 0) == 0) {
-               /* set_slim mailbox command needs to
-                * execute first, queue this command to
-                * be processed later.
-                */
                switch (ndlp->nlp_DID) {
                case NameServer_DID:
                        mbox->mbox_cmpl =