From: Jo-Philipp Wich Date: Tue, 3 May 2011 19:39:13 +0000 (+0000) Subject: [package] comgt: move 3g hotplug handling to tty subsystem, fixes race on coldplug... X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=e50448126f36e854b2ea94625a0fe219afee6950;p=openwrt%2Fsvn-archive%2Farchive.git [package] comgt: move 3g hotplug handling to tty subsystem, fixes race on coldplug (#9211) SVN-Revision: 26809 --- diff --git a/package/comgt/Makefile b/package/comgt/Makefile index 7c120cb50d..49cc08bbf1 100644 --- a/package/comgt/Makefile +++ b/package/comgt/Makefile @@ -54,8 +54,8 @@ define Package/comgt/install $(INSTALL_DATA) ./files/3g.button $(1)/etc/hotplug.d/button/05-3g $(INSTALL_DIR) $(1)/etc/hotplug.d/iface $(INSTALL_DATA) ./files/3g.iface $(1)/etc/hotplug.d/iface/05-3g - $(INSTALL_DIR) $(1)/etc/hotplug.d/usb - $(INSTALL_DATA) ./files/3g.usb $(1)/etc/hotplug.d/usb/30-3g + $(INSTALL_DIR) $(1)/etc/hotplug.d/tty + $(INSTALL_DATA) ./files/3g.usb $(1)/etc/hotplug.d/tty/30-3g $(INSTALL_DIR) $(1)/etc/gcom $(INSTALL_DATA) ./files/setpin.gcom $(1)/etc/gcom/setpin.gcom $(INSTALL_DATA) ./files/setmode.gcom $(1)/etc/gcom/setmode.gcom diff --git a/package/comgt/files/3g.usb b/package/comgt/files/3g.usb index d5a38b8a4c..ea2fba1509 100644 --- a/package/comgt/files/3g.usb +++ b/package/comgt/files/3g.usb @@ -22,8 +22,11 @@ find_3g_iface() { config_get dev "$cfg" device if [ "${dev##*/}" = "${tty##*/}" ]; then - log "Starting interface $cfg for device ${tty##*/}" - ( sleep 1; /sbin/ifup "$cfg" ) & + [ -z "$(ls /var/lock | grep ${dev##*/})" ] && { + log "Starting interface $cfg for device ${dev##*/}" + sleep 1 + /sbin/ifup "$cfg" + } fi } } @@ -31,13 +34,13 @@ find_3g_iface() { if [ "$ACTION" = add ]; then case "$DEVICENAME" in - *-*:*.*) config_load network;; + tty*) config_load network;; *) exit 0;; esac local tty - for tty in /sys/$DEVPATH/ttyUSB* /sys/$DEVPATH/tty/ttyACM* /sys/$DEVPATH/tty/ttyHS*; do - [ -d "$tty" ] || continue + for tty in /dev/ttyUSB* /dev/ttyACM* /dev/ttyHS*; do + [ -e "$tty" ] || continue config_foreach find_3g_iface interface "$tty" done fi