From abfe2f1bc2b0b34eee71764111b5e88ad6a7409e Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Sun, 13 Feb 2011 02:52:49 +0000 Subject: [PATCH] soloscli: allow user to apply settings to solos h/w before bringing up network (patch by Philip Prindeville) If the network/wan configuration contains "solos0" ... "solos3" then this list of strings will be applied to the FPGA when the hardware is hotplug added. The syntax should be "tag=value", as per the values enumerated in the solos-attr.c list. In the canned example, the modem is temporarily turned off, told to detect noise, told to disable annexes M and A (effectively putting it into pure ADSL mode), and re-activated. There's probably a more appropriate function name than "dialog" but that's what I came up with. Handle other ATM hardware (Eagle, etc) besides solos-pci. SVN-Revision: 25510 --- package/soloscli/Makefile | 2 ++ .../files/etc/hotplug.d/atm/15-solos-init | 26 +++++++++++++++++++ package/soloscli/files/etc/uci-default/solos | 15 +++++++++++ 3 files changed, 43 insertions(+) create mode 100644 package/soloscli/files/etc/hotplug.d/atm/15-solos-init create mode 100644 package/soloscli/files/etc/uci-default/solos diff --git a/package/soloscli/Makefile b/package/soloscli/Makefile index 611dbcc08f..1c2d998090 100644 --- a/package/soloscli/Makefile +++ b/package/soloscli/Makefile @@ -37,6 +37,8 @@ endef define Package/soloscli/install $(INSTALL_DIR) $(1)/usr/bin $(INSTALL_BIN) $(PKG_BUILD_DIR)/soloscli/soloscli $(1)/usr/bin/ + $(INSTALL_DIR) $(1)/etc/hotplug.d/atm + $(INSTALL_DATA) ./files/etc/hotplug.d/atm/15-solos-init $(1)/etc/hotplug.d/atm/ endef $(eval $(call BuildPackage,soloscli)) diff --git a/package/soloscli/files/etc/hotplug.d/atm/15-solos-init b/package/soloscli/files/etc/hotplug.d/atm/15-solos-init new file mode 100644 index 0000000000..36d13ea5a0 --- /dev/null +++ b/package/soloscli/files/etc/hotplug.d/atm/15-solos-init @@ -0,0 +1,26 @@ +#!/bin/sh + +dialog() { + local tag="$(echo "$1" | cut -d= -f1)" + local value="$(echo "$1" | cut -d= -f2-)" + local response + + response="$(soloscli -s "$port" "$tag" "$value")" + [ $? -ne 0 ] && { + logger "soloscli($port): $tag '$value' returns $response" + } +} + +if [ "$ACTION" = "add" ]; then + include /lib/network + scan_interfaces + + case $DEVICENAME in + solos-pci[0-3]) + port="${DEVICENAME#solos-pci}" + device="solos${port}" + + config_list_foreach wan "$device" dialog + ;; + esac +fi diff --git a/package/soloscli/files/etc/uci-default/solos b/package/soloscli/files/etc/uci-default/solos new file mode 100644 index 0000000000..7f69da62c6 --- /dev/null +++ b/package/soloscli/files/etc/uci-default/solos @@ -0,0 +1,15 @@ +#!/bin/sh + +uci batch <<__EOF__ + +delete network.wan.solos0 + +add_list network.wan.solos0="ActivateLine=Abort" +add_list network.wan.solos0="Retrain=EnableAll" +add_list network.wan.solos0="DetectNoise=Enable" +add_list network.wan.solos0="BisMCapability=Disable" +add_list network.wan.solos0="BisACapability=Disable" +add_list network.wan.solos0="ActivateLine=Start" + +commit network +__EOF__