message = sfm(port,currSCCB); 
message = FPT_sfm(port,currSCCB); 
void sdecm(UCHAR message, ULONG port, UCHAR p_card)#endif{	PSCCB currSCCB;	PSCCBcard CurrCard;	PSCCBMgr_tar_info currTar_Info;	CurrCard = &BL_Card[p_card];	currSCCB = CurrCard->currentSCCB;	currTar_Info = &sccbMgrTbl[p_card][currSCCB->TargID];	if (message == SMREST_DATA_PTR)	{		if (!(currSCCB->Sccb_XferState & F_NO_DATA_YET))		{			currSCCB->Sccb_ATC = currSCCB->Sccb_savedATC;			hostDataXferRestart(currSCCB);		}		ACCEPT_MSG(port);		WR_HARPOON(port+hp_autostart_1, (AUTO_IMMED+DISCONNECT_START));	}	else if (message == SMCMD_COMP)	{		if (currSCCB->Sccb_scsistat == SELECT_Q_ST)		{			currTar_Info->TarStatus &= ~(UCHAR)TAR_TAG_Q_MASK;			currTar_Info->TarStatus |= (UCHAR)TAG_Q_REJECT;		}		ACCEPT_MSG(port);	}	else if ((message == SMNO_OP) || (message >= SMIDENT) 			|| (message == SMINIT_RECOVERY) || (message == SMREL_RECOVERY))	{		ACCEPT_MSG(port);		WR_HARPOON(port+hp_autostart_1, (AUTO_IMMED+DISCONNECT_START));	}	else if (message == SMREJECT)	{		if ((currSCCB->Sccb_scsistat == SELECT_SN_ST) ||				(currSCCB->Sccb_scsistat == SELECT_WN_ST) ||				((currTar_Info->TarStatus & TAR_SYNC_MASK) == SYNC_TRYING ) ||				((currTar_Info->TarStatus & TAR_TAG_Q_MASK) == TAG_Q_TRYING ) )		{			WRW_HARPOON((port+hp_intstat), BUS_FREE);			ACCEPT_MSG(port);			while ((!(RD_HARPOON(port+hp_scsisig) & SCSI_REQ)) &&				(!(RDW_HARPOON((port+hp_intstat)) & BUS_FREE))) {}			if(currSCCB->Lun == 0x00)			{				if ((currSCCB->Sccb_scsistat == SELECT_SN_ST))				{					currTar_Info->TarStatus |= (UCHAR)SYNC_SUPPORTED;					currTar_Info->TarEEValue &= ~EE_SYNC_MASK;				}#if defined(WIDE_SCSI)				else if ((currSCCB->Sccb_scsistat == SELECT_WN_ST))				{					currTar_Info->TarStatus = (currTar_Info->TarStatus &													~WIDE_ENABLED) | WIDE_NEGOCIATED;					currTar_Info->TarEEValue &= ~EE_WIDE_SCSI;				}#endif				else if ((currTar_Info->TarStatus & TAR_TAG_Q_MASK) == TAG_Q_TRYING )				{					currTar_Info->TarStatus = (currTar_Info->TarStatus &													~(UCHAR)TAR_TAG_Q_MASK) | TAG_Q_REJECT;					currSCCB->ControlByte &= ~F_USE_CMD_Q;					CurrCard->discQCount--;					CurrCard->discQ_Tbl[currSCCB->Sccb_tag] = NULL;					currSCCB->Sccb_tag = 0x00;				}			}			if (RDW_HARPOON((port+hp_intstat)) & BUS_FREE)			{				if(currSCCB->Lun == 0x00)				{					WRW_HARPOON((port+hp_intstat), BUS_FREE);					CurrCard->globalFlags |= F_NEW_SCCB_CMD;				}			}			else 			{				if((CurrCard->globalFlags & F_CONLUN_IO) &&					((currTar_Info->TarStatus & TAR_TAG_Q_MASK) != TAG_Q_TRYING))					currTar_Info->TarLUNBusy[currSCCB->Lun] = TRUE;				else					currTar_Info->TarLUNBusy[0] = TRUE;				currSCCB->ControlByte &= ~(UCHAR)F_USE_CMD_Q;				WR_HARPOON(port+hp_autostart_1, (AUTO_IMMED+DISCONNECT_START));			}		}		else		{			ACCEPT_MSG(port);			while ((!(RD_HARPOON(port+hp_scsisig) & SCSI_REQ)) &&				(!(RDW_HARPOON((port+hp_intstat)) & BUS_FREE))) {}				if (!(RDW_HARPOON((port+hp_intstat)) & BUS_FREE))			{				WR_HARPOON(port+hp_autostart_1, (AUTO_IMMED+DISCONNECT_START));			}		}	}	else if (message == SMEXT)	{		ACCEPT_MSG(port);		shandem(port,p_card,currSCCB);	}	else if (message == SMIGNORWR)	{		ACCEPT_MSG(port);          /* ACK the RESIDUE MSG */		message = sfm(port,currSCCB);		if(currSCCB->Sccb_scsimsg != SMPARITY)			ACCEPT_MSG(port);		WR_HARPOON(port+hp_autostart_1, (AUTO_IMMED+DISCONNECT_START));	}	else	{		currSCCB->HostStatus = SCCB_PHASE_SEQUENCE_FAIL;		currSCCB->Sccb_scsimsg = SMREJECT;		ACCEPT_MSG_ATN(port);		WR_HARPOON(port+hp_autostart_1, (AUTO_IMMED+DISCONNECT_START));	}}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/47b5d69c4aa753fcfc9b2b8d28c0660a1e25c129/FlashPoint.c/buggy/drivers/scsi/FlashPoint.c