@lparker thanks for the update.
In the past, at different $WORK places, phys for NICs can get weird.
Sometimes, if you set one side fixed, say 100M, Full but the other side is set to autonegotiate, the speed can get figured out but the duplex can't. It's the way the hardware works, so you wind up with one side Txing at 100M,Full the other side receiving at 100M, Half. That cuts your speed right in half easily. Most modern sw that lets you "fix" a port, actually winds up simply restricting the autoneg options.
If you add a switch in between the laptop and it works, then I would check things like "fixed" or "autoneg".
Cables could affect ability to autoneg, especially at the higher speeds.