hostdata->tag_negotiated &= ~(1<<SCp->device->id); 
hostdata->tag_negotiated &= ~(1<<scmd_id(SCp)); 
process_message(struct Scsi_Host *host,	struct NCR_700_Host_Parameters *hostdata,		struct scsi_cmnd *SCp, __u32 dsp, __u32 dsps){	/* work out where to return to */	__u32 temp = dsp + 8, resume_offset = dsp;	__u8 pun = 0xff, lun = 0xff;	if(SCp != NULL) {		pun = SCp->device->id;		lun = SCp->device->lun;	}#ifdef NCR_700_DEBUG	printk("scsi%d (%d:%d): message %s: ", host->host_no, pun, lun,	       NCR_700_phase[(dsps & 0xf00) >> 8]);	scsi_print_msg(hostdata->msgin);	printk("\n");#endif	switch(hostdata->msgin[0]) {	case A_EXTENDED_MSG:		resume_offset =  process_extended_message(host, hostdata, SCp,							  dsp, dsps);		break;	case A_REJECT_MSG:		if(SCp != NULL && NCR_700_is_flag_set(SCp->device, NCR_700_DEV_BEGIN_SYNC_NEGOTIATION)) {			/* Rejected our sync negotiation attempt */			spi_period(SCp->device->sdev_target) =				spi_offset(SCp->device->sdev_target) = 0;			NCR_700_set_flag(SCp->device, NCR_700_DEV_NEGOTIATED_SYNC);			NCR_700_clear_flag(SCp->device, NCR_700_DEV_BEGIN_SYNC_NEGOTIATION);		} else if(SCp != NULL && NCR_700_get_tag_neg_state(SCp->device) == NCR_700_DURING_TAG_NEGOTIATION) {			/* rejected our first simple tag message */			printk(KERN_WARNING "scsi%d (%d:%d) Rejected first tag queue attempt, turning off tag queueing\n", host->host_no, pun, lun);			/* we're done negotiating */			NCR_700_set_tag_neg_state(SCp->device, NCR_700_FINISHED_TAG_NEGOTIATION);			hostdata->tag_negotiated &= ~(1<<SCp->device->id);			SCp->device->tagged_supported = 0;			scsi_deactivate_tcq(SCp->device, host->cmd_per_lun);		} else {			printk(KERN_WARNING "scsi%d (%d:%d) Unexpected REJECT Message %s\n",			       host->host_no, pun, lun,			       NCR_700_phase[(dsps & 0xf00) >> 8]);			/* however, just ignore it */		}		break;	case A_PARITY_ERROR_MSG:		printk(KERN_ERR "scsi%d (%d:%d) Parity Error!\n", host->host_no,		       pun, lun);		NCR_700_internal_bus_reset(host);		break;	case A_SIMPLE_TAG_MSG:		printk(KERN_INFO "scsi%d (%d:%d) SIMPLE TAG %d %s\n", host->host_no,		       pun, lun, hostdata->msgin[1],		       NCR_700_phase[(dsps & 0xf00) >> 8]);		/* just ignore it */		break;	default:		printk(KERN_INFO "scsi%d (%d:%d): Unexpected message %s: ",		       host->host_no, pun, lun,		       NCR_700_phase[(dsps & 0xf00) >> 8]);		scsi_print_msg(hostdata->msgin);		printk("\n");		/* just reject it */		hostdata->msgout[0] = A_REJECT_MSG;		dma_cache_sync(hostdata->msgout, 1, DMA_TO_DEVICE);		script_patch_16(hostdata->script, MessageCount, 1);		/* SendMsgOut returns, so set up the return		 * address */		resume_offset = hostdata->pScript + Ent_SendMessageWithATN;		break;	}	NCR_700_writel(temp, host, TEMP_REG);	/* set us up to receive another message */	dma_cache_sync(hostdata->msgin, MSG_ARRAY_SIZE, DMA_FROM_DEVICE);	return resume_offset;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/017560fca496f72ed9dd734ffde63ce39dfe0411/53c700.c/buggy/drivers/scsi/53c700.c