Subject: problem with tlp1 autosense
To: cobalt <port-cobalt@NetBSD.org>
From: Byron Servies <bservies@pacang.com>
List: port-cobalt
Date: 09/30/2004 22:30:20
Hi there!
For some time I have been wondering about performance of my internal
network, which is connected to my qube2's "primary" port, or tlp1. I
work in the former Cobalt division, and was talking to one of the
original engineers and he had me dump ifconfig:
tlp0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
address: 00:10:e0:00:3d:71
media: Ethernet autoselect (100baseTX full-duplex)
status: active
inet 10.8.6.254 netmask 0xffff0000 broadcast 10.8.255.255
tlp1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
address: 00:10:e0:00:3d:8c
media: Ethernet autoselect (10baseT)
status: active
inet 63.193.245.242 netmask 0xffffff00 broadcast 63.193.245.255
Clearly, tlp1 is not negotiating 100base TX full duplex correctly. In
the Linux 2.0.x kernel we modified the tulip driver (cobalttulip_raq.c)
to re-initialize the SROM connected to the 2 interfaces in order to
turn on auto-negotiation; it was apparently programs incorrectly in
hardware. This is, apparently, a common problem with many tulip
implementations. This applies to all the MIPS Cobalt products.
The tlp quirks handlers for cobalt, in if_tlp_pci.c, apparently needs
to be updated to set the information:
/* Known cards that have old-style EEPROMs. */
static struct fixups {
char *name;
unsigned char addr0, addr1, addr2;
u16 newtable[32];
} eeprom_fixups[] = {
// Super big hack... we don't have a registered MAC address yet. TJS
// Add 100Mbps here too...
{"Cobalt 27", 0, 0x10, 0xE0, {0x1e00, /* 0 == controller #, 1e ==
offset */
0x0000, /* 0 == high offset, 0 == gap */
0x0800, /* Default Autoselect */
0x8001, /* 1 leaf, extended type, bogus
len */
0x0003, /* Type 3 (MII), PHY #0 */
0x0400, /* 0 init instr, 4 reset instr */
0x0801, /* Set control mode, GP0 output */
0x0000, /* Drive GP0 Low (RST is active
low) */
0x0800, /* control mode, GP0 input
(undriven) */
0x0000, /* clear control mode */
0x7800, /* 100TX FDX + HDX, 10bT FDX + HDX
*/
0x01e0, /* Advertise all above */
0x5000, /* FDX all above */
0x1800, /* Set fast TTM in 100bt modes */
0x0, /* PHY cannot be unplugged */
}},
Has anybody tried this? Or otherwise gotten 100 Mb on both interfaces?
Byron