ETHERNET(7) ETHERNET(7) NAME ethernet - Ethernet controllers DESCRIPTION IRIX supports local-area networking with Ethernet. The Ethernet protocol is supported with a hardware controller and a kernel driver. Though the controllers are different among the various hardware platforms, their drivers provide the same programming interface to networking routines. Most ethernet controllers are named using the following convention: the prefix is `e' and the suffix ('N') is the controller unit number. However, not all drivers follow this, as shown below: Name Type Model ec0 on-board Indigo, Indigo2, Indy, CHALLENGE S/M (10baseT) ec0 on-board O2 (10/100baseTX) ec1 PCI O2 (10/100baseTX) et0 on-board POWER Series, Challenge/Onyx systems (10baseT) etN HIO POWER Series, Challenge/Onyx systems (10baseT) ef0 on-board Silicon Graphics OCTANE/OCTANE2, SGI Origin Server Family, Silicon Graphics Fuel, Silicon Graphics Onyx2 Family, SGI Onyx 3000 Series, SGI Onyx 300 Fast Ethernet (10/100baseTX) efN PCI Silicon Graphics OCTANE/OCTANE2, SGI Origin 200, SGI Origin 2000, SGI Onyx2 Fast Ethernet (10/100baseTX) efN XIO Silicon Graphics OCTANE/OCTANE2, SGI Origin 200, SGI Origin 2000, SGI Onyx2, SGI 3000 Series, SGI Onyx 3000 Series Fast Ethernet (10/100baseTX) epN HIO CHALLENGE/Onyx, POWER CHALLENGE/POWER Onyx (10baseT) fxpN VME CHALLENGE/Onyx, POWER CHALLENGE/POWER Onyx (10baseT) gfeN GIO Indy, Indigo, Indigo2, CHALLENGE S (10/100baseTX) vfeN VME CHALLENGE/Onyx, POWER CHALLENGE/POWER Onyx (10/100baseTX) egN PCI Silicon Graphics OCTANE/OCTANE2, SGI Origin 200, SGI Origin 300, SGI 3000 series, SGI Onyx 300, SGI Onyx 3000 Series, Silicon Graphics Fuel, (10/100/1000baseT and 1000baseSX) egN XIO SGI Origin 2000, SGI Onyx2 (10/100/1000baseT and 1000baseSX) tgN PCI SGI Origin 300, SGI 3000 series, SGI Origin 200, SGI Onyx 3000 Series, SGI Onyx 300, Silicon Graphics Fuel, (10/100/1000baseT and 1000baseSX) tgN XIO SGI Origin 2000, SGI Onyx2 (10/100/1000baseT and 1000baseSX) Depending on the model, several Ethernet controllers are supported, allowing the system to act as a gateway among different local networks. The Ethernet boards are initialized during system startup from /etc/init.d/network (see network(1M) for details). IRIX implements the Ethernet encapsulation format. Each packet has a 14-byte header, as defined in the #include file <netinet/if_ether.h>: struct ether_header { u_char ether_dhost[6]; /* destination address */ u_char ether_shost[6]; /* source address */ u_short ether_type; /* packet type */ }; The packet type determines which kernel protocol routine is called to process the packet data. Examples of common packet types are IP, ARP, and DECnet. On systems with 10/100baseTX capability, auto-negotiation is enabled by default; through auto-negotiation, the ethernet transceiver will select the highest performance common connection technology between a local host and a remote host. For the OCTANE and Origin systems, refer to /var/sysgen/master.d/if_ef if the manual selection of ethernet speed and duplex mode is desired. For the O2 on-board ethernet, the PROM variable 'ec0mode' can be used to select the desired speed (legal values are: 10, 100, f100, and h100). For the O2 add-on ethernet, refer to /var/sysgen/master.d/if_ecf if the manual selection of ethernet speed and duplex mode is desired. To disable auto-negotiation and force a specific speed/duplex, you can modify the /var/sysgen/master.d/if_ef file with the following changes. As the following example shows, you must specify xxx as a valid phy type, specify yyy as a valid speed/duplex mode, and remove the #ifdef/#endif lines. In addition, you must set the ethernet unit number to -1 to activate the chipset features on all interfaces (this is the default in this file, as shown in the following example), or set it to a specific interface number that will affect only that interface. The example is as follows: To lock down the ef0 interface on an Origin 2000 system to 100mbit/full- duplex, specify the following: { 0, PHY_DP83840, -1, 0, 0xffff, F100 }, To lock down the ef1 interface on an Octane system to 10mbit/half-duplex, specify the following: { 1, PHY_DP83840, -1, 0, 0xffff, H10 }, You must also remove the #ifdef/#endif lines. */ #define F100 0x2100 /* 100mbps full duplex mode */ #define H100 0x2000 /* 100mbps half duplex mode */ #define F10 0x0100 /* 10mbps full duplex mode */ #define H10 0x0000 /* 10mbps half duplex mode */ struct phyerrata { int unit; __uint32_t type; short rev; unsigned short reg, mask, val; } ef_phyerrata[] = { { -1, PHY_DP83840, -1, 23, 1 << 5, 1 << 5 }, /* bypass link disconnect */ { -1, PHY_ICS1890, -1, 18, 1 << 5, 1 << 5 }, /* link loss inhibit */ #ifdef notdef { -1, xxx, -1, 0, 0xffff, yyy }, #endif { -1, 0, 0, 0, 0, 0}, }; Auto-negotiation for the gigabit Ethernet 1000Base-SX differs from auto- negotiation for IEEE 802.3u 100BaseT. 100BaseT uses the National Semiconductor NWay (TM) Auto-Negotiation standard. Most of the 10/100 Ethernet controller chips include N-Way Auto-Negotiation. There is no auto-negotiation standard for 1000Base-SX; this may require that auto-negotiation be disabled. To disable auto-negotiation, you must use the following commands: ifconfig eg<n> down egconfig -l eg<n> ifconfig eg<n> up If you need to reenable auto-negotiation, you must reboot the system because the auto-negotiation status of a system cannot be checked. The default for auto-negotiation is to be enabled on bootup. If you want auto-negotiation to be disabled by default, you must create the /etc/config/eg<n>.options file and add the -l option (letter l). Whether or not auto-negotiation is enabled or disabled, the speed and mode will always be 1,000 Mbits/second, full duplex. DIAGNOSTICS Various error messages are printed by the kernel when a problem is encountered. The message is preceded by the controller name, for example, et0. Serious errors are flagged with a dagger (|). If they occur repeatedly, contact your product support service for assistance. By default, many non-serious errors will not cause a diagnostic message to be displayed on the console. To enable all driver diag messages, use the command ifconfig xxx debug where xxx is the ethernet network interface name. The following error messages are common to all controllers: packet too small (length = X) packet too large (length = X) The controller received a packet that was smaller than the minimum Ethernet packet size of 60 bytes or larger than the maximum of 1514. This problem is caused by another machine with a bad Ethernet controller or transceiver. stray interrupt early interrupt The controller interrupted the kernel before the device was initialized. This error is innocuous; it occurs after booting a kernel over the network from the PROM monitor. died and restarted The controller failed to respond after a certain amount of time and the driver had to reset it. cannot handle address family This message indicates an error in the kernel protocol handling routines.| The following messages are specific to the ec and et controllers. no carrier: check Ethernet cable Carrier was not detected when attempting to transmit, probably because the Ethernet cable is unplugged from the machine (but possibly due to a broken transceiver, transceiver cable, or 10baseT hub). late collision The controller tried to transmit a packet but received a late collision signal from another machine. Usually indicates a problem in the Ethernet cable layout. transmit buffer error receive buffer error transmit underflow receive packet overflow The controller ran out of memory when trying to transmit or receive a packet.| unknown interrupt The controller interrupted the kernel but the reason for the interrupt is missing.| babbling The kernel tried to transmit a packet larger than the maximum size.| machine has bad Ethernet address: x:x:x:x:x:x The Ethernet address obtained from non-volatile RAM during controller initialization was corrupted.| memory timeout The LANCE Ethernet chip failed to access its local memory.| Counts of Ethernet input and output errors can be displayed with the command netstat -i (see netstat(1M)). Typically, output errors and collisions occur due to mismatched controller and transceiver configurations. Input error statistics include counts of the errors listed above and counts of protocol input queue overflows. Configuring additional ethernet ports on Challenge/Onyx L/XL systems Onyx and Challenge L/XL systems only enable the ethernet on the master IO4 by default. To activate the ethernet interfaces on other IO4 boards, a vector line must be added to /var/sysgen/system/irix.sm. The following vector line configures the ethernet interface on the IO4 in slot 13 as et1: VECTOR: bustype=EPC module=epcether unit=1 slot=13 The first two options (bustype and module) are mandatory and tell lboot that you're configuring an ethernet interface. The "unit" option specifies the ethernet unit number. The unit number must be greater than 0. The "slot" option specifies the slot of the IO4 whose ethernet interface is being configured as et1. After updating the irix.sm file, autoconfig(1m) should be executed to reconfigure the kernel. To make the new interface available, reboot the machine with the new kernel. SEE ALSO ioconfig(1M), netstat(1M), network(1M), socket(2), drain(7P), ip(7P), raw(7P), snoop(7P) NOTE IEEE 802.3 Ethernet encapsulation is not currently supported. Some Ethernet controllers will support IEEE 802.3 and Ethernet v.1/v.2 electrical specifications. Contact your product support service for more information. Page 5