netif_rx_complete(dev); 
netif_rx_complete(dev0); 
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;	u16 hwidx;	unsigned char summed[2] = { CHECKSUM_NONE, CHECKSUM_NONE };	unsigned int csum[2];	hwidx = sky2_read16(hw, STAT_PUT_IDX);	BUG_ON(hwidx >= STATUS_RING_SIZE); 	rmb();	while (hw->st_idx != hwidx && 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;		status = le32_to_cpu(le->status);		length = le16_to_cpu(le->length);		port = le->link;		BUG_ON(port >= hw->ports || hw->dev[port] == NULL);		switch (le->opcode & ~HW_OWNER) {		case OP_RXSTAT:			skb = sky2_receive(hw, port, length, status);			if (likely(skb)) {				/* Add hw checksum if available */				skb->ip_summed = summed[port];				skb->csum = csum[port];				netif_receive_skb(skb);				++work_done;			}			/* Clear for next packet */			csum[port] = 0;			summed[port] = CHECKSUM_NONE;			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],					 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;		if (hw->st_idx == hwidx) {			hwidx = sky2_read16(hw, STAT_PUT_IDX);			rmb();		}	}	mmiowb();	if (hw->dev[0])		rx_set_put(hw->dev[0]);	if (hw->dev[1])		rx_set_put(hw->dev[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);		sky2_read32(hw, B0_IMSK);		netif_rx_complete(dev);	}	return work_done >= to_do;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/d11c13e752c4e34777d33579ee0378e0178ef52d/sky2.c/clean/drivers/net/sky2.c