VOGONS


First post, by MrD

User metadata
Rank Member
Rank
Member

I have a generic RTL8139C PCI Ethernet card which works fine in Win98SE with Realtek's drivers (just using the .inf, not installing any fancy managers, etc.), but is very unreliable when I reboot into MS-DOS Mode, use the F8 'Command Prompt Only' option, or use MS-DOS 6.22 proper.

https://imgur.com/a/17Hp4ed

I have the RTSPKT.COM driver and I'm using the MTCP suite. DHCP is failing saying there's no response. PKTTOOL says that packets are being sent, but none are being received. The lights on the back of the card are off. When RTSPKT starts, it incorrectly detects the link type and speed (should be 100Mbps full duplex I believe) in the intro text.

Sometimes this card will work (Act and Link lights on, all transfers working as expected) after removing the PCI cards from the motherboard and reinserting them in a different order, which makes me think it's a resource allocation thing? It's possible that this motherboard, processor and card combination just doesn't work with the way DOS works, but that's a vague conclusion.

Does anybody else have issues with this chip in DOS? Is there anything I ought to check in the BIOS or elsewhere to try to get this card working in DOS?

Pentium 4 1.8Ghz, MS-6534 motherboard, 512MB ram (256mb x 2).
AGP: vacant
PCI: RTL8139C, SB Live! SB0100, Voodoo3 2000 PCI 16MB RAM.

Reply 1 of 8, by Deunan

User metadata
Rank Oldbie
Rank
Oldbie

Perhaps the mis-detected link type is a clue? I've never tried one of these in DOS (except the older ISA ones), perhaps the HW has some issues that Windows driver works around but the DOS one is too dumb for that. If you have an older 10Mb/s hub try connecting that between the card and your current network hardware, chances are the DOS driver was written for older Realtek cards and defaults to 10Mb/s for some reason.

Reply 3 of 8, by dionb

User metadata
Rank l33t++
Rank
l33t++

PnP hardware and DOS can always be fun... I'd guess resource allocation may be an issue. Given it sometimes does and sometimes doesn't work, it could be worth checking which resources (hw address, DOS IRQ and software interrupt) you're using in the one case and which in the other.

Note by the way that the 8139B and C are subtly different so potentially there could be driver differences there, although I'm not aware of any different drivers being available.

Reply 4 of 8, by MrD

User metadata
Rank Member
Rank
Member

I've found a workaround. I'm not sure whether it's my specific card being old or the W98 drivers being strange, but it seems that when W98 shuts down, it leaves the card in a bad state. (Possibly in the EEPROM - it persists over a reboot, so where else would it be I guess?)

Using the Realtek diagnostics tool RSET8139 in DOS, I can view and write a new EEPROM configuration to the board. If I set the card's Medium Type to 'Auto Detect', it'll set the Flow Control to 'Nway Flow Control Enable'. After writing those settings to the EEPROM, the packet driver correctly determines the link type and all the MTCP suite tools work perfectly.

I also get a lot of 'Fail Count' for the 'I/O Register' on the On Board Diagnostics sometimes - not sure what to make of that. When the card's EEPROM is rewritten, that goes away.

The RTSPKT from http://www.georgpotthast.de/sioux/packet.htm is 3.40. The one from Realtek https://www.realtek.com/en/component/zoo/cate … et-pci-software is 3.44. I didn't notice any difference between the two.

Reply 5 of 8, by Deunan

User metadata
Rank Oldbie
Rank
Oldbie

Did you try a cold reboot? As in, cut power for at least a few seconds? Recently I've read in some 3Com docs that some mobos do not properly reset ISA bus during warm reboot, that can leave cards in semi-initialized state that some drivers do not expect. But it should go away with cold reboot, so if it doesn't your theory is correct and it's something in the EEPROM data being messed up by Windows driver.

Reply 7 of 8, by mbbrutman

User metadata
Rank Member
Rank
Member

Your are bumping into a common problem with device drivers ... to be on the safe side a device driver should reset the device before touching it, and should assume that nothing is correct. The DOS packet driver is probably not doing that because the poor junior-level programmer who is assigned to maintain the 20+ year old packet driver is just testing on a PC that he boots cold each time they update the code, which is about once every five years.

Warm boot vs. cold boot makes a difference for the BIOS areas. There is a reset signal on the ISA bus, but who knows what the card is actually doing with it.

You also could have a legitimately bad card. Or there is a timing problem in the packet driver code and it's not waiting long enough for the card to do something. So many people don't check return codes or verify that the hardware is in the state it is supposed to be in ...

Reply 8 of 8, by weedeewee

User metadata
Rank l33t
Rank
l33t
MrD wrote on 2021-05-30, 14:00:

I'll try it. 😀 Does that apply here though since this is a PCI card?

Edit - no difference.

if the windows driver somehow messes with the eeprom of the nic, it's normal that a cold boot won't change a thing.

Right to repair is fundamental. You own it, you're allowed to fix it.
How To Ask Questions The Smart Way
Do not ask Why !
https://www.vogonswiki.com/index.php/Serial_port