Skip to content

Commit

Permalink
[SCSI] lpfc 8.1.5 : Use asynchronous ABTS completion to speed up abor…
Browse files Browse the repository at this point in the history
…t completions

Use asynchronous ABTS completion to speed up abort completions

Signed-off-by: James Smart <James.Smart@emulex.com>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
  • Loading branch information
James Smart authored and James Bottomley committed Apr 20, 2006
1 parent a0f9b48 commit 4b0b91d
Show file tree
Hide file tree
Showing 6 changed files with 4 additions and 51 deletions.
1 change: 0 additions & 1 deletion drivers/scsi/lpfc/lpfc_crtn.h
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@ void lpfc_config_link(struct lpfc_hba *, LPFC_MBOXQ_t *);
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 *);
Expand Down
7 changes: 0 additions & 7 deletions drivers/scsi/lpfc/lpfc_els.c
Original file line number Diff line number Diff line change
Expand Up @@ -302,10 +302,6 @@ lpfc_cmpl_els_flogi_fabric(struct lpfc_hba *phba, struct lpfc_nodelist *ndlp,
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;

Expand Down Expand Up @@ -1872,9 +1868,6 @@ lpfc_cmpl_els_acc(struct lpfc_hba * phba, struct lpfc_iocbq * cmdiocb,
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;
Expand Down
1 change: 1 addition & 0 deletions drivers/scsi/lpfc/lpfc_hw.h
Original file line number Diff line number Diff line change
Expand Up @@ -1539,6 +1539,7 @@ typedef struct {

#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 */
Expand Down
9 changes: 0 additions & 9 deletions drivers/scsi/lpfc/lpfc_init.c
Original file line number Diff line number Diff line change
Expand Up @@ -294,15 +294,6 @@ lpfc_config_port_post(struct lpfc_hba * phba)
}
}

/* 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,
Expand Down
33 changes: 3 additions & 30 deletions drivers/scsi/lpfc/lpfc_mbox.c
Original file line number Diff line number Diff line change
Expand Up @@ -200,6 +200,9 @@ lpfc_init_link(struct lpfc_hba * phba,
break;
}

/* Enable asynchronous ABTS responses from firmware */
mb->un.varInitLnk.link_flags |= FLAGS_IMED_ABORT;

/* NEW_FEATURE
* Setting up the link speed
*/
Expand Down Expand Up @@ -292,36 +295,6 @@ lpfc_unreg_did(struct lpfc_hba * phba, uint32_t did, LPFC_MBOXQ_t * pmb)
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 */
Expand Down
4 changes: 0 additions & 4 deletions drivers/scsi/lpfc/lpfc_nportdisc.c
Original file line number Diff line number Diff line change
Expand Up @@ -788,10 +788,6 @@ lpfc_cmpl_plogi_plogi_issue(struct lpfc_hba * phba,
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 =
Expand Down

0 comments on commit 4b0b91d

Please sign in to comment.