Cheap solution for (dual-)gigabit Ethernet on PCI-X equipped machines

LarBob

Administrator
Feb 8, 2019
51
27
18
This was previously documented on Nekochan by canavan (and alternatively on my site), but I think it deserves posting here too as I haven't really seen it documented anywhere else.

The official SGI dual-gigabit Ethernet card was based upon the BCM5704 card. As such, other derivatives can be made to work as well. For example, I have two IBM NetXtreme 1000 Ts (1 in my Fuel and 1 in my O300) working happily under IRIX and reporting as SGI 5704 cards. You can get NetXtreme 1000 Ts for less than $10 easily off of eBay, so this seems a much better solution than trying to find an SGI 5704 card to me.

To do so, plug the card in to a Linux box with ethtool installed and run these commands on each interface (fair warning: I've only tried this on the IBM cards):

Code:
ethtool -E (interface) magic 0x669955aa offset 0xa4 value 0x80
ethtool -E (interface) magic 0x669955aa offset 0xa5 value 0x13
ethtool -E (interface) magic 0x669955aa offset 0xa6 value 0x10
ethtool -E (interface) magic 0x669955aa offset 0xa7 value 0xa9
You can then plop it into a machine running IRIX and the interfaces should show up just fine. For reference, tg1 is the interface furthest from the LEDs on the card.

Code:
        Chip   Chip   Sybsys Subsys Board
I/F     Vendor Device Vendor Device Rev
===     ====== ====== ====== ====== ======
tg1     0x14e4 0x1648 0x10a9 0x8013 0x0502 SGI 5704 Copper
tg2     0x14e4 0x1648 0x10a9 0x8013 0x0502 SGI 5704 Copper
Output from /usr/etc/tgcmd inventory on my Fuel

Code:
Gigabit Ethernet: tg1, module 001c01, PCI bus 2 slot 1 port 0
Gigabit Ethernet: tg2, module 001c01, PCI bus 2 slot 1 port 1
Output on the two interfaces from my Fuel's hinv

To set (for example) tg1 as the primary interface, edit line 62 (at least on 6.5.30) of /etc/config/netif.options from : if1name= to if1name=tg1. You can manually override the address of the interface by editing the if1addr line as well, though this shouldn't matter if the machine's IP address is set up properly elsewhere.
 
Last edited:
  • Like
Reactions: Elf

Elf

Storybook / Retired, ex-staff
Feb 4, 2019
792
252
63
Mountain West (US)
Great find, and interesting process! It would sort of imply that the IRIX driver is looking for the right vendor ID before it recognizes it as the "official" accessory card. Not too surprising I guess but it's great there is such a quick workaround and that it's not baked into ROM somewhere!
 
  • Like
Reactions: LarBob

massiverobot

irix detailer
Feb 8, 2019
121
108
43
Philly
twitter.com
Once you change the above file, a network stop and start is all you need to reconfig to the gig...

bash-5.0# ifconfig -a
ef0: flags=8415c43<UP,BROADCAST,RUNNING,FILTMULTI,MULTICAST,CKSUM,DRVRLOCK,LINK0,IPALIAS,IPV6>
inet 192.168.251.42 netmask 0xffffff00 broadcast 192.168.251.255
tg1: flags=8c04802<BROADCAST,MULTICAST,DRVRLOCK,IPALIAS,HIGHBW,IPV6>
lo0: flags=8001849<UP,LOOPBACK,RUNNING,MULTICAST,CKSUM,IPV6>
inet 127.0.0.1 netmask 0xff000000

bash-5.0# /etc/init.d/network stop && /etc/init.d/network start

/nfs/files/: Unmounted
Configuring tg1 as fuel
add net default: gateway 192.168.251.1
Network daemons: portmap.
Name services: nsd.
Internet daemons: inetdNetwork time: ntpd ntp.


bash-5.0# ifconfig -a
tg1: flags=8f15c43<UP,BROADCAST,RUNNING,FILTMULTI,MULTICAST,CKSUM,DRVRLOCK,LINK0,L2IPFRAG,L2TCPSEG,IPALIAS,HIGHBW,IPV6>
inet 192.168.251.42 netmask 0xffffff00 broadcast 192.168.251.255
ef0: flags=8415c02<BROADCAST,FILTMULTI,MULTICAST,CKSUM,DRVRLOCK,LINK0,IPALIAS,IPV6>
inet 192.168.251.42 netmask 0xffffff00 broadcast 192.168.251.255
lo0: flags=8001849<UP,LOOPBACK,RUNNING,MULTICAST,CKSUM,IPV6>
inet 127.0.0.1 netmask 0xff000000


Now I have gig....
 
  • Like
Reactions: Elf and LarBob

About us

  • Silicon Graphics User Group (SGUG) is a community for users, developers, and admirers of Silicon Graphics (SGI) products. We aim to be a friendly hobbyist community for discussing all aspects of SGIs, including use, software development, the IRIX Operating System, and troubleshooting, as well as facilitating hardware exchange.

User Menu