((new_cfg ^ dev->CFG_cache) & CFG_MODE_1000)) { 
((new_cfg ^ dev->CFG_cache) != 0)) { 
static void fastcall phy_intr(struct net_device *ndev){	struct ns83820 *dev = PRIV(ndev);	static char *speeds[] = { "10", "100", "1000", "1000(?)", "1000F" };	u32 cfg, new_cfg;	u32 tbisr, tanar, tanlpar;	int speed, fullduplex, newlinkstate;	cfg = readl(dev->base + CFG) ^ SPDSTS_POLARITY;	if (dev->CFG_cache & CFG_TBI_EN) {		/* we have an optical transceiver */		tbisr = readl(dev->base + TBISR);		tanar = readl(dev->base + TANAR);		tanlpar = readl(dev->base + TANLPAR);		dprintk("phy_intr: tbisr=%08x, tanar=%08x, tanlpar=%08x\n",			tbisr, tanar, tanlpar);		if ( (fullduplex = (tanlpar & TANAR_FULL_DUP)		      && (tanar & TANAR_FULL_DUP)) ) {			/* both of us are full duplex */			writel(readl(dev->base + TXCFG)			       | TXCFG_CSI | TXCFG_HBI | TXCFG_ATP,			       dev->base + TXCFG);			writel(readl(dev->base + RXCFG) | RXCFG_RX_FD,			       dev->base + RXCFG);			/* Light up full duplex LED */			writel(readl(dev->base + GPIOR) | GPIOR_GP1_OUT,			       dev->base + GPIOR);		} else if(((tanlpar & TANAR_HALF_DUP)			   && (tanar & TANAR_HALF_DUP))			|| ((tanlpar & TANAR_FULL_DUP)			    && (tanar & TANAR_HALF_DUP))			|| ((tanlpar & TANAR_HALF_DUP)			    && (tanar & TANAR_FULL_DUP))) {			/* one or both of us are half duplex */			writel((readl(dev->base + TXCFG)				& ~(TXCFG_CSI | TXCFG_HBI)) | TXCFG_ATP,			       dev->base + TXCFG);			writel(readl(dev->base + RXCFG) & ~RXCFG_RX_FD,			       dev->base + RXCFG);			/* Turn off full duplex LED */			writel(readl(dev->base + GPIOR) & ~GPIOR_GP1_OUT,			       dev->base + GPIOR);		}		speed = 4; /* 1000F */	} else {		/* we have a copper transceiver */		new_cfg = dev->CFG_cache & ~(CFG_SB | CFG_MODE_1000 | CFG_SPDSTS);		if (cfg & CFG_SPDSTS1)			new_cfg |= CFG_MODE_1000;		else			new_cfg &= ~CFG_MODE_1000;		speed = ((cfg / CFG_SPDSTS0) & 3);		fullduplex = (cfg & CFG_DUPSTS);		if (fullduplex)			new_cfg |= CFG_SB;		if ((cfg & CFG_LNKSTS) &&		    ((new_cfg ^ dev->CFG_cache) & CFG_MODE_1000)) {			writel(new_cfg, dev->base + CFG);			dev->CFG_cache = new_cfg;		}		dev->CFG_cache &= ~CFG_SPDSTS;		dev->CFG_cache |= cfg & CFG_SPDSTS;	}	newlinkstate = (cfg & CFG_LNKSTS) ? LINK_UP : LINK_DOWN;	if (newlinkstate & LINK_UP	    && dev->linkstate != newlinkstate) {		netif_start_queue(ndev);		netif_wake_queue(ndev);		printk(KERN_INFO "%s: link now %s mbps, %s duplex and up.\n",			ndev->name,			speeds[speed],			fullduplex ? "full" : "half");	} else if (newlinkstate & LINK_DOWN		   && dev->linkstate != newlinkstate) {		netif_stop_queue(ndev);		printk(KERN_INFO "%s: link now down.\n", ndev->name);	}	dev->linkstate = newlinkstate;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/c16ef1ceedff27c1b452724ca7f89b729651098f/ns83820.c/buggy/drivers/net/ns83820.c