Randomly losing packets will cause TCP to throttle. Not sure about windows, but I'm guessing it tracks crc errors, dropped packets and the like. As do the nicer switches. I'd check all the error totals, do a transfer, then check again for any new errors.