Imx8 force ethernet 1Gbps

In general ethernet speed is decided by negotiation, but in my product I want to make imx8 board’s ethernet always work on 1Gbps speed, but I failed.

imx8 board connects my laptap directly. I run command:

root@apalis-imx8:~# ethtool -s eth0 speed 1000 duplex full autoneg off
root@apalis-imx8:~# [   74.808484] fec 5b040000.ethernet eth0: Link is Down

then my laptop shows disconnection with imx8 board. then I run the following commands:

root@apalis-imx8:~# ifconfig eth0 down
    [  130.431701] fec 5b040000.ethernet eth0: MDIO write timeout
    [  130.471708] fec 5b040000.ethernet eth0: MDIO write timeout
    [  130.569709] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready

root@apalis-imx8:~# ifconfig eth0 up
    [  136.753100] Micrel KSZ9031 Gigabit PHY 5b040000.ethernet-1:07: attached PHY driver [Micrel KSZ9031 Gigabit PHY] (mii_bus:phy_addr=5b040000.ethernet-1:07, irq=207)
    [  136.768686] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready

however, I can set the speed 100Mbps:

root@apalis-imx8:~# ethtool -s eth0 speed 100 duplex full autoneg off

In addition, I set ethernet speed 1Gbps on my laptap, then imx8 board connects it by 1Gbps. I wonder why my laptap is ok, but imx8 is not ok.

so how can I fix my ethernet speed to 1Gbps on imx8 board, not peer side because I can not ask customer to change their network settings.

I guess, what you are seeing is a classic duplex mismatch. Wondering what exactly it is that you are trying to achieve?