From ab712fae0f7383a26f5b8f14e9505d28e848c641 Mon Sep 17 00:00:00 2001 From: Helge Jung <hej@c3pb.de> Date: Mon, 7 Jul 2014 19:27:22 +0200 Subject: [PATCH] new package 'ffpb-wifi-blackout-workaround' --- ffpb/ffpb-wifi-blackout-workaround/Makefile | 36 ++++++++++++++++ .../etc/hotplug.d/iface/99-ath9k_disable_ani | 41 +++++++++++++++++++ 2 files changed, 77 insertions(+) create mode 100644 ffpb/ffpb-wifi-blackout-workaround/Makefile create mode 100644 ffpb/ffpb-wifi-blackout-workaround/files/etc/hotplug.d/iface/99-ath9k_disable_ani diff --git a/ffpb/ffpb-wifi-blackout-workaround/Makefile b/ffpb/ffpb-wifi-blackout-workaround/Makefile new file mode 100644 index 0000000..6b71b53 --- /dev/null +++ b/ffpb/ffpb-wifi-blackout-workaround/Makefile @@ -0,0 +1,36 @@ +include $(TOPDIR)/rules.mk + +PKG_NAME:=ffpb-wifi-blackout-workaround +PKG_VERSION:=1 +PKG_RELEASE:=$(GLUON_VERSION).$(GLUON_SITE_CODE)-$(GLUON_RELEASE).$(GLUON_CONFIG_VERSION) + +PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME) + +include $(INCLUDE_DIR)/package.mk + +define Package/ffpb-wifi-blackout-workaround + SECTION:=ffpb + CATEGORY:=workarounds + TITLE:=WiFi-Blackout workaround + DEPENDS:=+busybox +endef + +define Package/ffpb-wifi-blackout-workaround/description + Disables ANI when the "stable" firmware branch is used. +endef + +define Build/Prepare + mkdir -p $(PKG_BUILD_DIR) +endef + +define Build/Configure +endef + +define Build/Compile +endef + +define Package/ffpb-wifi-blackout-workaround/install + $(CP) ./files/* $(1)/ +endef + +$(eval $(call BuildPackage,ffpb-wifi-blackout-workaround)) diff --git a/ffpb/ffpb-wifi-blackout-workaround/files/etc/hotplug.d/iface/99-ath9k_disable_ani b/ffpb/ffpb-wifi-blackout-workaround/files/etc/hotplug.d/iface/99-ath9k_disable_ani new file mode 100644 index 0000000..cc41b3d --- /dev/null +++ b/ffpb/ffpb-wifi-blackout-workaround/files/etc/hotplug.d/iface/99-ath9k_disable_ani @@ -0,0 +1,41 @@ +#!/bin/sh +# +# "ANI-thing is better than no WiFi"-Workaround +# +# In order to avoid further WiFi-Blackouts that *might* be caused by a buggy +# ANI feature in the ath9k kernel module, we disable ANI for nodes using the +# "stable" firmware branch until it got fixed in OpenWRT completely. + +# Don't need to do anything, unless the script gets triggered by an "ifup" +# event. +[[ "$ACTION" != "ifup" ]] && exit 0; +[[ "$INTERFACE" != "mesh_radio0" && "$INTERFACE" != "client" ]] && exit 0; + +# Test whether disabling ANI is applicable or not +if [ ! -e "/sys/kernel/debug/ieee80211/phy0/ath9k/ani" ] ; then + logger -s -t ath9k-disable-ani -p local0.notice \ + "Not an ath9k device with ANI. Aborting." + exit 0 +fi + +# Load helper functions and determine the current branch +. /lib/functions.sh + +config_load autoupdater + +# Test whether this devices has the stable or the testing firmware +config_get fw_branch "settings" "branch" + +new_ani_state=1 +log_msg="Current firmware branch is: ${fw_branch}" +if [ "$fw_branch" == "stable" ] ; then + new_ani_state=0 + log_msg="${log_msg} (disabling ANI)" +else + log_msg="${log_msg} (enabling ANI)" +fi + +# enable/disable feature +logger -s -t ath9k-disable-ani -p local0.info $log_msg +/bin/echo ${new_ani_state} > /sys/kernel/debug/ieee80211/phy0/ath9k/ani + -- GitLab