A while back when I installed my 10/100 switch, upgrading the LAN to 100Mbps, I started having problems sending data from my XP machine to my Linux box. But receiving was no problem. I ended up grabbing a 3com card from eBay to replace the Kingston one which apparently was crap. Well, the transfers stopped failing, but they were still abnormally slow, and when I checked the interface stats on the Linux box, it still showed packet errors in the thousands for receiving data (no errors for transmitting).
Then just now, I was working on a (possibly) unrelated problem and thought about the possibility of forcing a connection down from 100Mbps to 10Mbps by wiring a special cable. I had seen ethernet cables before that only had 4 wires in the connector. I thought, maybe all 8 are only needed for 100Mbps, so if I only wire the 4 that are used for 10Mbps, the router and switch will have no choice but to stick to 10Mbps, right?
Well, after a little research, I learned a lot I never knew before. Both 10Base-T and 100Base-T use only 4 conductors. The other 4 conductors in ethernet cables are simply never used, unless you want to send two ethernet signals down the same cable, or mix ethernet with phone, or something like that. I also learned a little more about the "twisted pair" concept, which ethernet cables use. And that would be: WHY they're twisted. RIT taught me that they're twisted to reduce interference, but they didn't mention how that works. See, each "pair" actually carries the same signal, only one of them is a negation of the other. I'm familiar with this concept because it's used in the XLR audio cables that most microphones use. But RIT simply failed to mention that this was the concept at work here. So there are really only 2 signal paths: transmit and receive. I guess I had thought there were 4, and the other 2 were control links or something, and what got twisted with what wasn't very important, as long as there was twisting going on. At least, that's the way my professor made it seem.
So, since I didn't have this critical information about WHY the pairs are twisted, I made the wrong decision upon observing the interior of the cable I used to wire the apartment. Instead of there being 8 separate wires, like there was in my networking lab where I crimped a 3-foot crossover cable that I still use to this day, in this cable each pair was stuck together. So there's a green wire with a white wire stuck to it, an orange with a white, blue with white, and brown with white. Since I thought I had seen it done before, and it made sense to me that the order for a straight-through cable didn't really matter as long as it was the same on both ends, I semi-ignored the T568A wiring standard which calls for the orange pair to straddle the blue pair, requiring that I split the orange wire from its white wire. Instead, I put one pair each on pins 1-2, 3-4, 5-6 and 7-8.
As a result of doing that, when my XP machine sends a packet to the Linux box, which is done on pins 3 and 6, or the orange pair, the positive and negative versions of the signal are not twisted together. Instead, one is twisted with the unused pin 4 and the other with the unused pin 5.
Meanwhile, when the Linux box sends a packet to my XP machine, that is done on pins 1 and 2, or the green pair, which I had wired correctly (as well as the brown pair on pins 7 and 8, which are not used).
Thus, I made myself a cable that is only "twisted pair" in one direction. And my devices trying to run at 100Mbps were not happy with that.
Incidentally, the reason the orange pair straddles the blue pair is because that's how telephone cords are. If you only have a 1-line telephone, it's only using the blue pair in the center. If you have a second physical line, it's on the orange pair. So they wanted to keep things consistent I guess.
So anyway, I re-crimped the cable ends correctly and now I can transfer 100MB in 13 seconds... and that's peachy. :)