To enable auto-negotiation on ports use the client_drivshell tool. To enable it on e.g. the first switch port simply run:
client_drivshell port xe0 AN=on
Use the following command to print the current port configuration:
The port xe0 (port 1) should now have auto-negotiation enabled (YES) and since AN=off is the default, all other ports should have set it to NO. In the example below, a 1G active copper SFP is attached to port 1 and the speed has been set accordingly. All other ports have set the speed to 10G by default.
$ client_drivshell ports ena/ speed/ link auto STP lrn inter max loop port link duplex scan neg? state pause discrd ops face frame back xe0( 1) up 1G FD SW Yes Forward None F GMII 9412 xe1( 2) up 10G FD SW No Forward None F SFI 9412
To disable auto-negotiation run the following command:
client_drivshell port xe0 AN=off SP=10000
The parameter SP takes the speed you want to configure, in the example above it is 10G. For information how to verify your configuration, please see the section above.
Switch port configuration can be persisted across restarts. In order to turn off auto-negotiation for the ports xe0 and xe1 one would run
client_drivshell port xe0 AN=off SP=10000 client_drivshell port xe1 AN=off SP=10000
To make the commands persist one would add the following lines to the file /etc/ofdpa/rc.soc
port xe0 AN=off SP=10000 port xe1 AN=off SP=10000 exit
Note the absence of client_drivshell and the single exit statement at the end.
Auto-negotiation is a property of physical ports, while bond interfaces are logical ports. So any auto-negotiation configuration needs to be set for the individual bond members.