Skip to contentSkip to conversation

3c59x: reload EEPROM values at rmmod for needy cards

PATCH In review John W. Linville 4 participants 5 messages Nov 17, 2004 – Nov 28, 2004

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 3c59x: reload EEPROM values at rmmod for needy cards

Enable reload of EEPROM values in reset at rmmod for cards that need it, similar to old EEPROM_NORESET flag but in reverse.

---
3c905 cards need an additional bit unmasked in the reset at rmmod or else they don't get reinitialized properly when the driver is reloaded.

This is a repost -- the previous patch appears to have been lost in the shuffle. This is the combination of the two patches posted previously regarding EEPROM_NORESET.

 drivers/net/3c59x.c |    9 +++++----
 1 files changed, 5 insertions(+), 4 deletions(-)
drivers/net/3c59x.c renamed from drivers/net/3c59x.c.orig +5 -4
@@ -417,7 +417,7 @@ enum {	IS_VORTEX=1, IS_BOOMERANG=2, IS_C
 	HAS_PWR_CTRL=0x20, HAS_MII=0x40, HAS_NWAY=0x80, HAS_CB_FNS=0x100,
 	INVERT_MII_PWR=0x200, INVERT_LED_PWR=0x400, MAX_COLLISION_RESET=0x800,
 	EEPROM_OFFSET=0x1000, HAS_HWCKSM=0x2000, WNO_XCVR_PWR=0x4000,
-	EXTRA_PREAMBLE=0x8000, };
+	EXTRA_PREAMBLE=0x8000, EEPROM_RESET=0x10000, };
 
 enum vortex_chips {
 	CH_3C590 = 0,
@@ -505,9 +505,9 @@ static struct vortex_chip_info {
 	{"3c900B-FL Cyclone 10base-FL",
 	 PCI_USES_IO|PCI_USES_MASTER, IS_CYCLONE|HAS_HWCKSM, 128, },
 	{"3c905 Boomerang 100baseTx",
-	 PCI_USES_IO|PCI_USES_MASTER, IS_BOOMERANG|HAS_MII, 64, },
+	 PCI_USES_IO|PCI_USES_MASTER, IS_BOOMERANG|HAS_MII|EEPROM_RESET, 64, },
 	{"3c905 Boomerang 100baseT4",
-	 PCI_USES_IO|PCI_USES_MASTER, IS_BOOMERANG|HAS_MII, 64, },
+	 PCI_USES_IO|PCI_USES_MASTER, IS_BOOMERANG|HAS_MII|EEPROM_RESET, 64, },
 	{"3c905B Cyclone 100baseTx",
 	 PCI_USES_IO|PCI_USES_MASTER, IS_CYCLONE|HAS_NWAY|HAS_HWCKSM|EXTRA_PREAMBLE, 128, },
 
@@ -3169,7 +3169,8 @@ static void __devexit vortex_remove_one 
 			pci_restore_state(VORTEX_PCI(vp));
 	}
 	/* Should really use issue_and_wait() here */
-	outw(TotalReset|0x14, dev->base_addr + EL3_CMD);
+	outw(TotalReset | ((vp->drv_flags & EEPROM_RESET) ? 0x04 : 0x14),
+	     dev->base_addr + EL3_CMD);
 
 	pci_free_consistent(pdev,
 						sizeof(struct boom_rx_desc) * RX_RING_SIZE
#1 lore raw
Quoted 3 lines · John W. Linville

3c905 cards need an additional bit unmasked in the reset at rmmod or else they don't get reinitialized properly when the driver is reloaded.

This has been in -mm kernels since you first sent it out. I'm intending to hold off until post-2.6.10 so we get a full kernel cycle for any problems to get shaken out.

#2 lore raw
Quoted 8 lines · Andrew Morton
Quoted 3 lines · John W. Linville

3c905 cards need an additional bit unmasked in the reset at rmmod or else they don't get reinitialized properly when the driver is reloaded.

This has been in -mm kernels since you first sent it out. I'm intending to hold off until post-2.6.10 so we get a full kernel cycle for any problems to get shaken out.

Cool...someone was asking for it in netdev-2.[46], and Jeff didn't have it. That is what provoked the resend.

Thanks for the update!

John

Signature · 2 lines
John W. Linville
[email protected]
#3 lore raw
Quoted 7 lines · John W. Linville
Quoted 3 lines · Andrew Morton

This has been in -mm kernels since you first sent it out. I'm intending to hold off until post-2.6.10 so we get a full kernel cycle for any problems to get shaken out.

Cool...someone was asking for it in netdev-2.[46], and Jeff didn't have it. That is what provoked the resend.

Merged into -ac since you essentially can't use 3c59x/3c90x with DHCP on some systems or get it back from suspend with several distributions. This IMHO should go into 2.6.10 because its a showstopper for many users.

Alan

#4 lore raw
Quoted 8 lines · Alan Cox
Quoted 6 lines · John W. Linville
Quoted 3 lines · Andrew Morton

This has been in -mm kernels since you first sent it out. I'm intending to hold off until post-2.6.10 so we get a full kernel cycle for any problems to get shaken out.

Quoted 8 lines
Quoted 2 lines

Cool...someone was asking for it in netdev-2.[46], and Jeff didn't have it. That is what provoked the resend.

Merged into -ac since you essentially can't use 3c59x/3c90x with DHCP on some systems or get it back from suspend with several distributions. This IMHO should go into 2.6.10 because its a showstopper for many users.

Poke Andrew to push it upstream, he's the 3c59x maintainer.

Jeff