From 497b212267596069fae3bc1eca25c0fe83df31fb Mon Sep 17 00:00:00 2001 From: Marius Wehrmann Date: Thu, 6 Nov 2025 12:37:59 +0100 Subject: [PATCH] New Package for known mt7915 tx issues as hotfix --- ffac-mt7915-maxinactivity/LICENSE | 24 +++++++++++++++++++ ffac-mt7915-maxinactivity/Makefile | 22 +++++++++++++++++ .../files/etc/config/mt7915-maxinactivity | 2 ++ .../gluon/upgrade/390-mt7915-maxinactivity | 14 +++++++++++ 4 files changed, 62 insertions(+) create mode 100644 ffac-mt7915-maxinactivity/LICENSE create mode 100644 ffac-mt7915-maxinactivity/Makefile create mode 100644 ffac-mt7915-maxinactivity/files/etc/config/mt7915-maxinactivity create mode 100755 ffac-mt7915-maxinactivity/luasrc/lib/gluon/upgrade/390-mt7915-maxinactivity diff --git a/ffac-mt7915-maxinactivity/LICENSE b/ffac-mt7915-maxinactivity/LICENSE new file mode 100644 index 0000000..9f4fa7a --- /dev/null +++ b/ffac-mt7915-maxinactivity/LICENSE @@ -0,0 +1,24 @@ +BSD 2-Clause License + +Copyright (c) 2025, Marius Wehrmann and Florian Maurer + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/ffac-mt7915-maxinactivity/Makefile b/ffac-mt7915-maxinactivity/Makefile new file mode 100644 index 0000000..756e107 --- /dev/null +++ b/ffac-mt7915-maxinactivity/Makefile @@ -0,0 +1,22 @@ +# SPDX-FileCopyrightText: 2025 Marius Wehrmann and Florian Maurer +# SPDX-License-Identifier: BSD-2-Clause +include $(TOPDIR)/rules.mk + +PKG_NAME:=ffac-mt7915-maxinactivity +PKG_VERSION:=1.0 +PKG_RELEASE:=1 + +PKG_LICENSE:=BSD-2-Clause + +include $(TOPDIR)/../package/gluon.mk + +define Package/$(PKG_NAME) + TITLE:=Set maxinactivity for hostapd as hotfix for mt7915 tx issues +endef + +define Package/$(PKG_NAME)/description + This Package fixes mt7915 disassoc issues and provides configurability of maxinactivity. + Further informations can be found here: https://github.com/openwrt/mt76/issues/1009 +endef + +$(eval $(call BuildPackageGluon,$(PKG_NAME))) diff --git a/ffac-mt7915-maxinactivity/files/etc/config/mt7915-maxinactivity b/ffac-mt7915-maxinactivity/files/etc/config/mt7915-maxinactivity new file mode 100644 index 0000000..d8c7a8e --- /dev/null +++ b/ffac-mt7915-maxinactivity/files/etc/config/mt7915-maxinactivity @@ -0,0 +1,2 @@ +config settings 'settings' + option max_inactivity_time '10' diff --git a/ffac-mt7915-maxinactivity/luasrc/lib/gluon/upgrade/390-mt7915-maxinactivity b/ffac-mt7915-maxinactivity/luasrc/lib/gluon/upgrade/390-mt7915-maxinactivity new file mode 100755 index 0000000..fd2ce48 --- /dev/null +++ b/ffac-mt7915-maxinactivity/luasrc/lib/gluon/upgrade/390-mt7915-maxinactivity @@ -0,0 +1,14 @@ +#!/usr/bin/lua + +local uci = require('simple-uci').cursor() +local max_inactivity_time = uci:get('mt7915-maxinactivity', 'settings', 'max_inactivity_time') + +-- fixes for mt7915 disassoc issues +-- https://github.com/openwrt/mt76/issues/1009 +uci:foreach('wireless', 'wifi-iface', function(config) + local name = config['.name'] + if name:match('^client_') then + uci:set('wireless', name, 'max_inactivity', max_inactivity_time) + end +end) +uci:commit('wireless')