Was the NE2000 really that bad?
os2museum.com
os2museum.com
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.)
I used to have to literally break flaky cards in half--not kidding. Three different people fished a card out of my trash and only stopped when they realized I physically broke it--and this was about 2001-ish.
Do not purchase this card, even as a joke. It's performance is horrible, and it breaks in many ways.
...
The driver is less efficient than it could be. It switches through receive mode even if more transmits are queued. If this worries you buy a real ethernet card.
...
The driver still allows only the default address for cards when loaded as a module, but that's really less braindead than anyone using a 3c501 board. :)
By the way, does the GDPR require blanking the names of ex-employees in the Git history???
I very much doubt the GDPR overrides the irrevocable license to redistribute (GPL in this case) that each developer is granting through the act of publishing their code. My understanding is that it regulates all the unpublished, ostensibly private information that the companies you do business with collect about you.
Put another way, wouldn't it be a bit ridiculous if the author of a book demanded that their name be removed from the work years after publishing it? What are libraries supposed to do, dig out all their copies and scribble over the name?
https://www.os2museum.com/wp/wp-content/uploads/2020/01/P117...
It looks like a camera but it surely isn't, so what is it?
You can see the two pairs of enamel wires coming out on each side the sides. There are two windings, both wound on a core spool with its axis perpendicular to the board.
What you're seeing looking like the lens of a camera is a hole in the middle of the spool, presumably used during manufacture to hold it while winding.
https://web.archive.org/web/20201026081303/https://www.os2mu...
> The CTI provides all the MAU (transceiver) functions except for signal and power isolation. Signal isolation can easily be provided by a set of three pulse transformers that come in a single Dual-in-Line package. These are available from transformer vendors such as Pulse Engineering (PE64103) and Valor (LTll0l). However, for the power isolation a DC to DC converter is required.
The data sheet provides several sample implementations using a PE64018, PE64103, PICO 33223, or PICO 33143 for this.
[1] http://www.bitsavers.org/components/national/_dataBooks/1988...
"Detected 3Com 3c501 (THROW IT AWAY!!!)"
which is the most deprecating thing I can see the 3c501 driver code printing, in quickly skimming through old versions of the right age (it seems to have been mostly unchanged for large swathes of time).
(I went skimming for this message out of morbid curiosity, and couldn't find it. But I did only specifically look in the 3c501 source, so maybe it was a closely related card doing it, or a not-in-kernel version of the driver?)
Back as a student when I moved into the dorms which had 100base-T, I did some googling (or maybe it was altavista'ing in those days, I can't remember) and it seemed the best regarded 100base-t cards for Linux were the Intel one and the 3com one. The 3com one was slightly cheaper at the local computer shop, so I got one of those.
(Somewhat later on there was a flood of very cheap DEC Tulip clones, and I got one of those too. Was happy with that one as well.)
I put out a number of Red Hat 6.2-based servers w/ the Intel NICs, got hit with the dreaded eepro100 "receiver lock-up" bug, and had to end up putting in 3C905 NICs in their place to get stable network connectivity. Good times. >smile<
[1] https://universaldatasystems.org/shop/product/intel-pro-100b...
I did some testing on them and it turned out they sent an interrupt signal on every IRQ regardless of what IRQ you configured in the setup utility which caused windows to lock up.
I took them home and drilled through the traces to the unwanted IRQs on the ISA slot and gifted them out at lan parties.
But yes, it was widespread, especially in my circles - universities, etc. in ex-ussr
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.
That said I was generally happy with the 3c509s, once I manually wired down the duplex setting at least.
One of my first professional IT gigs was helping with a big rollout of HP desktops. We had a lot of problems because of these cards and bay network hub/switches that were mutually incompatible for auto detect.
The other fun part of that gig was the VAR upgraded memory on devices, and that generation of HP was very finicky about certain memory specs.
Good times in retrospect!
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
As almost everyone in the comments, I had many NE2000 clone cards (they were really inexpensive, I had more cards than computers), and I never had a problem with them, and I never heard that they had a bad rep (not even with Linux).
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."
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.
As I recall, he talked about a state machine triggered that needed a ... memory? I/O? ... read that would get as many wait states (ahhh, wait states! kids these days...) as needed to guarantee it was done. But the Linux driver would not do the read because, he said, it always returned the same value anyway. As it would, if you did.
Linux NIC troubles were self-inflicted.
https://en.wikibooks.org/wiki/QEMU/Devices/Network
virtio > e1000 >> rtl8139 >> anything else with one of the ne2K variants as the sound-blaster like minimum compatibility level.
Was it the hw, or the driver? Shrug, I don't know. But the experience sucked.
Shared memory or bus master cards are easier on the CPU. Some compute and pass checksums too, which offloads more cpu.
PCI made most of that go away with its introduction, hence me wondering what the replacement card was.
I could be completely wrong, though. But yes we knew then that ISA was crap, relatively speaking. :-)
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.
I really don't miss thin-net.
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.
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.
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...
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!
[Not to mention that the 8088 took 4 cycles to read a byte from memory and 5 cycles to read a byte from I/O.]
The true power of the 8237 was that it never touched the data byte itself: it just manipulated the bus lines, transferring a byte directly from I/O device to memory in just 4 cycles, much faster than the 8088 could ever manage.
(The page also talks about breaking up DMA transfers, so a Soundblaster on the same bus can do its own DMA often enough)
Right, PCI bus master DMA was fast (probably true of EISA and MCA also.. but don't know first hand).
Are those still in wide use today, for maybe other reasons?
They will also be able to do basic connectivity tests to make sure things above the physical layer (eg: is there DHCP?) are operating correctly so you don't also need to swap to a laptop to fully troubleshoot a network drop.
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.
* NE1000: £148
* NE2000: £348
I paid something like £15 to buy each card, and they were found in a cardboard box of "misc. networking cards". Random piles of undocumented, unlabelled cards. Most were NE2K, though there were some 3Com cards - I remember I bought one by mistake, couldn't get it working properly under Linux at the time and took it back to swap it over.
That was around the time winmodems were a thing, and my personal PC had one. My memory is that of the three/four PCs in the house only one of them had a modem that worked under Linux and so we'd use that as the common "internet" machine, setting up routing so we could get internet access via that one for 30-60 minutes a day or so.
In contrast, the NE1000
did not map its onboard SRAM into the host’s address space
, but likewise
removed the DMA support,
and only supported PIO transfers that utilized the DP8390’s Remote DMA feature. That meant the NE1000 only required 32 bytes of I/O port space and an IRQ; no other resources were needed. The NE1000 was priced at $495 at introduction (3Com’s EtherLink 3C501 cost $595 at the time) but almost immediately dropped to $395 (just below the WD8003).
The comparison between the WD8003 and NE1000 is interesting. WD opted to use shared RAM which is faster but significantly more problematic to configure, and that was especially the case with the coming wave of 386 memory managers. Novell went in the opposite direction, choosing somewhat slower PIO but completely avoiding any configuration issues with shared memory.
Both Novell and WD decided to
drop DMA support,
probably because it avoided yet another source of configuration conflicts and because especially on PC/AT class systems, DMA was slower than either PIO or memory anyway.
It is important to keep in mind that the existing competition for the WD8003E and NE1000 weren’t fancy adapters like the 3Com 3C505 EtherLink Plus or the Exos 205T but, first and foremost, the cheapest Ethernet option available, the 3Com 3C501 EtherLink. And both the NE1000 and the WD8003E beat the 3C501 hands down, because they had a much bigger packet buffer (8K vs. 2K) and did not have the awful 3C501 limitation of having to switch between mutually exclusive transmit, receive, and host access modes.
In 1988, the NE2000 appeared. It was essentially a 16-bit version of the NE1000 with support for 16-bit AT bus (but still capable of working in 8-bit slots) and two SRAMs in an 8Kx16 configuration. This doubled the onboard memory capacity and enabled both the DP8390’s internal bus and the NE2000’s external ISA bus connection to use 16-bit transfers, significantly improving the speed at which the host could communicate with the adapter.
Western Digital released a similarly upgraded WD8013E (EtherCard Plus 16) with a 16-bit ISA interface and 16KB of onboard RAM.
On the part of Novell, the motivation was clearly not to make money on hardware but sell more software. In 1991, Novell let Anthem/Eagle take over the network card manufacturing and distribution; after all, the hardware business was something Novell wanted to get out of, not into. The main purpose of the NE1000 and NE2000 was to drive the prices of networking hardware down, and it did just that."