[HN Gopher] Was the NE2000 really that bad?
___________________________________________________________________
Was the NE2000 really that bad?
Author : vitplister
Score : 59 points
Date : 2021-04-09 19:55 UTC (3 hours ago)
(HTM) web link (www.os2museum.com)
(TXT) w3m dump (www.os2museum.com)
| garyrichardson wrote:
| Great article. Brings me back.
|
| I also learned something, I thought it was an ne2000 driver as in
| "any 2000" as in "it works with all these generic network cards."
| linker3000 wrote:
| Oh, I remember them well - I worked as Technical Sales Manager
| for a reseller/distie and did mostly network-oriented things.
|
| * NE1000: PS148
|
| * NE2000: PS348
| stuaxo wrote:
| Really good article, probably a bit late now, but it would be
| good if someone implemented the fix he points out.
| jandrese wrote:
| The fix is about 20 years too late at this point. I'm kind of
| surprised the driver is still in the kernel. There has to be a
| vanishingly small number of these cards still in use in the
| wild. Likely the only reason it survives is there were PCI
| implementations.
| tssva wrote:
| I deployed probably thousands of NE2000 cards in the early 90s.
| They were reliable and as the article points out presented much
| less potential resource conflicts than competing cards. 3COM
| cards were particularly awful in that regard.
|
| I have a few NE2000 clones running in retro systems I have from
| that era. I have an actual Novell NE1000 with a 10BASE-T
| transceiver connected to the AUI port running in an 1984 Zenith
| Z-160 luggable.
| jandrese wrote:
| I remember the 3Com cards struggling a lot with Ethernet
| autodetection. It wasn't terribly uncommon to get a complaint
| about a slow network and find that the 3Com plugged into a hub
| had decided to go full duplex.
|
| That said I was generally happy with the 3c509s, once I
| manually wired down the duplex setting at least.
| fbellag wrote:
| Oh, I remember having to look at the revision code for the
| 3c509... If memory serves, if it wasn't one of the red ones
| it had to be returned, and the red were a mixed bag!
| anigbrowl wrote:
| No, it was my go-to for years when I worked in systems
| sales/deployments - affordable (by contemporary standards),
| predictable, reliable. I went through some Linux struggles with
| it, but that was true of all hardware at the time. It was a lot
| less painful than trying to get X-Windows running on higher
| resolution VGA modes.
| [deleted]
| jandrese wrote:
| I used them on FreeBSD boxes and never had issues beyond
| standard ISA resource sharing headaches. I didn't even know
| they had a bad reputation. I used to prefer the ones with
| jumpers to set the resources because I never trusted Plug-n-
| Pray on ISA.
| burnte wrote:
| Right? I'd never heard it had a bad name but I never used Linux
| in the 90s. I'd installed thousands of those cards through my
| years, they were tanks. Cheap, reliable, compatitble with
| everything.
| alexott wrote:
| Oh, I remember fixing sources for it in Linux kernel right
| after 2.0.0 release to make one of the clones working. Then it
| was fixed properly in next release (2.0.1, or something like).
|
| But yes, it was widespread, especially in my circles -
| universities, etc. in ex-ussr
| tannhaeuser wrote:
| Why should NE2000 have been bad? It was the gold standard for ISA
| NICs in terms of compat, with many clones available, similar to
| what SoundBlaster was for audio cards.
| bluGill wrote:
| That is half the problem: there were a lot of clones, and not
| all were good. I never used it myself, but the stories were
| enough to get me to buy a bunch of 3com cards off eBay back in
| the day just to get something that would work.
| phpnode wrote:
| No, it was great, but BNC / Coax ethernet was awful and horrible
| and an absolute nightmare to debug. I probably still have a
| drawer full of terminators somewhere
| anyfoo wrote:
| I remember the many advertisements for LAN analyzers back in
| computer magazines aiming at the "professionals" IT audience.
|
| Are those still in wide use today, for maybe other reasons?
| flyinghamster wrote:
| Back in the NE2000 era, I had more problems with thin-net cabling
| than I did with the cards themselves. It definitely didn't help
| that the boss had a ton of old 3270 cable lying around and
| insisted that it was fine for the application. Hello, impedance
| mismatch.
|
| I really don't miss thin-net.
| moonbug wrote:
| beat the 3c509, that's for sure.
| h2odragon wrote:
| Bah. a pair of 3c509's would do a link of 750m or so on coax.
| And when i needed that they were available _cheap_ used and in
| bulk, which was good. Every lightning storm would fry one end
| of the link if not both.
| eek04_ wrote:
| Back in the 1990s, I was a FreeBSD guy, and at some point I
| looked over the code for a few of the popular Linux ISA
| networking drivers for some reason and was shocked at the low
| quality. The code quality of the core Linux kernel is generally
| excellent - the code quality of these drivers was at the level of
| "lowest passing undergraduate's second C program". I'd not be at
| all surprised if this turned out bugs giving bad performance;
| drivers are often considered finished when they produce the
| expected result, and network protocols have enough recovery
| mechanisms that you can get the expected result with a fair
| number of bugs.
|
| The NE2000 clones worked fairly well in FreeBSD at the same time
| all the complaints were coming over in Linux-land. To be fair:
| You'd usually have less support for hardware in FreeBSD than
| Linux at the time (and almost certainly still.)
| jhallenworld wrote:
| On ISA-bus DMA: it was horrendously slow. They kept the 8237 DMA
| controller speed pretty much unchanged even after faster
| processor speeds appeared (maybe for backwards compatibility- the
| one thing that the PC centralized DMA controller must work for is
| the floppy controller).
|
| I designed a card that used DMA before I understood this. PIO was
| much faster. So for example "UDMA" for the ATA-3 IDE drives was
| dependent on PCI-bus or on-motherboard ports.
| ajross wrote:
| The 8237 is an ISA device and operates at the bus speed (with
| some overhead, ymmv, yada yada). The bus didn't get faster so
| the devices it automated didn't get faster.
|
| But PC DMA certainly did get faster. The PCI bus has bus
| mastering DMA (i.e. none of that fly-by nonsense implemented by
| the 8237) as a core feature, and PCI network cards used it. But
| they were expensive for quite a few years, so we were still
| buying ISA cards well into the 90's. Which were slow. Because
| ISA.
| jhallenworld wrote:
| Yeah, I saw DMA going much slower than PIO on the ISA bus. I
| remember scope shots showing the strobes being longer than
| anything else happening on the bus.
|
| Right, PCI bus master DMA was fast (probably true of EISA and
| MCA also.. but don't know first hand).
| kiwidrew wrote:
| _> The 8237 is an ISA device and operates at the bus speed
| (with some overhead, ymmv, yada yada)._
|
| It's even worse than that -- the 8237 DMA controller is
| clocked at 4.77Mhz for backwards compatability. The normal
| ISA bus clock is ~8.25Mhz. So ISA DMA is actually half the
| speed of ISA memory or PIO access.
|
| https://wiki.osdev.org/ISA_DMA is a good reference to the
| ugly gory details of DMA...
| ajross wrote:
| That's correct, but sort of missing context. The original
| PC bus was synchronous, and everything lived on it. So the
| idea was you'd fetch an instruction byte from the bus, then
| another, then another, then spend a cycle interpreting the
| instruction, then execute the load or whatever it was on
| the bus, then go back to do it over again. In that world a
| DMA controller that can do a transfer ever other cycle is
| much _faster_ than the CPU copy it would be replacing.
|
| Modern readers, weened on PCI, see something like "The ISA
| bus is 16 bits wide at 8 MHz" and think they should be able
| to stream 16MB/s "across" it "into" main memory. But that's
| not how it worked with ISA. It's not how it ever worked
| with ISA. The memory was on the same bus! And the CPU
| didn't even have a L1 cache!
| knorker wrote:
| Coping some files with a ne2k card on linux, pentium 133mhz
| caused mp3 playing to go bonkers from being overload. Switching
| to a better card fixed it.
|
| Was it the hw, or the driver? Shrug, I don't know. But the
| experience sucked.
| tyingq wrote:
| An ne2k uses programmed io, where your cpu is constantly
| interacting in a fifo way with it.
|
| Shared memory or bus master cards are easier on the CPU. Some
| compute and pass checksums too, which offloads more cpu.
| anyfoo wrote:
| Yeah, but as called out in the article, ISA (8257 style) DMA
| wasn't a good option either. And carving out address space
| came with its own set of problems, especially if you needed
| this to work on DOS (with maybe Windows on top)--which was
| pretty much the default at the time.
|
| PCI made most of that go away with its introduction, hence me
| wondering what the replacement card was.
| oso2k wrote:
| Probably something with a rtl8129/39/69 chip. I had a few
| dozens of those NICs in the late 90s and early 2000s
| university computer labs I worked at. They're so common
| that they're (almost) a standard in x86 emulation (see
| qemu, VirtualBox, etc.).
| anyfoo wrote:
| Out of curiosity, did you maybe switch to a PCI card? DMA was
| just a better option in general with PCI than ISA, so just
| switching to a PCI card could likely relieve your CPU of work
| (unless the PCI card/driver weren't completely crap).
| AnotherGoodName wrote:
| Note that PIO hard drive modes that were unintentionally common
| back then would also lead to this. You used to have to go out
| of your way and meddle with specific drivers to avoid PIO mode.
|
| You could have even ended up with a double whammy if not
| careful. Your hard drive and network might both have relied on
| the CPU for data transfer in which case the system would really
| have ground to a halt.
| karmakaze wrote:
| I've used lots of network cards from the BNC flavoured ones for
| IPX/SPX and later UTP ones for Ethernet. Most of them worked
| fine, and most of the time they didn't was because of drivers
| being not so great, or being misconfigured. Don't have any
| complaints about the NE2000. It was probably difficult because it
| was early. Later cards/drivers benefitted from things generally
| getting sorted out.
|
| A few of the (much later) cheapest bargain-basement (but also
| popular) cards did have small buffers and had low throughput, or
| simply lost packets without detecting the errors.
| guardiangod wrote:
| I used to use PCI NE2000 clone cards in Windows 95. I never had
| any real issues using them. I do remember thinking that "who made
| these cards? I couldn't find the brand?!"
|
| One thing I really hated was Windows 95's built in generic NE2000
| drivers never work, and you could never find the correct driver
| floppy disk because you don't know the brand.
| jeffbee wrote:
| I think the lesson here is not to believe some myth just because
| a nerd from the 90s wrote it down. Some guy said that the NE2k
| was never meant to be mass-produced and people have been
| repeating that for 30 years.
| johndoe0815 wrote:
| This is a well researched and very interesting article! I
| especially like that it considers both the hardware and software
| side of things and that it includes an analysis of the Linux
| NE2000 driver code, its initial deficiencies and its evolution
| over more than 20 years.
| pilif wrote:
| _> This is a well researched and very interesting article!_
|
| That is true for all articles on that site. If you were alive
| in the 90ies, then this site has something for you.
|
| I spent hours and hours reading through most of it
___________________________________________________________________
(page generated 2021-04-09 23:00 UTC)