I would check for duplex mismatches.

Like make sure auto negotiation is enabled.

Maybe even try manually setting it to 100Mbps Full Duplex

One thing you could do to test it is start up apache and put a file in there then download that from your windows machine. or vice versa start up IIS on your Xp machine then wget a file over your network from your linux machine.