| #!/bin/bash |
| set -e |
| |
| # This script tries to periodically set the passed in network interface to |
| # 1 gigabit. It will run until it is successful or it hits its max retries. |
| # This script is necessary because there is no clear indication from the kernel |
| # NCSI stack when it is in a proper state for this speed setting to succeed |
| |
| # This script expects 1 parameter |
| # - Network interface to configure (i.e. eth0, eth1, ...) |
| |
| if [ $# -ne 1 ]; then |
| echo "Required network interface not provided" |
| exit 1 |
| fi |
| |
| netIface=$1 |
| |
| # 60s total: 12 tries with 5s sleeps |
| for i in {1..12} |
| do |
| echo "attempt number $i: setting $netIface to 1 gigabit" |
| rc=0 |
| # package 0, channel 0, oem command, see Intel I210 datasheet section 10.6.3.10.1 |
| /usr/libexec/ncsi-netlink-ifindex "$netIface" -p 0 -c 0 -o 00000157200001 || rc=$? |
| if [ $rc -ne 0 ]; then |
| echo "error code is $rc setting $netIface to 1 gigabit, sleep and retry" |
| sleep 5 |
| else |
| echo "success setting $netIface to 1 gigabit" |
| exit 0 |
| fi |
| |
| done |
| |
| echo "ERROR: all retry attempts exhausted, unable to configure $netIface to 1 gigabit" |
| exit 1 |