Subject: Re: [PATCH 2/2] r8169: checks against wrong mac addresse init

From: Martin Capitanio <[email-masked]>
Date: Sat, 18 Oct 2008 01:52:28 +0200

On Fri, 2008-10-17 at 22:01 +0200, Francois Romieu wrote:
> Martin Capitanio <[email-masked]> :
> [...]
> > Please take a look at the realtek r8101_n aka RealTek RTL8101E,
> > RTL8102E(L) code. Only CFG_METHOD_1, CFG_METHOD_2
> > and #(ioaddr, 0x00) == 0x8128 are here allowed to EEPROM access.
> 
> So Realtek's 810x driver eeprom code targets the 8101Eb and the
> 8101Ec only. It does not include Ivan's 8102el.

So it seems ;)
RTL_W8(Cfg9346, Cfg9346_AMMO);
        mdelay(15);

and here they arm/unarm vpd:

static int
rtl8169_eeprom_read(struct net_device *dev, u32 *eeprom_cont, int eeprom_size)
{
	struct rtl8169_private *tp = netdev_priv(dev);
	void __iomem *ioaddr = tp->mmio_addr;
	int i;
	unsigned int read_addr;

	RTL_W8(Cfg9346, Cfg9346_Unlock);
	RTL_W8(Config1, RTL_R8(Config1) | VPDEnable);
	RTL_W8(Cfg9346, Cfg9346_Lock);

	for (i = 0, read_addr = 0; i < eeprom_size / 4; i++)
		*(eeprom_cont + i) = rtl8169_vpd_read(dev, read_addr + i * 4);

	RTL_W8(Cfg9346, Cfg9346_Unlock);
	RTL_W8(Config1, RTL_R8(Config1) & ~VPDEnable);
	RTL_W8(Cfg9346, Cfg9346_Lock);

	return 0;
}