patch to acenic driver for Farallon PN9100-T Gigabit Ethernet (copper)
I recently got some Farallon Netline PN9100-T cards. They appear to be the copper equivalent of the fibre PN9000-SX, which Linux supports, and use the same Alteon chipset. These cards were quite pricey when new, but are now obsolete and widely available inexpensively at clearance sales. Note that Farallon is now part of Proxim. Their web page for this card is:
http://www.proxim.com/products/all/netlinecard/pn9100t/index.html
The acenic driver didn't claim the card because it uses the Alteon vendor ID with the device ID 0x00fa. After adding those IDs to the table and switch statement, I was pleased to find that the card works. (At 100 Mbps, I don't yet have a gigabit switch so I can't test that.)
Below find a trivial patch against the 2.4.18 kernel to add support for this card. Since it only adds new vendor/device ID support, this patch should work (with only minor alterations if any) on other kernel versions.
Eric Smith
drivers/net/acenic.c renamed from drivers/net/acenic.c.orig +16 -0
@@ -114,6 +114,10 @@#ifndef PCI_DEVICE_ID_FARALLON_PN9000SX #define PCI_DEVICE_ID_FARALLON_PN9000SX 0x1a#endif +#ifndef PCI_DEVICE_ID_FARALLON_PN9100T +#define PCI_DEVICE_ID_FARALLON_PN9100T 0xfa +#endif +#ifndef PCI_VENDOR_ID_SGI #define PCI_VENDOR_ID_SGI 0x10a9#endif
@@ -138,6 +142,9 @@*/ {PCI_VENDOR_ID_DEC ,PCI_DEVICE_ID_FARALLON_PN9000SX , PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_NETWORK_ETHERNET << 8, 0xffff00, }, + { PCI_VENDOR_ID_ALTEON, PCI_DEVICE_ID_FARALLON_PN9100T, + PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_NETWORK_ETHERNET << 8, 0xffff00, }, + { PCI_VENDOR_ID_SGI, PCI_DEVICE_ID_SGI_ACENIC, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_NETWORK_ETHERNET << 8, 0xffff00, }, { }
@@ -603,6 +610,8 @@*/ !((pdev->vendor ==PCI_VENDOR_ID_DEC ) && (pdev->device ==PCI_DEVICE_ID_FARALLON_PN9000SX )) && + !((pdev->vendor ==PCI_VENDOR_ID_ALTEON ) && + (pdev->device ==PCI_DEVICE_ID_FARALLON_PN9100T )) && !((pdev->vendor ==PCI_VENDOR_ID_SGI ) && (pdev->device == PCI_DEVICE_ID_SGI_ACENIC))) continue;
@@ -701,6 +710,13 @@switch (pdev->vendor) {case PCI_VENDOR_ID_ALTEON : +if (pdev->device ==PCI_DEVICE_ID_FARALLON_PN9100T ) { +strncpy (ap->name,"Farallon PN9100-T " +"Gigabit Ethernet" ,sizeof (ap->name)); +printk (KERN_INFO "%s: Farallon PN9100-T " , + dev->name); +break ; + }strncpy (ap->name,"AceNIC Gigabit Ethernet" ,sizeof (ap->name));printk (KERN_INFO "%s: Alteon AceNIC " , dev->name);