Yes, glad to see you'd worked out the collision domain thing--I saw your subsequent post just after my previous one was sent.
Duplex mismatch actually CAN be a real pain in the ass, precisely because it isn't a "show stopper" at link-up time. I can't begin to count how many funky problems I've investigated over the years that turned out to be caused by a duplex mismatch.
Say you've got a host ("A") connected to a switch port at 100mb, and you get a mismatch on the duplex setting: the host is set for FULL, but the port gets set for HALF. The host believes it is operating on fully bi-directional media, and will completely ignore any collisions. The switch, however, will detect and respond to collisions, and will expect the host to do the same. So host A sends a frame to host B, and about the same time, host C sends a broadcast. The C-* frame reaches host A just fine, but it happens to traverse the link between the switch and A at the same time as the A-B frame. Host A says "no problem", ignores the C-A frame (because it wasn't for him anyway), and considers the A-B frame to be done & gone. The switch, however, sees a collision, DROPS THE A-B FRAME, waits a moment, and resends the C-* frame. If it was part of a TCP/IP connection, the dropped A-B frame will eventually get re-transmitted, but not as the result of collision detection. Instead, the frame gets re-sent by layer 4 when host B fails to acknowledge it, AFTER waiting for a time-out. The net effect of this is extremely sluggish response, but only under certain traffic conditions. Fix the mismatch, and everything magically works fine.