From: Michael Tremer# Date: Tue, 14 Aug 2012 13:44:19 +0000 (+0200) Subject: codel: Enable fq_codel on all devices. X-Git-Tag: v2.13-beta1~220^2~2^2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=3e78d712ccafa64c78439c02d2fae5a3615b0cd5;p=people%2Fms%2Fipfire-2.x.git codel: Enable fq_codel on all devices. Except loopback. --- diff --git a/config/rootfiles/common/udev b/config/rootfiles/common/udev index 5e5cb5a0d8..58df07cee3 100644 --- a/config/rootfiles/common/udev +++ b/config/rootfiles/common/udev @@ -31,6 +31,7 @@ lib/udev #lib/udev/devices/stdin #lib/udev/devices/stdout #lib/udev/edd_id +#lib/udev/enable_codel #lib/udev/firmware.sh #lib/udev/path_id #lib/udev/rules.d @@ -43,6 +44,7 @@ lib/udev #lib/udev/rules.d/61-persistent-storage-edd.rules #lib/udev/rules.d/80-drivers.rules #lib/udev/rules.d/95-udev-late.rules +#lib/udev/rules.d/99-codel.rules #lib/udev/scsi_id #lib/udev/usb_id #lib/udev/vol_id diff --git a/config/udev/99-codel.rules b/config/udev/99-codel.rules new file mode 100644 index 0000000000..d6747ba04e --- /dev/null +++ b/config/udev/99-codel.rules @@ -0,0 +1,2 @@ +# Call the enable codel script. +SUBSYSTEM=="net", RUN+="/lib/udev/enable_codel" diff --git a/config/udev/enable_codel b/config/udev/enable_codel new file mode 100644 index 0000000000..6cafd9b268 --- /dev/null +++ b/config/udev/enable_codel @@ -0,0 +1,57 @@ +#!/bin/bash +############################################################################ +# # +# This file is part of the IPFire Firewall. # +# # +# IPFire is free software; you can redistribute it and/or modify # +# it under the terms of the GNU General Public License as published by # +# the Free Software Foundation; either version 2 of the License, or # +# (at your option) any later version. # +# # +# IPFire is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with IPFire; if not, write to the Free Software # +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # +# # +# Copyright (C) 2007-2012 IPFire Team . # +# # +############################################################################ + +LOG_FACILITY="codel" + +function log() { + logger -t "${LOG_FACILITY}" $@ +} + +if [ -z "${INTERFACE}" ]; then + echo "INTERFACE variable was not set." >&2 + exit 1 +fi + +# Do nothing for the loopback device. +[ "${INTERFACE}" = "lo" ] && exit 0 + +case "${ACTION}" in + add|register) + # Change root qdisc to use fq_codel. + /sbin/tc qdisc add root dev ${INTERFACE} fq_codel + ret=$? + + if [ ${ret} -eq 0 ]; then + log "Codel AQM has been enabled on '${INTERFACE}'." + else + log "Codel AQM could not be enabled on '${INTERFACE}'. Error code: ${ret}" + exit ${ret} + fi + ;; + + remove|unregister) + # Nothing to do here. + ;; +esac + +exit 0 diff --git a/lfs/udev b/lfs/udev index decdce8bbb..5b8b602737 100644 --- a/lfs/udev +++ b/lfs/udev @@ -105,5 +105,11 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) chmod 755 /etc/udev/dvb.sh touch /etc/udev/rules.d/30-persistent-network.rules cp -vf $(DIR_SRC)/config/udev/blacklist /etc/modprobe.d/blacklist + + # Install codel rules. + install -v -m 644 $(DIR_SRC)/config/udev/99-codel.rules \ + /lib/udev/rules.d + install -m 755 $(DIR_SRC)/config/udev/enable_codel \ + /lib/udev/enable_codel @rm -rf $(DIR_APP) @$(POSTBUILD)