To add to what @fakemanhk said here, a MT7621 maintainer on upstream Linux was able to achieve full-duplex 1 Gbps on many MT7621-based devices simply by changing how the WAN port was connected to the CPU:
This involved no change to the Linux kernel or any OpenWrt code. All that was needed was updating the device trees of the relevant devices. (Device trees aren't specific to OpenWrt by the way, they're a common sight in embedded Linux deployments.)