Another thing to check would be to use ethtool to see what speed the raspberry pi ethernet port is reaching with your router.
This wasn't on a pi, but it'll look similar. Look at the Speed: line mostly, it'll say either 100MBit or 1000MBit depending on your router (some still only have 100MBit switches). Also look for Duplex: Full, I've had sometimes a config get set badly where it'll be half duplex and cause speed issues, usually due to a bad cable initially causing errors and bad autodetection.
> % sudo ethtool enp4s0
Settings for enp4s0:
Supported ports: [ TP ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Supported pause frame use: Symmetric
Supports auto-negotiation: Yes
Supported FEC modes: Not reported
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Advertised pause frame use: Symmetric
Advertised auto-negotiation: Yes
Advertised FEC modes: Not reported
Speed: 1000Mb/s
Duplex: Full
Port: Twisted Pair
PHYAD: 1
Transceiver: internal
Auto-negotiation: on
MDI-X: off (auto)
Supports Wake-on: pumbg
Wake-on: g
Current message level: 0x00000007 (7)
drv probe link
Link detected: yes
This wasn't on a pi, but it'll look similar. Look at the Speed: line mostly, it'll say either 100MBit or 1000MBit depending on your router (some still only have 100MBit switches). Also look for Duplex: Full, I've had sometimes a config get set badly where it'll be half duplex and cause speed issues, usually due to a bad cable initially causing errors and bad autodetection.