BUG_ON(idx >= size);  wmb(); 
static inline void sky2_put_idx(struct sky2_hw *hw, unsigned q,				u16 idx, u16 *last, u16 size){	BUG_ON(idx >= size);	wmb();	if (is_ec_a1(hw) && idx < *last) {		u16 hwget = sky2_read16(hw, Y2_QADDR(q, PREF_UNIT_GET_IDX));		if (hwget == 0) {			/* Start prefetching again */			sky2_write8(hw, Y2_QADDR(q, PREF_UNIT_FIFO_WM),				    0xe0);			goto setnew;		}		if (hwget == size-1) {			/* set watermark to one list element */			sky2_write8(hw, Y2_QADDR(q, PREF_UNIT_FIFO_WM), 8);			/* set put index to first list element */			sky2_write16(hw, Y2_QADDR(q, PREF_UNIT_PUT_IDX), 0);		} else 	/* have hardware go to end of list */			sky2_write16(hw, Y2_QADDR(q, PREF_UNIT_PUT_IDX), size-1);	} else {	setnew:		sky2_write16(hw, Y2_QADDR(q, PREF_UNIT_PUT_IDX), idx);		*last = idx;	}}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/793b883ed12a6ae6e2901ddb5e038b77d6f0c0ac/sky2.c/buggy/drivers/net/sky2.c