Couple of things to check:
- Half vs. Full duplex on the links, depending on how and what you hook up
  to the nway negotiation is sometimes flakey.
- Size of the writes/reads, mtu's, any mismatches. (Smaller reads and writes
  perform better by any chance?) (This may indicate an anomaly in the 
  queue'ing, larger packets require more buffer space, if large packets 
  consistenly get nailed, that may explain the problem, there is some setsockopt
  that allows you to set the tcp segment size below the if mtu. TCPMAXSEG
  something. ;-)
- Is the behaviour directional, ie does it exhibit the exact same erraticness
  from a to b as it does from b to a. (Propably not.)
- Another one to try is to use UDP, and with a little help of app layer 
  sequence numbers you can see if there is some periodic phenomenon that drops
  packets.
- Tweaking the kernel options for the routing stuff may make a big difference.
  I've dealt with some of the linux drivers that did not correctly did the
  negotiation, downloading the new driver from 
  http://cesdis1.gsfc.nasa.gov/linux/drivers/ usually fixed that.
  (Or forcing the settings on boot.)
Not to helpfull, but that is sort of the stuff I would go after.
(well first do what Rick said though, netstat.)
To get my idea of your config straight: 
Two machines running netperf, interconnected with another dual interface 
machine?
roel