#!/bin/sh
################ bugfix #################################
# bei meinem DSL-Zugang mit pppoe-Einwahl tritt folgendes Problem auf:
# wird nach einem Neustart oder auf der Konsole die Einwahl mit 'ifup wan'
# durchgeführt, so ist die aufgebaute Verbindung sehr instabil.
# Bei Tests zeigte sich eine starke Erhöhung der Fehler auf dem zugehörigen
# Device
#
# eth1      Link encap:Ethernet  HWaddr 00:11:D8:30:C0:39  
#          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
#          RX packets:327657 errors:149 dropped:29 overruns:0 frame:74
#          TX packets:277171 errors:0 dropped:0 overruns:0 carrier:10
#          collisions:137 txqueuelen:1000 
#          RX bytes:126398488 (120.5 MiB)  TX bytes:74413108 (70.9 MiB)
#          Interrupt:4 
#
# Ein Neustart des WAN-Devices mit 'ifdown wan; ifup wan' zeigt keine Besserung,
# ein erzwungener Neustart durch 'killall pppd' ebensowenig. Lediglich das Trennen
# des Ethernet-Kabels zwischen AP und Modem bzw. ein Neustart des zur pppoe-Einwahl
# genutzten Devices schafft Abhilfe.
#
# Der Effekt konnte auf zwei APs bei der Einwahl über einen spezifischen Zugang
# (mit einem spezifischen Modem) fortlaufend reproduziert werden. Die Einwahl mit
# einen PC ist hingegen problemlos möglich und immer erfolgreich.
#
# Da bisher keine andere Lösung vorliegt, es aber Priorität hat, dass nach einem Neustart
# die Verbindung wieder in voller Qualität funktioniert, dieser bugfix.

if [ "$(nvram get wan_proto)" = "pppoe" ]; then
	(while :; do
		if [ -n "$(grep $(nvram get wan_ifname) /proc/net/dev)" ]; then
			logger -t S99done "restarting WAN-device (dirty bugfix)"
			ifconfig $(nvram get wan_device) down
			ifconfig $(nvram get wan_device) up
			break
		else
			sleep 10
		fi
	done 2>&1 >/dev/null ) &
fi
