sym_set_cam_status(cp->cmd, CAM_REQUEUE_REQ); 
sym_set_cam_status(cp->cmd, DID_SOFT_ERROR); 
sym_dequeue_from_squeue(struct sym_hcb *np, int i, int target, int lun, int task){	int j;	struct sym_ccb *cp;	/*	 *  Make sure the starting index is within range.	 */	assert((i >= 0) && (i < 2*MAX_QUEUE));	/*	 *  Walk until end of START queue and dequeue every job 	 *  that matches the target/lun/task condition.	 */	j = i;	while (i != np->squeueput) {		cp = sym_ccb_from_dsa(np, scr_to_cpu(np->squeue[i]));		assert(cp);#ifdef SYM_CONF_IARB_SUPPORT		/* Forget hints for IARB, they may be no longer relevant */		cp->host_flags &= ~HF_HINT_IARB;#endif		if ((target == -1 || cp->target == target) &&		    (lun    == -1 || cp->lun    == lun)    &&		    (task   == -1 || cp->tag    == task)) {			sym_set_cam_status(cp->cmd, CAM_REQUEUE_REQ);			sym_remque(&cp->link_ccbq);			sym_insque_tail(&cp->link_ccbq, &np->comp_ccbq);		}		else {			if (i != j)				np->squeue[j] = np->squeue[i];			if ((j += 2) >= MAX_QUEUE*2) j = 0;		}		if ((i += 2) >= MAX_QUEUE*2) i = 0;	}	if (i != j)		/* Copy back the idle task if needed */		np->squeue[j] = np->squeue[i];	np->squeueput = j;	/* Update our current start queue pointer */	return (i - j) / 2;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/53222b906903fd861dc24ebccfa07ee125941313/sym_hipd.c/clean/drivers/scsi/sym53c8xx_2/sym_hipd.c