dma_unmap_single(fep->dev, skb->data, 
dma_unmap_single(fep->dev, CBDR_BUFADDR(bdp), 
static int fs_enet_rx_non_napi(struct net_device *dev){	struct fs_enet_private *fep = netdev_priv(dev);	const struct fs_platform_info *fpi = fep->fpi;	cbd_t *bdp;	struct sk_buff *skb, *skbn, *skbt;	int received = 0;	u16 pkt_len, sc;	int curidx;	/*	 * First, grab all of the stats for the incoming packet.	 * These get messed up if we get called due to a busy condition.	 */	bdp = fep->cur_rx;	while (((sc = CBDR_SC(bdp)) & BD_ENET_RX_EMPTY) == 0) {		curidx = bdp - fep->rx_bd_base;		/*		 * Since we have allocated space to hold a complete frame,		 * the last indicator should be set.		 */		if ((sc & BD_ENET_RX_LAST) == 0)			printk(KERN_WARNING DRV_MODULE_NAME			       ": %s rcv is not +last\n",			       dev->name);		/*		 * Check for errors. 		 */		if (sc & (BD_ENET_RX_LG | BD_ENET_RX_SH | BD_ENET_RX_CL |			  BD_ENET_RX_NO | BD_ENET_RX_CR | BD_ENET_RX_OV)) {			fep->stats.rx_errors++;			/* Frame too long or too short. */			if (sc & (BD_ENET_RX_LG | BD_ENET_RX_SH))				fep->stats.rx_length_errors++;			/* Frame alignment */			if (sc & (BD_ENET_RX_NO | BD_ENET_RX_CL))				fep->stats.rx_frame_errors++;			/* CRC Error */			if (sc & BD_ENET_RX_CR)				fep->stats.rx_crc_errors++;			/* FIFO overrun */			if (sc & BD_ENET_RX_OV)				fep->stats.rx_crc_errors++;			skb = fep->rx_skbuff[curidx];			dma_unmap_single(fep->dev, skb->data,				L1_CACHE_ALIGN(PKT_MAXBUF_SIZE),				DMA_FROM_DEVICE);			skbn = skb;		} else {			skb = fep->rx_skbuff[curidx];			dma_unmap_single(fep->dev, skb->data,				L1_CACHE_ALIGN(PKT_MAXBUF_SIZE),				DMA_FROM_DEVICE);			/*			 * Process the incoming frame.			 */			fep->stats.rx_packets++;			pkt_len = CBDR_DATLEN(bdp) - 4;	/* remove CRC */			fep->stats.rx_bytes += pkt_len + 4;			if (pkt_len <= fpi->rx_copybreak) {				/* +2 to make IP header L1 cache aligned */				skbn = dev_alloc_skb(pkt_len + 2);				if (skbn != NULL) {					skb_reserve(skbn, 2);	/* align IP header */					memcpy(skbn->data, skb->data, pkt_len);					/* swap */					skbt = skb;					skb = skbn;					skbn = skbt;				}			} else				skbn = dev_alloc_skb(ENET_RX_FRSIZE);			if (skbn != NULL) {				skb->dev = dev;				skb_put(skb, pkt_len);	/* Make room */				skb->protocol = eth_type_trans(skb, dev);				received++;				netif_rx(skb);			} else {				printk(KERN_WARNING DRV_MODULE_NAME				       ": %s Memory squeeze, dropping packet.\n",				       dev->name);				fep->stats.rx_dropped++;				skbn = skb;			}		}		fep->rx_skbuff[curidx] = skbn;		CBDW_BUFADDR(bdp, dma_map_single(fep->dev, skbn->data,			     L1_CACHE_ALIGN(PKT_MAXBUF_SIZE),			     DMA_FROM_DEVICE));		CBDW_DATLEN(bdp, 0);		CBDW_SC(bdp, (sc & ~BD_ENET_RX_STATS) | BD_ENET_RX_EMPTY);		/*		 * Update BD pointer to next entry. 		 */		if ((sc & BD_ENET_RX_WRAP) == 0)			bdp++;		else			bdp = fep->rx_bd_base;		(*fep->ops->rx_bd_done)(dev);	}	fep->cur_rx = bdp;	return 0;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/34e30d612f54e959a9953a62143f9f8402207b35/fs_enet-main.c/clean/drivers/net/fs_enet/fs_enet-main.c