Commit 20ec98ae authored by Tim Niemeyer's avatar Tim Niemeyer
Browse files

Add ath9k-watchdog

This is https://github.com/ff-kbu/ath9k-watchdog/

 with
some minor modifications. Our code doesn't submit the
complete dmesg.
Signed-off-by: default avatarTim Niemeyer <tim.niemeyer@mastersword.de>
parent 0a956afa
#
# Copyright (C) 2012 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
include $(TOPDIR)/rules.mk
PKG_NAME:=ath9k-watchdog
PKG_VERSION:=1
PKG_RELEASE:=1
include $(INCLUDE_DIR)/package.mk
define Package/ath9k-watchdog
SECTION:=utils
CATEGORY:=Utilities
TITLE:=Watchdog for ath9k-outages
endef
define Package/ath9k-watchdog/description
If pattern "ResetWLAN" is seen in the logs, wifi reset is executed
endef
define Package/ath9k-watchdog/install
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_BIN) files/ath9k-watchdog $(1)/usr/sbin/
$(INSTALL_BIN) files/ath9k-watchdog-pm $(1)/usr/sbin/
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_DIR) $(1)/etc/init.d/
$(INSTALL_BIN) files/ath9k-watchdog.init $(1)/etc/init.d/ath9k-watchdog
endef
define Build/Prepare
mkdir -p $(PKG_BUILD_DIR)
endef
define Build/Configure
endef
define Build/Compile
endef
$(eval $(call BuildPackage,ath9k-watchdog))
#!/bin/sh
mkdir -p /usr/lib/ath9k-watchdog
logread -f | while read line
do
case "$line" in
*"Could not stop RX"*)
hostname=$(cat /proc/sys/kernel/hostname)
if [ "$hostname" == "OpenWrt" ]; then
hostname=""
fi
if [ "$hostname" == "" ]; then
hostname=$(awk '{ if (mac) next; mac=toupper($1); gsub(":", "", mac); print mac }' /sys/class/net/br-mesh/address /sys/class/net/eth0/address /sys/class/net/ath0/address 2>/dev/null)
fi
# Perform post-mortem dump
tstmp=$(/bin/date +%s)
echo -n "hostname=${hostname}&tstmp=${tstmp}" > /tmp/$tstmp
# Move into upload directory
mv /tmp/$tstmp /usr/lib/ath9k-watchdog
#Bye
/sbin/reboot
;;
*)
;;
esac
done
#!/bin/sh
# Save log
mkdir -p /usr/lib/ath9k-watchdog
UPLOAD_URL='http://[$(uci get configurator.@api[0].ipv6_address)%$(uci get configurator.@api[0].ipv6_interface)]/ath9k-crash/'
WGETC=$(which wget)
# CD to avoid annoying prefixes
cd /usr/lib/ath9k-watchdog
#Poll directory every 10 secs
while [ 1 = 1 ]
do
for f in $(ls .); do
$WGETC -q $UPLOAD_URL?$(cat $f) -O - && rm $f
done
sleep 10
# If there are more than 15 files, assume that files cannot be uploaded
# Delete oldest files in order to avoid jffs-overflow
ls -t | sed -e '1,15d' | xargs -d '\n' rm 2> /dev/null
done
#!/bin/sh /etc/rc.common
START=95
APP=ath9k-watchdog
POSTM=ath9k-watchdog-pm
PID_FILE=/var/run/$APP.pid
POSTM_PID_FILE=/var/run/$POSTM.pid
start() {
if [ -f $PID_FILE ]; then
echo "Ath9k-watchdog: Already Running"
else
start-stop-daemon -S -x $APP -p $PID_FILE -m -b
fi
if [ -f $POSTM_PID_FILE ]; then
echo "ath9k-watchdog-pm: Already Running"
else
start-stop-daemon -S -x $POSTM -p $POSTM_PID_FILE -m -b
fi
}
stop() {
start-stop-daemon -K -n $APP -p $PID_FILE -s TERM
start-stop-daemon -K -n $POSTM -p $POSTM_PID_FILE -s TERM
rm -rf $PID_FILE
rm -rf $POSTM_PID_FILE
}
\ No newline at end of file
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment