struct list_head *lpfc_iocb_list = &phba->lpfc_iocb_list; struct lpfc_iocbq *abtsiocbp = NULL; 
struct lpfc_iocbq *abtsiocbp; 
lpfc_sli_issue_abort_iotag32(struct lpfc_hba * phba,			     struct lpfc_sli_ring * pring,			     struct lpfc_iocbq * cmdiocb){	struct list_head *lpfc_iocb_list = &phba->lpfc_iocb_list;	struct lpfc_iocbq *abtsiocbp = NULL;	IOCB_t *icmd = NULL;	IOCB_t *iabt = NULL;	/* issue ABTS for this IOCB based on iotag */	list_remove_head(lpfc_iocb_list, abtsiocbp, struct lpfc_iocbq, list);	if (abtsiocbp == NULL)		return 0;	iabt = &abtsiocbp->iocb;	icmd = &cmdiocb->iocb;	switch (icmd->ulpCommand) {	case CMD_ELS_REQUEST64_CR:		/* Even though we abort the ELS command, the firmware may access		 * the BPL or other resources before it processes our		 * ABORT_MXRI64. Thus we must delay reusing the cmdiocb		 * resources till the actual abort request completes.		 */		abtsiocbp->context1 = (void *)((unsigned long)icmd->ulpCommand);		abtsiocbp->context2 = cmdiocb->context2;		abtsiocbp->context3 = cmdiocb->context3;		cmdiocb->context2 = NULL;		cmdiocb->context3 = NULL;		abtsiocbp->iocb_cmpl = lpfc_sli_abort_elsreq_cmpl;		break;	default:		lpfc_sli_release_iocbq(phba, abtsiocbp);		return 0;	}	iabt->un.amxri.abortType = ABORT_TYPE_ABTS;	iabt->un.amxri.iotag32 = icmd->un.elsreq64.bdl.ulpIoTag32;	iabt->ulpLe = 1;	iabt->ulpClass = CLASS3;	iabt->ulpCommand = CMD_ABORT_MXRI64_CN;	if (lpfc_sli_issue_iocb(phba, pring, abtsiocbp, 0) == IOCB_ERROR) {		lpfc_sli_release_iocbq(phba, abtsiocbp);		return 0;	}	return 1;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/0bd4ca25ad2ace4aa717c83dbd4ed21c53c953cb/lpfc_sli.c/clean/drivers/scsi/lpfc/lpfc_sli.c