Okay I got the card in this morning and it's working fine. For the record I'm using a Compaq NC7770 PCI-X Gigabit Server Adapter.
The following command provides the PCI IDs we need to look at (14e4:1645, 14e4:1648 and 14e4:16a8 being the supported tigon3 card families):
Code: Select all
[Koyori:cpu/sysgen/IP30boot] neko 7% od -x if_tg.o | grep 14e4
...
0223060 14e4 1645 10a9 8010 0001 0100 0000 0000
0223100 14e4 1645 10a9 8011 0001 0100 0000 0000
0223120 14e4 1645 10a9 8012 0100 0000 0000 0000
0223140 14e4 1648 10a9 8013 0001 0000 0000 0000
0223160 14e4 16a8 10a9 8014 0100 0000 0000 0000
...
Next, using the information from this page:
http://pciids.sourceforge.net/iii/?i=14e41645The subsystems for my card are either 0e11:007c or 0e11:009a. I decided to start at the top and try 007c first which turned out to be the correct choice.
The new subsystem should match the SGI equivalent. Since the NC7770 is a copper device we need to replace the reference to the equivalent SGI copper PCI card (subsystem 10a9:8011).
It should now look like this:
Code: Select all
[Koyori:cpu/sysgen/IP30boot] neko 4% od -x if_tg.o | grep 14e4
...
0223060 14e4 1645 10a9 8010 0001 0100 0000 0000
0223100 14e4 1645 0e11 007c 0001 0100 0000 0000
0223120 14e4 1645 10a9 8012 0100 0000 0000 0000
0223140 14e4 1648 10a9 8013 0001 0000 0000 0000
0223160 14e4 16a8 10a9 8014 0100 0000 0000 0000
After completing the edit I ran a 'autoconfig -vf' to build the new kernel.
After a reboot:
Code: Select all
[Koyori:cpu/sysgen/IP30boot] neko 5# hinv
2 300 MHZ IP30 Processors
CPU: MIPS R12000 Processor Chip Revision: 2.4
FPU: MIPS R12010 Floating Point Chip Revision: 0.0
Main memory size: 2048 Mbytes
Xbow ASIC: Revision 1.4
Instruction cache size: 32 Kbytes
Data cache size: 32 Kbytes
Secondary unified instruction/data cache size: 1 Mbyte
Integral SCSI controller 0: Version QL1040B (rev. 2), single ended
Disk drive: unit 1 on SCSI controller 0
Disk drive: unit 2 on SCSI controller 0
Integral SCSI controller 1: Version QL1040B (rev. 2), single ended
Integral SCSI controller 2: Version QL1080, low voltage differential
Integral SCSI controller 3: Version QL1080, low voltage differential
IOC3/IOC4 serial port: tty1
IOC3/IOC4 serial port: tty2
IOC3 parallel port: plp1
Graphics board: V8
Integral Fast Ethernet: ef0, version 1, pci 2
Gigabit Ethernet: tg1, PCI slot 1
Iris Audio Processor: version RAD revision 12.0, number 1
tgcmd works though it's a bit confused by the subsystem change (can't grab the board vendor and media type which isn't important). Note that it still knows it's working with the 5701 chip which is what we want:
Code: Select all
[Koyori:cpu/sysgen/IP30boot] neko 6# tgcmd inventory
Chip Chip Sybsys Subsys Board
I/F Vendor Device Vendor Device Rev
=== ====== ====== ====== ====== ======
tg1 0x14e4 0x1645 0x0e11 0x007c 0x0000 (UNKNOWN VENDOR) 5701 (UNKNOWN MEDIA)
[Koyori:cpu/sysgen/IP30boot] neko 12# tgcmd configs tg1
accept_bcast 1
autoneg ON
batch_receive OFF
coal_frames_rx 0
coal_frames_tx 0
coal_mode ADAPTIVE
coal_usecs_rx 0
coal_usecs_tx 0
data_rrbs 4
fill_thresh 10
flow_ctrl ON
hw_cksum_rx 1
hw_cksum_tx 1
intr_cpu -1
link_pref AUTO
mac_addr 0x0
mac_mask 0x0
mbuf_chain_len 8
sendQ_size 2048
l2ipfrag ON
l2tcpseg ON
[Koyori:cpu/sysgen/IP30boot] neko 13# tgcmd get_cpu tg1
tg1 interrupts are running on CPU 1.
[Koyori:cpu/sysgen/IP30boot] neko 14# tgcmd get_stats tg1
Driver Statistics:
1 Max Pkts seen on I/F Send Queue
2090 Tx pkts with H/W generated checksum
1275 Tx pkts with S/W generated checksum
3365 Tx Ring producer index updated
2 Max Bfrs on Send Ring
8298 Interrupts
11 Max Bfrs added to RxStd Ring
4 Nested interrupts
2196 Rx pkts with H/W generated checksum
2811 Rx pkts with S/W generated checksum
8302 Status Block updates detected
3365 Send lock obtained
NIC Statistics:
380414 ifHCInOctets
10465 <0x408>
3640 ifHCInUcastPkts
1364 ifHCInBroadcastPkts
1092 etherStatsPkts64Octets
3593 etherStatsPkts65to127Octets
309 etherStatsPkts128to255Octets
9 etherStatsPkts256to511Octets
1 etherStatsPkts512to1023Octets
892255 ifHCOutOctets
2635 ifHCOutUcastPkts
728 ifHCOutBroadcastPkts
5004 COSIfHCInPkts[1]
3363 COSIfHCOutPkts[1]
3375 nicRingSetSendProdIndex
8312 nicRingStatusUpdate
8311 nicInterrupts
1 nicAvoidedInterrupts
Network up and running:
Code: Select all
Oct 7 12:49:38 5A:Koyori unix: NOTICE: tg1: Link up: 1000 Mbps, FULL duplex, flow_ctrl is ON
Code: Select all
[Koyori:cpu/sysgen/IP30boot] neko 7# ifconfig -v tg1
tg1: flags=8f15c43<UP,BROADCAST,RUNNING,FILTMULTI,MULTICAST,CKSUM,DRVRLOCK,LINK0,L2IPFRAG,L2TCPSEG,IPALIAS,HIGHBW,IPV6>
inet 64.81.247.23 netmask 0xffffff00 broadcast 64.81.247.255
recvspace 262144 sendspace 262144
speed 1000.00 Mbit/s full-duplex
And that's all there is to it
As far as running one alongside a DM10 - well, it doesn't crash but the network doesn't seem to work despite having a healthy link. All commands work without error but I can't ping anything. Removing the DM10 clears it back up - those things are just beastly in an Octane. I think the only real solution would be to offload the DM10 to a shoehorn which would hopefully steal it's power from elsewhere.