summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjow <jow@3c298f89-4303-0410-b956-a3cf2f4a3e73>2011-05-03 19:39:13 +0000
committerjow <jow@3c298f89-4303-0410-b956-a3cf2f4a3e73>2011-05-03 19:39:13 +0000
commitfc910db123f3a873a1d4777b1bbb4dc10bf371af (patch)
tree0b1a817328611731c4021aef3397999b9da5188d
parent8ade1960dd8d45693d2502bd453041b258be82bc (diff)
[package] comgt: move 3g hotplug handling to tty subsystem, fixes race on coldplug (#9211)
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@26809 3c298f89-4303-0410-b956-a3cf2f4a3e73
-rw-r--r--package/comgt/Makefile4
-rw-r--r--package/comgt/files/3g.usb13
2 files changed, 10 insertions, 7 deletions
diff --git a/package/comgt/Makefile b/package/comgt/Makefile
index 7c120cb50..49cc08bbf 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 d5a38b8a4..ea2fba150 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