tulip-diag updating EEPROM on Osicom
"Edmond E. Shwayri" <[email protected]> Fri, 10 Jan 2003 01:37:42 -0500
| Newsgroups | gmane.linux.drivers.tulip.general |
|---|---|
| Message-ID | <[email protected]> |
I ran into an interesting "problem" and I was hoping someone would have an answer. First the history : I have an Osicom 4 port card. I have used the card in Linux for a few years now. It has worked well. 6 months ago I hooked up a hub to one of the Osicom ports and I found that the "Autosense" wasn't working right. Since the hub is un-managed I decided to change the setting on the Osicom. Using tulip-diag I changed the media from 800 to 203 for 3 of the ports - I forget why I left the fourth alone. It worked as long as the hub was turned on AFTER the Osicom. It was irritating so a few months later I got a managed Cisco switch (already ahve one) and it worked fine. I didn't bother to switch the eeprom back to 800 since everything was working fine. Recently I decided to upgrade the computer from an old lowly Pentium to a new dual AMD. For maintenance I decided I would also install Windows 2000 in a dual boot. When I inserted the Osicom card, Windows detected all 4 ports and installed drivers. While all 4 ports were detected, only one was marked as working. The others had the "this device can't be started" and the yellow bang. I noticed that the one port that it was happy with was the one port I had NOT changed with tulip-diag. I booted into Linux and asked tulip-diag to dump out the eeprom for the 4 ports. The port that was working looked like this : tulip-diag.c:v2.09 1/28/2002 Donald Becker ([email protected]) http://www.scyld.com/diag/index.html Index #2: Found a Digital DS21140 Tulip adapter at 0xa400. Port selection is 10mpbs-serial, half-duplex. Transmit stopped, Receive stopped, half-duplex. The Rx process state is 'Stopped'. The Tx process state is 'Stopped'. The transmit threshold is 72. EEPROM 64 words, 6 address bits. PCI Subsystem IDs, vendor 0000, device 0000. CardBus Information Structure at offset 00000000. Ethernet MAC Station Address 00:00:BC:11:11:0A. EEPROM transceiver/media description table. Leaf node at offset 30, default media type 0800 (Autosense). CSR12 direction setting bits 0x0f. 4 transceiver description blocks: 21140 Non-MII transceiver for media 0 (10baseT). CSR12 control port setting 0x01, command 00 0x8e. Media detection by looking for a 0 on bit 7 of the CSR12 control port. 21140 Non-MII transceiver for media 3 (100baseTx). CSR12 control port setting 0x01, command 00 0x6d. Media detection by looking for a 1 on bit 6 of the CSR12 control port. 21140 Non-MII transceiver for media 4 (10baseT-Full Duplex). CSR12 control port setting 0x09, command 00 0x8e. Media detection by looking for a 0 on bit 7 of the CSR12 control port. 21140 Non-MII transceiver for media 5 (100baseTx Full Duplex). CSR12 control port setting 0x01, command 00 0x6d. Media detection by looking for a 1 on bit 6 of the CSR12 control port. EEPROM contents (64 words): 0x00: 0000 0000 0000 0000 0000 0000 0000 0000 0x08: 0000 0101 0000 11bc 0a11 1e00 0000 0800 0x10: 040f 0100 008e 0103 006d 0904 008e 0105 0x18: 006d 0100 0000 0000 3412 4000 3412 4000 0x20: 0000 0000 0000 0000 0000 0000 0000 0000 0x28: 0000 0000 0000 0000 0000 0000 0000 0000 0x30: 0000 0000 0000 0000 0000 0000 0000 0000 0x38: 0000 0000 0000 0000 0000 0000 0000 2d5d ID block CRC 0xe3 (vs. 00). Full contents CRC 0x2d5d (read as 0x2d5d). The one port that was not working looked like : tulip-diag.c:v2.09 1/28/2002 Donald Becker ([email protected]) http://www.scyld.com/diag/index.html Index #1: Found a Digital DS21140 Tulip adapter at 0xa000. Port selection is 10mpbs-serial, half-duplex. Transmit stopped, Receive stopped, half-duplex. The Rx process state is 'Stopped'. The Tx process state is 'Stopped'. The transmit threshold is 72. EEPROM 64 words, 6 address bits. PCI Subsystem IDs, vendor 0000, device 0000. CardBus Information Structure at offset 00000000. Ethernet MAC Station Address 00:00:BC:11:11:09. EEPROM transceiver/media description table. Leaf node at offset 30, default media type 0203 (100baseTx). CSR12 direction setting bits 0x0f. 4 transceiver description blocks: 21140 Non-MII transceiver for media 0 (10baseT). CSR12 control port setting 0x01, command 00 0x8e. Media detection by looking for a 0 on bit 7 of the CSR12 control port. 21140 Non-MII transceiver for media 3 (100baseTx). CSR12 control port setting 0x01, command 00 0x6d. Media detection by looking for a 1 on bit 6 of the CSR12 control port. 21140 Non-MII transceiver for media 4 (10baseT-Full Duplex). CSR12 control port setting 0x09, command 00 0x8e. Media detection by looking for a 0 on bit 7 of the CSR12 control port. 21140 Non-MII transceiver for media 5 (100baseTx Full Duplex). CSR12 control port setting 0x01, command 00 0x6d. Media detection by looking for a 1 on bit 6 of the CSR12 control port. EEPROM contents (64 words): 0x00: 0000 0000 0000 0000 0000 0000 0000 0000 0x08: 0000 0101 0000 11bc 0911 1e00 0000 0203 0x10: 040f 0100 008e 0103 006d 0904 008e 0105 0x18: 006d 0100 0000 0000 3412 4000 3412 4000 0x20: 0000 0000 0000 0000 0000 0000 0000 0000 0x28: 0000 0000 0000 0000 0000 0000 0000 0000 0x30: 0000 0000 0000 0000 0000 0000 0000 0000 0x38: 0000 0000 0000 0000 0000 0000 0000 bb5d ID block CRC 0xe3 (vs. 00). Full contents CRC 0x29e0 (read as 0xbb5d). So, I used tulip-diag and told that port to switch from 203 back 800 for media (its original setting before I played with it). Once I did that the tulip-diag after the change was : tulip-diag.c:v2.09 1/28/2002 Donald Becker ([email protected]) http://www.scyld.com/diag/index.html Index #1: Found a Digital DS21140 Tulip adapter at 0xa000. Port selection is 10mpbs-serial, half-duplex. Transmit stopped, Receive stopped, half-duplex. The Rx process state is 'Stopped'. The Tx process state is 'Stopped'. The transmit threshold is 72. EEPROM 64 words, 6 address bits. PCI Subsystem IDs, vendor 0000, device 0000. CardBus Information Structure at offset 00000000. Ethernet MAC Station Address 00:00:BC:11:11:09. EEPROM transceiver/media description table. Leaf node at offset 30, default media type 0800 (Autosense). CSR12 direction setting bits 0x0f. 4 transceiver description blocks: 21140 Non-MII transceiver for media 0 (10baseT). CSR12 control port setting 0x01, command 00 0x8e. Media detection by looking for a 0 on bit 7 of the CSR12 control port. 21140 Non-MII transceiver for media 3 (100baseTx). CSR12 control port setting 0x01, command 00 0x6d. Media detection by looking for a 1 on bit 6 of the CSR12 control port. 21140 Non-MII transceiver for media 4 (10baseT-Full Duplex). CSR12 control port setting 0x09, command 00 0x8e. Media detection by looking for a 0 on bit 7 of the CSR12 control port. 21140 Non-MII transceiver for media 5 (100baseTx Full Duplex). CSR12 control port setting 0x01, command 00 0x6d. Media detection by looking for a 1 on bit 6 of the CSR12 control port. EEPROM contents (64 words): 0x00: 0000 0000 0000 0000 0000 0000 0000 0000 0x08: 0000 0101 0000 11bc 0911 1e00 0000 0800 0x10: 040f 0100 008e 0103 006d 0904 008e 0105 0x18: 006d 0100 0000 0000 3412 4000 3412 4000 0x20: 0000 0000 0000 0000 0000 0000 0000 0000 0x28: 0000 0000 0000 0000 0000 0000 0000 0000 0x30: 0000 0000 0000 0000 0000 0000 0000 0000 0x38: 0000 0000 0000 0000 0000 0000 0000 bb5d ID block CRC 0xe3 (vs. 00). Full contents CRC 0xbb5d (read as 0xbb5d). So, I rebooted into Windows and now I had two working ports instead of 1. I went back into Linux and changed the other 2 ports as well and now all 4 ports show up as working. The question is why? Could be the auto-sense / fixed media; however, what is more striking is the Full Contents CRC. Before the switch back to the original 800 : Full contents CRC 0x29e0 (read as 0xbb5d). After the switch : Full contents CRC 0xbb5d (read as 0xbb5d). So, what it looks like is that tulip-diag doesn't change the CRC when it updates a setting. The Windows driver could very well be looking at the CRC and saying, ooops corrupt eeprom - don't load port. Isn't there any way to update CRC when one updates a setting? _______________________________________________ tulip mailing list, [email protected] To change to digest mode or unsubscribe visit http://www.scyld.com/mailman/listinfo/tulip