dhcpcd: rework mtu handling on buggy nic's

some nic's loose the carrier after setting new mtu.

Signed-off-by: Arne Fitzenreiter <arne_f@ipfire.org>
This commit is contained in:
Arne Fitzenreiter
2016-02-01 07:28:03 +01:00
parent 57d98918a1
commit 552fb4b8b5
4 changed files with 35 additions and 9 deletions

View File

@@ -0,0 +1,31 @@
# Configure the MTU for the interface
eval $(/usr/local/bin/readhash /var/ipfire/ethernet/settings)
set_mtu()
{
local mtu=$1
ip link set "$interface" mtu "$mtu"
# test for buggy nic that lose link at mtu set...
carrier=`cat /sys/class/net/$interface/carrier`
if [ "$carrier" == "0" ]; then
syslog info "Warning! Carrier loss after MTU set. Reinit ..."
ip link set "$interface" down
ip link set "$interface" up
fi
}
if [ -n "$new_interface_mtu" ] && $if_up; then
if [ $RED_DHCP_FORCE_MTU -ge 576 ]; then
new_interface_mtu=$RED_DHCP_FORCE_MTU
fi
if [ ! "$new_interface_mtu" == "$ifmtu" ]; then
# The smalled MTU dhcpcd can work with is 576
if [ "$new_interface_mtu" -gt 576 ]; then
if set_mtu "$new_interface_mtu"; then
syslog info "MTU set to $new_interface_mtu"
fi
fi
fi
fi