Re: [PATCH] net: 3com: 3c59x: remove set but not used variable 'mii_reg1'

From: Michal Kubecek
Date: Fri Jan 03 2020 - 13:17:06 EST

On Fri, Jan 03, 2020 at 06:53:18PM +0100, Andrew Lunn wrote:
> On Fri, Jan 03, 2020 at 06:46:23AM -0800, Matthew Wilcox wrote:
> > On Fri, Jan 03, 2020 at 08:19:07PM +0800, yu kuai wrote:
> > > Fixes gcc '-Wunused-but-set-variable' warning:
> > >
> > > drivers/net/ethernet/3com/3c59x.c: In function âvortex_upâ:
> > > drivers/net/ethernet/3com/3c59x.c:1551:9: warning: variable
> > > âmii_reg1â set but not used [-Wunused-but-set-variable]
> > >
> > > It is never used, and so can be removed.
> > ...
> > > if (dev->if_port == XCVR_MII || dev->if_port == XCVR_NWAY) {
> > > - mii_reg1 = mdio_read(dev, vp->phys[0], MII_BMSR);
> > > mii_reg5 = mdio_read(dev, vp->phys[0], MII_LPA);
> >
> > I know nothing about the MII interface, but in general this is not
> > a safe thing to do.
> Hi Matthew
> I fully agree about the general case. However, reading the MII_BMSR
> should not have any side affects. It would be an odd Ethernet PHY if
> it did.
> But I am curious why this read is here. There is a slim change the
> MDIO bus is broken, and this is a workaround. So it would be good if
> somebody dug into the history and found out when this read was added
> and if there are any comments about why it is there. Or if the usage
> of mii_reg1 as been removed at some point, and the read was not
> cleaned up.

I tried to dig a bit and found that originally (before git), there was

if (vortex_debug > 1)
printk(KERN_INFO "%s: MII #%d status %4.4x, link partner capability %4.4x,"
" info1 %04x, setting %s-duplex.\n",
dev->name, vp->phys[0],
mii_reg1, mii_reg5,
vp->info1, ((vp->info1 & 0x8000) || vp->full_duplex) ? "full" : "half");

The whole mii code in vortex_up() was removed by commit 125d5ce8a4e9
("[PATCH] 3c59x: use mii_check_media") and later the mdio_read() calls
were restored by commit 09ce3512dcad ("[PATCH] 3c59x: fix networking for
10base2 NICs") with "Also brought back some mii stuff to be sure that it
does not break something else", but without the debugging printk().

It's not really a proof that reading MII_BMSR was only needed for the
log message but there is a good chance it was. I'm afraid we won't be
able to find anyone who would be able to tell for sure after all those