aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/pcnet32.c
diff options
context:
space:
mode:
authorDon Fry <brazilnut@us.ibm.com>2005-11-01 15:50:57 -0500
committerJeff Garzik <jgarzik@pobox.com>2005-11-05 14:40:55 -0500
commit2964bbd7048ac0c1405cc119604e29987dd165df (patch)
tree21e64afeca8f211eb6e817d722274f3196fd4eb1 /drivers/net/pcnet32.c
parenta88c844c1748ba494d38b1053829ec046c74ebfd (diff)
[PATCH] pcnet32: AT2700/2701 and Bugzilla 2699 & 4551
This patch is a better fix for Allied Telesyn 2700/2701 FX boards than the change made in early January this year. It allows the user to select the speed/duplex via module_param, but if no selection is made, forces the speed to 100 FD. It fixes both Bugzilla bugs 2669 and 4551. Tested ia32 and ppc64 by myself, and by the originator of bug 2669. Signed-off-by: Don Fry <brazilnut@us.ibm.com> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
Diffstat (limited to 'drivers/net/pcnet32.c')
-rw-r--r--drivers/net/pcnet32.c23
1 files changed, 16 insertions, 7 deletions
diff --git a/drivers/net/pcnet32.c b/drivers/net/pcnet32.c
index 31e6dd049859..549a07385884 100644
--- a/drivers/net/pcnet32.c
+++ b/drivers/net/pcnet32.c
@@ -22,8 +22,8 @@
22 *************************************************************************/ 22 *************************************************************************/
23 23
24#define DRV_NAME "pcnet32" 24#define DRV_NAME "pcnet32"
25#define DRV_VERSION "1.31b" 25#define DRV_VERSION "1.31c"
26#define DRV_RELDATE "06.Oct.2005" 26#define DRV_RELDATE "01.Nov.2005"
27#define PFX DRV_NAME ": " 27#define PFX DRV_NAME ": "
28 28
29static const char *version = 29static const char *version =
@@ -262,6 +262,9 @@ static int homepna[MAX_UNITS];
262 * to allow loopback test to work unchanged. 262 * to allow loopback test to work unchanged.
263 * v1.31b 06 Oct 2005 Don Fry changed alloc_ring to show name of device 263 * v1.31b 06 Oct 2005 Don Fry changed alloc_ring to show name of device
264 * if allocation fails 264 * if allocation fails
265 * v1.31c 01 Nov 2005 Don Fry Allied Telesyn 2700/2701 FX are 100Mbit only.
266 * Force 100Mbit FD if Auto (ASEL) is selected.
267 * See Bugzilla 2669 and 4551.
265 */ 268 */
266 269
267 270
@@ -1612,12 +1615,18 @@ pcnet32_open(struct net_device *dev)
1612 val |= 0x10; 1615 val |= 0x10;
1613 lp->a.write_csr (ioaddr, 124, val); 1616 lp->a.write_csr (ioaddr, 124, val);
1614 1617
1615 /* Allied Telesyn AT 2700/2701 FX looses the link, so skip that */ 1618 /* Allied Telesyn AT 2700/2701 FX are 100Mbit only and do not negotiate */
1616 if (lp->pci_dev->subsystem_vendor == PCI_VENDOR_ID_AT && 1619 if (lp->pci_dev->subsystem_vendor == PCI_VENDOR_ID_AT &&
1617 (lp->pci_dev->subsystem_device == PCI_SUBDEVICE_ID_AT_2700FX || 1620 (lp->pci_dev->subsystem_device == PCI_SUBDEVICE_ID_AT_2700FX ||
1618 lp->pci_dev->subsystem_device == PCI_SUBDEVICE_ID_AT_2701FX)) { 1621 lp->pci_dev->subsystem_device == PCI_SUBDEVICE_ID_AT_2701FX)) {
1619 printk(KERN_DEBUG "%s: Skipping PHY selection.\n", dev->name); 1622 if (lp->options & PCNET32_PORT_ASEL) {
1620 } else { 1623 lp->options = PCNET32_PORT_FD | PCNET32_PORT_100;
1624 if (netif_msg_link(lp))
1625 printk(KERN_DEBUG "%s: Setting 100Mb-Full Duplex.\n",
1626 dev->name);
1627 }
1628 }
1629 {
1621 /* 1630 /*
1622 * 24 Jun 2004 according AMD, in order to change the PHY, 1631 * 24 Jun 2004 according AMD, in order to change the PHY,
1623 * DANAS (or DISPM for 79C976) must be set; then select the speed, 1632 * DANAS (or DISPM for 79C976) must be set; then select the speed,