sky2_read32(hw, B0_IMSK); 
static int sky2_poll(struct net_device *dev, int *budget){	struct sky2_port *sky2 = netdev_priv(dev);	struct sky2_hw *hw = sky2->hw;	unsigned int to_do = min(dev->quota, *budget);	unsigned int work_done = 0;	unsigned char summed[2] = { CHECKSUM_NONE, CHECKSUM_NONE };	unsigned int csum[2] = { 0 };	unsigned int rx_handled[2] = { 0, 0};	u16 last;	sky2_write32(hw, STAT_CTRL, SC_STAT_CLR_IRQ);	last = sky2_read16(hw, STAT_PUT_IDX);	while (hw->st_idx != last && work_done < to_do) {		struct sky2_status_le *le = hw->st_le + hw->st_idx;		struct sk_buff *skb;		u8 port;		u32 status;		u16 length;		rmb();		status = le32_to_cpu(le->status);		length = le16_to_cpu(le->length);		port = le->link;		BUG_ON(port >= hw->ports);		switch(le->opcode & ~HW_OWNER) {		case OP_RXSTAT:			++rx_handled[port];			skb = sky2_receive(hw, port, length, status);			if (likely(skb)) {				__skb_put(skb, length);				skb->protocol = eth_type_trans(skb, dev);				/* Add hw checksum if available */				skb->ip_summed = summed[port];				skb->csum = csum[port];				/* Clear for next packet */				csum[port] = 0;				summed[port] = CHECKSUM_NONE;				netif_receive_skb(skb);				dev->last_rx = jiffies;				++work_done;			}			break;		case OP_RXCHKS:			/* Save computed checksum for next rx */			csum[port] = le16_to_cpu(status & 0xffff);			summed[port] = CHECKSUM_HW;			break;		case OP_TXINDEXLE:			sky2_tx_complete(hw->dev[port],					 get_tx_index(port, status, length));			break;		case OP_RXTIMESTAMP:			break;		default:			if (net_ratelimit())				printk(KERN_WARNING PFX "unknown status opcode 0x%x\n",				       le->opcode);			break;		}		hw->st_idx = (hw->st_idx + 1) & (STATUS_RING_SIZE -1);	}	*budget -= work_done;	dev->quota -= work_done;	if (work_done < to_do) {		/*		 * Another chip workaround, need to restart TX timer if status		 * LE was handled. WA_DEV_43_418		 */		if (is_ec_a1(hw)) {			sky2_write8(hw, STAT_TX_TIMER_CTRL, TIM_STOP);			sky2_write8(hw, STAT_TX_TIMER_CTRL, TIM_START);		}		hw->intr_mask |= Y2_IS_STAT_BMU;		sky2_write32(hw, B0_IMSK, hw->intr_mask);		netif_rx_complete(dev);	}	return work_done >= to_do;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/793b883ed12a6ae6e2901ddb5e038b77d6f0c0ac/sky2.c/buggy/drivers/net/sky2.c