*(u32 *)hwfib->data = cpu_to_le32(ST_OK); 
*(__le32 *)hwfib->data = cpu_to_le32(ST_OK); 
unsigned int aac_response_normal(struct aac_queue * q){	struct aac_dev * dev = q->dev;	struct aac_entry *entry;	struct hw_fib * hwfib;	struct fib * fib;	int consumed = 0;	unsigned long flags;	spin_lock_irqsave(q->lock, flags);		/*	 *	Keep pulling response QEs off the response queue and waking	 *	up the waiters until there are no more QEs. We then return	 *	back to the system. If no response was requesed we just	 *	deallocate the Fib here and continue.	 */	while(aac_consumer_get(dev, q, &entry))	{		int fast;		u32 index = le32_to_cpu(entry->addr);		fast = index & 0x01;		fib = &dev->fibs[index >> 1];		hwfib = fib->hw_fib;				aac_consumer_free(dev, q, HostNormRespQueue);		/*		 *	Remove this fib from the Outstanding I/O queue.		 *	But only if it has not already been timed out.		 *		 *	If the fib has been timed out already, then just 		 *	continue. The caller has already been notified that		 *	the fib timed out.		 */		if (!(fib->flags & FIB_CONTEXT_FLAG_TIMED_OUT)) {			list_del(&fib->queue);			dev->queues->queue[AdapNormCmdQueue].numpending--;		} else {			printk(KERN_WARNING "aacraid: FIB timeout (%x).\n", fib->flags);			printk(KERN_DEBUG"aacraid: hwfib=%p fib index=%i fib=%p\n",hwfib, hwfib->header.SenderData,fib);			continue;		}		spin_unlock_irqrestore(q->lock, flags);		if (fast) {			/*			 *	Doctor the fib			 */			*(u32 *)hwfib->data = cpu_to_le32(ST_OK);			hwfib->header.XferState |= cpu_to_le32(AdapterProcessed);		}		FIB_COUNTER_INCREMENT(aac_config.FibRecved);		if (hwfib->header.Command == cpu_to_le16(NuFileSystem))		{			u32 *pstatus = (u32 *)hwfib->data;			if (*pstatus & cpu_to_le32(0xffff0000))				*pstatus = cpu_to_le32(ST_OK);		}		if (hwfib->header.XferState & cpu_to_le32(NoResponseExpected | Async)) 		{	        	if (hwfib->header.XferState & cpu_to_le32(NoResponseExpected))				FIB_COUNTER_INCREMENT(aac_config.NoResponseRecved);			else 				FIB_COUNTER_INCREMENT(aac_config.AsyncRecved);			/*			 *	NOTE:  we cannot touch the fib after this			 *	    call, because it may have been deallocated.			 */			fib->callback(fib->callback_data, fib);		} else {			unsigned long flagv;			spin_lock_irqsave(&fib->event_lock, flagv);			fib->done = 1;			up(&fib->event_wait);			spin_unlock_irqrestore(&fib->event_lock, flagv);			FIB_COUNTER_INCREMENT(aac_config.NormalRecved);		}		consumed++;		spin_lock_irqsave(q->lock, flags);	}	if (consumed > aac_config.peak_fibs)		aac_config.peak_fibs = consumed;	if (consumed == 0) 		aac_config.zero_fibs++;	spin_unlock_irqrestore(q->lock, flags);	return 0;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/56b5871223f66d4a34e6e1069f241077e9f0a154/dpcsup.c/clean/drivers/scsi/aacraid/dpcsup.c