struct lpfc_iocbq *iocb, *next_iocb; struct lpfc_iocbq *abtsiocb = NULL; struct list_head *lpfc_iocb_list = &phba->lpfc_iocb_list; 
struct lpfc_iocbq *iocbq; struct lpfc_iocbq *abtsiocb; 
lpfc_sli_abort_iocb(struct lpfc_hba *phba, struct lpfc_sli_ring *pring,		    uint16_t tgt_id, uint64_t lun_id, uint32_t ctx,		    lpfc_ctx_cmd abort_cmd){	struct lpfc_iocbq *iocb, *next_iocb;	struct lpfc_iocbq *abtsiocb = NULL;	struct list_head *lpfc_iocb_list = &phba->lpfc_iocb_list;	IOCB_t *cmd = NULL;	struct lpfc_scsi_buf *lpfc_cmd;	int errcnt = 0, ret_val = 0;	list_for_each_entry_safe(iocb, next_iocb, &pring->txcmplq, list) {		cmd = &iocb->iocb;		/* Must be a FCP command */		if ((cmd->ulpCommand != CMD_FCP_ICMND64_CR) &&		    (cmd->ulpCommand != CMD_FCP_IWRITE64_CR) &&		    (cmd->ulpCommand != CMD_FCP_IREAD64_CR)) {			continue;		}		/* context1 MUST be a struct lpfc_scsi_buf */		lpfc_cmd = (struct lpfc_scsi_buf *) (iocb->context1);		ret_val = lpfc_sli_validate_iocb_cmd(lpfc_cmd, tgt_id, lun_id,						     iocb, ctx, abort_cmd);		if (ret_val != 0)			continue;		/* issue ABTS for this IOCB based on iotag */		list_remove_head(lpfc_iocb_list, abtsiocb, struct lpfc_iocbq,				 list);		if (abtsiocb == NULL) {			errcnt++;			continue;		}		abtsiocb->iocb.un.acxri.abortType = ABORT_TYPE_ABTS;		abtsiocb->iocb.un.acxri.abortContextTag = cmd->ulpContext;		abtsiocb->iocb.un.acxri.abortIoTag = cmd->ulpIoTag;		abtsiocb->iocb.ulpLe = 1;		abtsiocb->iocb.ulpClass = cmd->ulpClass;		if (phba->hba_state >= LPFC_LINK_UP)			abtsiocb->iocb.ulpCommand = CMD_ABORT_XRI_CN;		else			abtsiocb->iocb.ulpCommand = CMD_CLOSE_XRI_CN;		/* Setup callback routine and issue the command. */		abtsiocb->iocb_cmpl = lpfc_sli_abort_fcp_cmpl;		ret_val = lpfc_sli_issue_iocb(phba, pring, abtsiocb, 0);		if (ret_val == IOCB_ERROR) {			lpfc_sli_release_iocbq(phba, abtsiocb);			errcnt++;			continue;		}	}	return errcnt;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/0bd4ca25ad2ace4aa717c83dbd4ed21c53c953cb/lpfc_sli.c/clean/drivers/scsi/lpfc/lpfc_sli.c