speed 100 line configures the interface down to 100BASE-TX. If that works correctly and 1000BASE-T doesn’t (the default, fully autonegotiated mode), the likely cause is a cable fault.
100BASE-TX and 10BASE-T use only two pairs of the four-pair cable. These pairs are also the ones used for autonegotiation. So, if one of the other pairs is at fault (or both), 1000BASE-T is still autonegotiated, but it can’t complete the link due to the PCS sublayer failing to ‘up’ each lane/pair separately. This causes the port to fall back to autonegotiation, ad nauseam.
Some devices fall back to 100BASE-TX in such a case but that is not a given. Try a known-good cable.