From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mout.gmx.net (mout.gmx.net [212.227.17.20]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client CN "mout.gmx.net", Issuer "TeleSec ServerPass DE-1" (verified OK)) by huchra.bufferbloat.net (Postfix) with ESMTPS id DFB3421F36C for ; Sun, 15 Feb 2015 07:48:18 -0800 (PST) Received: from hms-beagle.home.lan ([217.247.217.70]) by mail.gmx.com (mrgmx101) with ESMTPSA (Nemesis) id 0M20Jj-1XZAYx0uzb-00u3xu; Sun, 15 Feb 2015 16:48:12 +0100 Content-Type: multipart/mixed; boundary="Apple-Mail=_02D5F72F-C668-4A15-BC91-5DB1B249BF03" Mime-Version: 1.0 (Mac OS X Mail 7.3 \(1878.6\)) From: Sebastian Moeller In-Reply-To: <87vbj3i5hz.fsf@toke.dk> Date: Sun, 15 Feb 2015 16:48:09 +0100 Message-Id: References: <54E0AFB2.5040806@gmail.com> <87vbj3i5hz.fsf@toke.dk> To: =?iso-8859-1?Q?Toke_H=F8iland-J=F8rgensen?= X-Mailer: Apple Mail (2.1878.6) X-Provags-ID: V03:K0:vis2UC6BlZLACX4rzb0YRs6qI1ZwgpFU0gp4d++NEpfyoVS1uPc bSdqIVbWIpkWJarEGDN/jxC2ZKYEaOGB677ynpcnratAWzp3O7kR8ZFCPtWxvg0CV33AQzY Qw+5q6dxO43d+tgtt+Jgo8/kzCdLbCVC2+RnAy2dlLKIoq5/pU9ooI5xi+7N3ipIzSzYkyG SPdG4B3qT0lG5IxR9aGsA== X-UI-Out-Filterresults: notjunk:1; Cc: Alan Jenkins , openwrt-devel@lists.openwrt.org, luis@bitamins.net, cerowrt-devel@lists.bufferbloat.net Subject: Re: [Cerowrt-devel] [sqm-scripts] not started at boot? X-BeenThere: cerowrt-devel@lists.bufferbloat.net X-Mailman-Version: 2.1.13 Precedence: list List-Id: Development issues regarding the cerowrt test router project List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 15 Feb 2015 15:48:48 -0000 --Apple-Mail=_02D5F72F-C668-4A15-BC91-5DB1B249BF03 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=iso-8859-1 Hi Toke, On Feb 15, 2015, at 16:00 , Toke H=F8iland-J=F8rgensen = wrote: > Alan Jenkins writes: >=20 >> It's very effective, but I notice SQM isn't applied at boot time. The >> system log complains about pppoe-wan interface not existing, when the >> sqm init script is started. >=20 > Ah, that makes sense I suppose: PPPOE is probably brought up too late > for the SQM init script to pick it up. >=20 >> qos-scripts has a hotplug script, so I copied it for sqm and the >> problem is "fixed". Though my stupid script re-runs the sqm as every >> single network interface comes up, so it spams the log and probably >> slows things down a bit. (Maybe sqm script also wants to not be so >> noisy in the log) >=20 > I'm attaching an updated version of the run.sh script which should > detect when it is run from hotplug and only apply the SQM config to = the > hotplugged interface. Could you verify that this works for you? If so, > I'll push an update with the revision and include a hotplug script. :) I am not sure that this works as intended. The first thing = run.sh does is take down all running SQM instances: PROTO_STATE_FILE_LIST=3D$( ls = ${ACTIVE_STATE_FILE_DIR}/${ACTIVE_STATE_PREFIX}* 2> /dev/null ) for STATE_FILE in ${PROTO_STATE_FILE_LIST} ; do if [ -f ${STATE_FILE} ] ; then STATE_FILE_BASE_NAME=3D$( basename ${STATE_FILE} ) = CURRENT_INTERFACE=3D${STATE_FILE_BASE_NAME:${#ACTIVE_STATE_PREFIX}:$(( = ${#STATE_FILE_BASE_NAME} - ${#ACTIVE_STATE_PREFIX} ))} =20 logger -t SQM -s "${0} Stopping SQM on interface: = ${CURRENT_INTERFACE}" /usr/lib/sqm/stop.sh ${CURRENT_INTERFACE} rm ${STATE_FILE} # well, we stop it so it is not running = anymore and hence no active state file needed... fi done before diving into the individual coin fig sections. And all instances = that were stopped better be restarted unless their configuration = changed. (The current SQM scripts allow multiple concurrent active = instances,it would be nice to keep that capability). Best Regards Sebastian >=20 > -Toke >=20 --Apple-Mail=_02D5F72F-C668-4A15-BC91-5DB1B249BF03 Content-Disposition: attachment; filename=run.sh Content-Type: text/x-sh; name="run.sh" Content-Transfer-Encoding: quoted-printable #!/bin/sh # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2 as # published by the Free Software Foundation. # # Copyright (C) 2012-4 Michael D. Taht, Toke H=C3=B8iland-J=C3=B8rge= nsen, Sebastian Moeller . /lib/functions.sh STOP=3D$1 ACTIVE_STATE_PREFIX=3D"SQM_active_on_" ACTIVE_STATE_FILE_DIR=3D"/var/run/SQM" mkdir -p ${ACTIVE_STATE_FILE_DIR} # the current uci config file does not necessarily contain sections for = all interfaces with active # SQM instances, so use the ACTIVE_STATE_FILES to detect the interfaces = on which to stop SQM. # Currently the .qos scripts start with stopping any existing traffic = shaping so this should not # effectively change anything... PROTO_STATE_FILE_LIST=3D$( ls = ${ACTIVE_STATE_FILE_DIR}/${ACTIVE_STATE_PREFIX}* 2> /dev/null ) for STATE_FILE in ${PROTO_STATE_FILE_LIST} ; do if [ -f ${STATE_FILE} ] ; then STATE_FILE_BASE_NAME=3D$( basename ${STATE_FILE} ) = CURRENT_INTERFACE=3D${STATE_FILE_BASE_NAME:${#ACTIVE_STATE_PREFIX}:$(( = ${#STATE_FILE_BASE_NAME} - ${#ACTIVE_STATE_PREFIX} ))} =20 logger -t SQM -s "${0} Stopping SQM on interface: = ${CURRENT_INTERFACE}" /usr/lib/sqm/stop.sh ${CURRENT_INTERFACE} rm ${STATE_FILE} # well, we stop it so it is not running = anymore and hence no active state file needed... fi done config_load sqm run_simple_qos() { local section=3D"$1" export IFACE=3D$(config_get "$section" interface) # If called from hotplug, $DEVICE will be the interface that got = hotplugged, so ignore anything else [ -n "$DEVICE" -a "$DEVICE" !=3D "$IFACE" ] && return = ACTIVE_STATE_FILE_FQN=3D"${ACTIVE_STATE_FILE_DIR}/${ACTIVE_STATE_PREFIX}${= IFACE}" # this marks interfaces as active with SQM [ -f "${ACTIVE_STATE_FILE_FQN}" ] && logger -t SQM -s "Uh, oh, = ${ACTIVE_STATE_FILE_FQN} should already be stopped." # Not supposed = to happen if [ $(config_get "$section" enabled) -ne 1 ]; then if [ -f "${ACTIVE_STATE_FILE_FQN}" ]; then # this should not be possible, delete after testing local SECTION_STOP=3D"stop" # it seems the user just = de-selected enable, so stop the active SQM else logger -t SQM -s "${0} SQM for interface ${IFACE} is not = enabled, skipping over..." return 0 # since SQM is not active on the current = interface nothing to do here fi fi export UPLINK=3D$(config_get "$section" upload) export DOWNLINK=3D$(config_get "$section" download) export LLAM=3D$(config_get "$section" = linklayer_adaptation_mechanism) export LINKLAYER=3D$(config_get "$section" linklayer) export OVERHEAD=3D$(config_get "$section" overhead) export STAB_MTU=3D$(config_get "$section" tcMTU) export STAB_TSIZE=3D$(config_get "$section" tcTSIZE) export STAB_MPU=3D$(config_get "$section" tcMPU) export ILIMIT=3D$(config_get "$section" ilimit) export ELIMIT=3D$(config_get "$section" elimit) export ITARGET=3D$(config_get "$section" itarget) export ETARGET=3D$(config_get "$section" etarget) export IECN=3D$(config_get "$section" ingress_ecn) export EECN=3D$(config_get "$section" egress_ecn) export IQDISC_OPTS=3D$(config_get "$section" iqdisc_opts) export EQDISC_OPTS=3D$(config_get "$section" eqdisc_opts) export TARGET=3D$(config_get "$section" target) export SQUASH_DSCP=3D$(config_get "$section" squash_dscp) export SQUASH_INGRESS=3D$(config_get "$section" squash_ingress) export QDISC=3D$(config_get "$section" qdisc) export SCRIPT=3D/usr/lib/sqm/$(config_get "$section" script) # # there should be nothing left to stop, so just avoid calling = the script if [ "$STOP" =3D=3D "stop" -o "$SECTION_STOP" =3D=3D "stop" ]; then=20 # /usr/lib/sqm/stop.sh # [ -f ${ACTIVE_STATE_FILE_FQN} ] && rm = ${ACTIVE_STATE_FILE_FQN} # conditional to avoid errors = ACTIVE_STATE_FILE_FQN does not exist anymore # $(config_set "$section" enabled 0) # this does not save to = the config file only to the loaded memory representation logger -t SQM -s "${0} SQM qdiscs on ${IFACE} removed" return 0 fi logger -t SQM -s "${0} Queue Setup Script: ${SCRIPT}" [ -x "$SCRIPT" ] && { $SCRIPT ; touch ${ACTIVE_STATE_FILE_FQN}; = } } config_foreach run_simple_qos --Apple-Mail=_02D5F72F-C668-4A15-BC91-5DB1B249BF03 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=us-ascii > _______________________________________________ > Cerowrt-devel mailing list > Cerowrt-devel@lists.bufferbloat.net > https://lists.bufferbloat.net/listinfo/cerowrt-devel --Apple-Mail=_02D5F72F-C668-4A15-BC91-5DB1B249BF03--