#!/bin/sh

# Make sure link is up for at least 30 seconds.
wait_for_link_up() {
  DOWN=true
  while [ "$DOWN" = "true" ]; do
    LINK_STATE=$(cat /sys/class/net/lan0/operstate)
    if [ "$LINK_STATE" = "up" ]; then
      DOWN=false
      for N in $(seq 1 30); do
        sleep 1
        LINK_STATE=$(cat /sys/class/net/lan0/operstate)
        if [ "$LINK_STATE" = "down" ]; then
          DOWN=true
          break
        fi
      done
    else
      sleep 1
    fi
  done
}

# Tx_packets is always 0 if link was never up.
# Reboot if no TX packet after link is up for 30 seconds;
# assume ethernet controller is stuck.
reboot_if_no_tx() {
  TX_PACKETS=$(cat /sys/class/net/lan0/statistics/tx_packets)
  echo "lan0: TX packets = ${TX_PACKETS}" > /dev/kmsg

  if [ "${TX_PACKETS}" = "0" ]; then
    echo "lan0: TX broken, reboot to recover" > /dev/kmsg
    reboot
  fi
}

wait_for_link_up

reboot_if_no_tx
