Compare commits

...

17 Commits

Author SHA1 Message Date
jaspreetsachdev
a01b9ac0f4 Merge pull request #1002 from Telecominfraproject/main
4.2.1 merge
2026-02-05 13:29:08 -05:00
John Crispin
d7b578c58d Revert "profiles/edgecore_eap111.yml: use the sdk kernel for v4.2"
This reverts commit 20f5fa0284.

Signed-off-by: John Crispin <john@phrozen.org>
2026-02-05 16:57:15 +01:00
Arif Alam
bab5db5bf5 cloud_discovery: check operational cert in /etc/ucentral to determine reenroll
Signed-off-by: Arif Alam <arif.alam@netexperience.com>
2026-02-05 08:35:41 +01:00
John Crispin
be9783e7db ratelimit: use sfq leaf qdisc on mediatek targets
fq_codel is not available on mediatek platforms. Replace it with sfq
during package install when CONFIG_TARGET_mediatek is set.

Fixes: WIFI-15285
Signed-off-by: John Crispin <john@phrozen.org>
2026-01-30 09:40:12 +01:00
John Crispin
e928d555e9 qca-wifi-7: fix syntax error in ipq53xx platform upgrade script
Remove extra 'fi' in edgecore,eap105 case block introduced by
commit 1d4cbc46 which replaced a two-level if/else with a
three-level nesting but kept both original closing 'fi' lines.

Fixes: 1d4cbc46 ("ipq807x_v5.4, qca-wifi-7: enable/disable boot bank switch based on upgrade_available value during fw upgrade for Edgecore APs")
Signed-off-by: John Crispin <john@phrozen.org>
2026-01-29 10:14:07 +01:00
John Crispin
ce1f7df73a certificates: unmount empty alternate bank to preserve birth certs
On a factory fresh dual boot bank device with birth certificates only
in the primary bank, the alternate bank mount would shadow the primary
with an empty filesystem. The script then exited with failure despite
birth certificates being available underneath.

After checking the alternate bank, unmount it if empty and re-check so
the primary bank's birth certificates remain accessible for EST
enrolment.

Fixes: WIFI-15292
Signed-off-by: John Crispin <john@phrozen.org>
2026-01-28 09:46:07 +01:00
Venkat Chimata
e7af38b198 rrmd: Update Tx Power control to use interface instead of wiphy
1. Update TX power control to use interface (dev) instead of wiphy, improving
   compatibility on Wi-Fi 7 platforms.
2. Introduce bssid_to_ifname() helper to reliably map BSSID to interface name.
3. Add a short delay (10 milliseconds) after setting TX power to allow
   driver/firmware state to settle before reading back the value.

Tested on EAP014 and EAP105.

Fixes WIFI-14964

Signed-off-by: Venkat Chimata <venkat@nearhop.com>
2026-01-28 09:06:58 +01:00
Venkat Chimata
34a5e87363 hostapd: fix 6 GHz center frequency adjustment condition
Ensure that the center frequency segment 0 index adjustment for
320 MHz bandwidth is applied only for valid 6 GHz frequencies.

Previously, the bandwidth check alone could trigger the adjustment
even when the operating center index did not correspond to a 6 GHz
frequency. Add an explicit is_6ghz_freq() check to avoid incorrect
center frequency offset calculations.

Fixes: WIFI-15238

Signed-off-by: Venkat Chimata <venkat@nearhop.com>
2026-01-28 08:50:21 +01:00
John Crispin
666642480a ucentral-schema: update to latest HEAD
8491119 renderer: make SSID naming band-aware for stable section names
69cf683 renderer: derive no_reconf from radio reconf capability
13f797e radio: use PHY-reported channels instead of hardcoded lists
e5a6295 state: guard against null devstats in iface_add_counters

Signed-off-by: John Crispin <john@phrozen.org>
2026-01-24 09:57:38 +01:00
Venkat Chimata
a60d3b0190 qca-wifi-7: wifi-detect: mark radios as reconf-capable
Set reconf=true in wiphy info during radio detection, indicating that
Wi-Fi 7 radios support BSS reconfiguration without requiring full
interface teardown.

This complements the bss_reload fix by ensuring the reconfiguration
capability is advertised to netifd, allowing it to choose the hot
reload path when appropriate.

Signed-off-by: Venkat Chimata <venkat@nearhop.com>
2026-01-24 09:45:50 +01:00
Venkat Chimata
becce0e6c6 wifi7: allow BSS reload with reconf flag instead of forcing full restart
On Wi-Fi 7 platforms, BSS reload events were always propagated with
reconf=false, forcing netifd/hostapd into a full teardown path even
when a reconfiguration reload was requested.

This change restores the original intent by propagating the reconf
flag correctly from the reload path, allowing hostapd to distinguish
between reconfiguration-capable reloads and teardown-required cases.

With this change, hot reload works consistently on Wi-Fi 7 APs in the
same way as on Wi-Fi 6 platforms, avoiding unnecessary wireless
teardown and driver reinitialization.

Signed-off-by: Venkat Chimata <venkat@nearhop.com>
2026-01-24 09:44:54 +01:00
ruanyaoyu
871834bae5 ipq807x_v5.4: hostapd: fix 6G MBSSID MAC address generation
Fix three issues preventing 6G non-primary SSIDs from connecting on
CIG WF-196:

1. Fix #num_global_macaddr config parsing: the value was stored with
   the '#' prefix but accessed without it, causing the setting to be
   silently ignored (always defaulting to 1).

2. Fix MBSSID config parsing: look for 'multiple_bssid' (the actual
   hostapd config key) instead of 'mbssid'.

3. Fix B5 MAC generation for MBSSID: swap bytes 3 and 5, clear lower
   nibble of byte 5, then set locally-administered bit. This avoids
   MAC collisions with 6G multi-BSSID interfaces.

4. Add iface_macaddr_init() wrapper to ensure mbssid parameter is
   passed consistently during both iface_restart and iface_reload_config.

Signed-off-by: ruanyaoyu <ruanyaoyu@cigtech.com>
2026-01-24 09:42:20 +01:00
Tanya Singh
1d4cbc46d1 ipq807x_v5.4, qca-wifi-7: enable/disable boot bank switch based on upgrade_available value during fw upgrade for Edgecore APs
Fixes: WIFI-15304
Signed-off-by: Tanya Singh <tanya_singh@accton.com>
2026-01-24 09:25:41 +01:00
Tanya Singh
6765ca15d0 qca-wifi-7/ipq53xx: Increase ramoops size for EAP105
Fixes: WIFI-15305
Signed-off-by: Tanya Singh <tanya_singh@accton.com>
2026-01-24 09:25:15 +01:00
Marek Kwaczynski
81a358f52e mtk: mac80211: fix CSA crash with dynamic VLAN
When using dynamic VLAN (AP_VLAN) on 5 GHz, CSA finalize may call
_ieee80211_sta_cap_rx_bw() with a non-NULL chandef whose ->chan is NULL.
This leads to a NULL pointer dereference at chandef->chan->band and a
kernel panic.

Avoid the crash by validating chandef->chan before accessing the band and
fall back to the existing non-chandef path when the channel pointer is not
available during CSA.

Trace:
Unable to handle kernel read from unreadable memory at virtual address 0000000000000000
Internal error: Oops: 0000000096000005 [#1] SMP
CPU: 0 PID: 59 Comm: kworker/u4:2
Workqueue: events_unbound wiphy_delayed_work_pending [cfg80211]
Hardware name: Edgecore EAP111 (DT)
pc : _ieee80211_sta_cap_rx_bw+0x14/0xcc [mac80211]
lr : _ieee80211_sta_cur_vht_bw+0x20/0xb0 [mac80211]

Call trace:
  _ieee80211_sta_cap_rx_bw+0x14/0xcc [mac80211]
  ieee80211_iter_chan_contexts_atomic+0x260/0xf38 [mac80211]
  ieee80211_link_unreserve_chanctx+0x430/0xab8 [mac80211]
  ieee80211_link_use_reserved_context+0xac/0xf4 [mac80211]
  ieee80211_nan_func_terminated+0x3f8c/0x4f00 [mac80211]
  ieee80211_csa_finalize_work+0x2c/0x34 [mac80211]
  wiphy_delayed_work_pending+0x298/0x3bc [cfg80211]
  process_one_work+0x178/0x2f0
  worker_thread+0x2e8/0x4d4
  kthread+0xdc/0xe0
  ret_from_fork+0x10/0x20

  Kernel panic - not syncing: Oops: Fatal exception

Fixes: WIFI-15312

Signed-off-by: Marek Kwaczynski <marek@shasta.cloud>
2026-01-24 09:23:58 +01:00
jackcybertan
2710848a63 ipq8074/rap630e: Fix the LAN and WAN MAC addresses
Fixes: WIFI-15286
Signed-off-by: jackcybertan <jack.tsai@cybertan.com.tw>
2026-01-14 08:32:46 +01:00
John Crispin
b0918f55be certificates: fix dual boot bank certificate handling
On dual boot bank devices, avoid running EST twice by checking for
operational certificates before falling back to the alternate bank.

Previously, after an upgrade the AP would boot from the alternate bank,
find only birth certificates there, and run EST again - resulting in
duplicate operational certificates.

Now the flow is:
- If operational.pem exists in current bank, use it
- If only birth certs in current bank, check alternate bank
- Single boot bank devices behave as before

Fixes: WIFI-15292
Signed-off-by: John Crispin <john@phrozen.org>
2026-01-14 08:30:28 +01:00
22 changed files with 239 additions and 66 deletions

View File

@@ -184,10 +184,15 @@ const phy_proto = {
addr[0] ^= idx << 2;
break;
case "b5":
if (mbssid)
addr[0] |= 2;
addr[5] ^= idx;
break;
if (mbssid) {
let b5 = addr[5];
addr[5] = addr[3];
addr[3] = b5;
addr[5] &= ~0xf;
addr[0] |= 2;
}
addr[5] ^= idx;
break;
default:
for (let i = 5; i > 0; i--) {
addr[i] += idx;

View File

@@ -230,6 +230,17 @@ function iface_pending_init(phydev, config)
pending.next();
}
function iface_macaddr_init(phydev, config, macaddr_list)
{
let macaddr_data = {
num_global: config.num_global_macaddr ?? 1,
macaddr_base: config.macaddr_base,
mbssid: config.mbssid ?? 0,
};
return phydev.macaddr_init(macaddr_list, macaddr_data);
}
function iface_restart(phydev, config, old_config)
{
let phy = phydev.name;
@@ -247,7 +258,7 @@ function iface_restart(phydev, config, old_config)
return;
}
phydev.macaddr_init(iface_config_macaddr_list(config));
iface_macaddr_init(phydev, config, iface_config_macaddr_list(config));
for (let i = 0; i < length(config.bss); i++) {
let bss = config.bss[i];
if (bss.default_macaddr)
@@ -505,7 +516,7 @@ function iface_reload_config(phydev, config, old_config)
num_global: config.num_global_macaddr ?? 1,
mbssid: config.mbssid ?? 0,
};
macaddr_list = phydev.macaddr_init(macaddr_list, macaddr_data);
macaddr_list = iface_macaddr_init(phydev, config, macaddr_list);
for (let i = 0; i < length(config.bss); i++) {
if (bss_list[i])
continue;
@@ -674,9 +685,10 @@ function iface_load_config(filename)
continue;
}
if (val[0] == "#num_global_macaddr" ||
val[0] == "mbssid")
config[val[0]] = int(val[1]);
if (val[0] == "#num_global_macaddr")
config[substr(val[0], 1)] = int(val[1]);
else if (val[0] == "multiple_bssid")
config.mbssid = int(val[1]);
push(config.radio.data, line);
}

View File

@@ -121,10 +121,13 @@ qcom_setup_macs()
lan_mac=$(macaddr_add "$wan_mac" 2)
;;
sonicfi,rap630e)
mac=$(fw_printenv -n BaseMacAddress)
mtd=$(find_mtd_chardev "0:APPSBLENV")
[ -z "$mtd" ] && return;
mac=$(grep BaseMacAddress= $mtd | cut -d '=' -f2)
[ -z "$mac" ] && return;
lan_mac=$(macaddr_canonicalize $mac)
wan_mac=$(macaddr_add "$wan_mac" 1)
wan_mac=$(macaddr_canonicalize $mac)
lan_mac=$(macaddr_add "$wan_mac" 1)
ucidef_set_network_device_mac eth1 $wan_mac
ucidef_set_network_device_mac eth0 $lan_mac
ip link set eth1 address $wan_mac

View File

@@ -6,8 +6,9 @@ boot() {
case "$(board_name)" in
hfcl,ion4xi_w)
fw_setenv boot_count 0
;;
;;
edgecore,oap101|\
edgecore,oap101e|\
edgecore,eap104)
avail=$(fw_printenv -n upgrade_available)
[ "${avail}" -eq 0 ] && fw_setenv upgrade_available 1

View File

@@ -114,12 +114,7 @@ platform_do_upgrade() {
indio,um-325ax-v2|\
indio,um-335ax|\
indio,um-525axp|\
indio,um-525axm|\
edgecore,oap101|\
edgecore,oap101-6e|\
edgecore,oap101e|\
edgecore,oap101e-6e|\
edgecore,eap104)
indio,um-525axm)
if [ "$(find_mtd_chardev rootfs)" ]; then
CI_UBIPART="rootfs"
else
@@ -133,6 +128,43 @@ platform_do_upgrade() {
fi
nand_upgrade_tar "$1"
;;
edgecore,oap101|\
edgecore,oap101-6e|\
edgecore,oap101e|\
edgecore,oap101e-6e|\
edgecore,eap104)
if [ "$(find_mtd_chardev rootfs)" ]; then
CI_UBIPART="rootfs"
else
if [ -e /tmp/downgrade ]; then
CI_UBIPART="rootfs1"
{ echo 'active 1'; echo 'upgrade_available 0'; } > /tmp/fw_setenv.txt || exit 1
CI_FWSETENV="-s /tmp/fw_setenv.txt"
else
local CI_UBIPART_B=""
if grep -q rootfs1 /proc/cmdline; then
CI_UBIPART="rootfs2"
CI_UBIPART_B="rootfs1"
CI_FWSETENV="active 2"
elif grep -q rootfs2 /proc/cmdline; then
CI_UBIPART="rootfs1"
CI_UBIPART_B="rootfs2"
CI_FWSETENV="active 1"
else
CI_UBIPART="rootfs1"
CI_UBIPART_B=""
CI_FWSETENV="active 1"
fi
if [ "$(fw_printenv -n upgrade_available 2>/dev/null)" = "0" ]; then
if [ -n "$CI_UBIPART_B" ]; then
CI_UBIPART="$CI_UBIPART_B"
CI_FWSETENV=""
fi
fi
fi
fi
nand_upgrade_tar "$1"
;;
glinet,b3000)
CI_UBIPART="rootfs1"
[ "$(find_mtd_chardev rootfs)" ] && CI_UBIPART="rootfs"

View File

@@ -182,12 +182,31 @@ platform_do_upgrade() {
if [ "$(find_mtd_chardev rootfs)" ]; then
CI_UBIPART="rootfs"
else
if grep -q rootfs1 /proc/cmdline; then
CI_UBIPART="rootfs2"
CI_FWSETENV="active 2"
else
if [ -e /tmp/downgrade ]; then
CI_UBIPART="rootfs1"
CI_FWSETENV="active 1"
{ echo 'active 1'; echo 'upgrade_available 0'; } > /tmp/fw_setenv.txt || exit 1
CI_FWSETENV="-s /tmp/fw_setenv.txt"
else
local CI_UBIPART_B=""
if grep -q rootfs1 /proc/cmdline; then
CI_UBIPART="rootfs2"
CI_UBIPART_B="rootfs1"
CI_FWSETENV="active 2"
elif grep -q rootfs2 /proc/cmdline; then
CI_UBIPART="rootfs1"
CI_UBIPART_B="rootfs2"
CI_FWSETENV="active 1"
else
CI_UBIPART="rootfs1"
CI_UBIPART_B=""
CI_FWSETENV="active 1"
fi
if [ "$(fw_printenv -n upgrade_available 2>/dev/null)" = "0" ]; then
if [ -n "$CI_UBIPART_B" ]; then
CI_UBIPART="$CI_UBIPART_B"
CI_FWSETENV=""
fi
fi
fi
fi
nand_upgrade_tar "$1"

View File

@@ -7,7 +7,7 @@ boot() {
hfcl,ion4xe|\
hfcl,ion4xi)
fw_setenv boot_count 0
;;
;;
edgecore,eap101|\
edgecore,eap102|\
edgecore,oap102|\

View File

@@ -78,12 +78,27 @@ platform_do_upgrade() {
CI_UBIPART="rootfs1"
{ echo 'active 1'; echo 'upgrade_available 0'; } > /tmp/fw_setenv.txt || exit 1
CI_FWSETENV="-s /tmp/fw_setenv.txt"
elif grep -q rootfs1 /proc/cmdline; then
CI_UBIPART="rootfs2"
CI_FWSETENV="active 2"
else
CI_UBIPART="rootfs1"
CI_FWSETENV="active 1"
local CI_UBIPART_B=""
if grep -q rootfs1 /proc/cmdline; then
CI_UBIPART="rootfs2"
CI_UBIPART_B="rootfs1"
CI_FWSETENV="active 2"
elif grep -q rootfs2 /proc/cmdline; then
CI_UBIPART="rootfs1"
CI_UBIPART_B="rootfs2"
CI_FWSETENV="active 1"
else
CI_UBIPART="rootfs1"
CI_UBIPART_B=""
CI_FWSETENV="active 1"
fi
if [ "$(fw_printenv -n upgrade_available 2>/dev/null)" = "0" ]; then
if [ -n "$CI_UBIPART_B" ]; then
CI_UBIPART="$CI_UBIPART_B"
CI_FWSETENV=""
fi
fi
fi
fi
nand_upgrade_tar "$1"

View File

@@ -0,0 +1,13 @@
Index: backports-6.12.6/net/mac80211/vht.c
===================================================================
--- backports-6.12.6.orig/net/mac80211/vht.c
+++ backports-6.12.6/net/mac80211/vht.c
@@ -365,7 +365,7 @@ _ieee80211_sta_cap_rx_bw(struct link_sta
enum nl80211_band band;
u8 info;
- if (chandef) {
+ if (chandef && chandef->chan) {
band = chandef->chan->band;
} else {
struct ieee80211_bss_conf *link_conf;

View File

@@ -1057,8 +1057,7 @@ return {
bss_event("add", name);
},
bss_reload: function(phy, name, obj, reconf) {
//bss_event("reload", name, { reconf: reconf != 0 });
bss_event("reload", name, { reconf: false });
bss_event("reload", name, { reconf: reconf != 0 });
},
bss_remove: function(phy, name, obj) {
bss_event("remove", name);

View File

@@ -0,0 +1,34 @@
From 406807b134f88ec038ee120a0a0085e140e96313 Mon Sep 17 00:00:00 2001
From: Venkat Chimata <venkat@nearhop.com>
Date: Fri, 23 Jan 2026 00:31:13 +0530
Subject: [PATCH] hostapd: fix 6 GHz center frequency adjustment condition
Ensure that the center frequency segment 0 index adjustment for
320 MHz bandwidth is applied only for valid 6 GHz frequencies.
Previously, the bandwidth check alone could trigger the adjustment
even when the operating center index did not correspond to a 6 GHz
frequency. Add an explicit is_6ghz_freq() check to avoid incorrect
center frequency offset calculations.
Signed-off-by: Venkat Chimata <venkat@nearhop.com>
---
src/ap/ap_config.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/ap/ap_config.h b/src/ap/ap_config.h
index dfd895e..b6c2a4a 100644
--- a/src/ap/ap_config.h
+++ b/src/ap/ap_config.h
@@ -1306,7 +1306,7 @@ hostapd_set_oper_centr_freq_seg0_idx(struct hostapd_config *conf,
#ifdef CONFIG_IEEE80211BE
if (conf->ieee80211be)
conf->eht_oper_centr_freq_seg0_idx = oper_centr_freq_seg0_idx;
- if (center_idx_to_bw_6ghz(oper_centr_freq_seg0_idx) == 4)
+ if (is_6ghz_freq(conf->channel) && (center_idx_to_bw_6ghz(oper_centr_freq_seg0_idx) == 4))
oper_centr_freq_seg0_idx +=
conf->channel > oper_centr_freq_seg0_idx ? 16 : -16;
--
2.34.1

View File

@@ -151,17 +151,32 @@ platform_do_upgrade() {
spi_nor_emmc_do_upgrade_bootconfig $1
;;
edgecore,eap105)
if [ "$(find_mtd_chardev rootfs)" ]; then
CI_UBIPART="rootfs"
else
if grep -q rootfs1 /proc/cmdline; then
CI_UBIPART="rootfs2"
CI_FWSETENV="active 2"
else
if [ -e /tmp/downgrade ]; then
CI_UBIPART="rootfs1"
CI_FWSETENV="active 1"
{ echo 'active 1'; echo 'upgrade_available 0'; } > /tmp/fw_setenv.txt || exit 1
CI_FWSETENV="-s /tmp/fw_setenv.txt"
else
local CI_UBIPART_B=""
if grep -q rootfs1 /proc/cmdline; then
CI_UBIPART="rootfs2"
CI_UBIPART_B="rootfs1"
CI_FWSETENV="active 2"
elif grep -q rootfs2 /proc/cmdline; then
CI_UBIPART="rootfs1"
CI_UBIPART_B="rootfs2"
CI_FWSETENV="active 1"
else
CI_UBIPART="rootfs1"
CI_UBIPART_B=""
CI_FWSETENV="active 1"
fi
if [ "$(fw_printenv -n upgrade_available 2>/dev/null)" = "0" ]; then
if [ -n "$CI_UBIPART_B" ]; then
CI_UBIPART="$CI_UBIPART_B"
CI_FWSETENV=""
fi
fi
fi
fi
nand_upgrade_tar "$1"
;;
sonicfi,rap7110c-341x)

View File

@@ -23,14 +23,14 @@
#size-cells = <2>;
ranges;
ramoops@49c00000 {
compatible = "ramoops";
no-map;
reg = <0x0 0x49c00000 0x0 0x50000>;
record-size = <0x20000>;
console-size = <0x8000>;
pmsg-size = <0x8000>;
};
ramoops@49a00000 {
compatible = "ramoops";
no-map;
reg = <0x0 0x49a00000 0x0 0x100000>;
record-size = <0x50000>;
console-size = <0x50000>;
pmsg-size = <0x50000>;
};
};
aliases {

View File

@@ -96,6 +96,7 @@ function wiphy_detect() {
let info = {
antenna_rx: phy.wiphy_antenna_avail_rx,
antenna_tx: phy.wiphy_antenna_avail_tx,
reconf: true,
bands: {},
radios: []
};

View File

@@ -1,10 +1,12 @@
#!/bin/sh
check_certificates() {
[ -f /certificates/cert.pem -a -f /certificates/key.pem ] && exit 0
[ -f /certificates/cert.pem -a -f /certificates/key.pem ] || return 1
[ -n "$1" ] && [ ! -f /certificates/operational.pem ] && return 1
exit 0
}
check_certificates
check_certificates 1
tar_part_lookup() {
part="$(fw_printenv -n cert_part)"
@@ -76,9 +78,9 @@ yuncore,ax820)
fi
esac
check_certificates
check_certificates 1
# if we get here no valid certificates were found
# if we get here no valid operational certificates were found
PART_NAME=
@@ -144,6 +146,7 @@ senao,jeap6500)
PART_NAME=ubi
;;
*)
check_certificates
return 1
;;
esac
@@ -155,4 +158,7 @@ MTD=$(find_mtd_index $PART_NAME)
ubiattach -m $MTD -d 3
[ -e /dev/ubi3 ] && mount -t ubifs ubi3:certificates /certificates
check_certificates
check_certificates || {
umount /certificates
check_certificates
}

View File

@@ -400,7 +400,7 @@ function expiry_handler() {
if (!stat)
return;
let ret = system(`openssl x509 -checkend ${timeouts.expiry_threshold} -noout -in /certificates/operational.pem`);
let ret = system(`openssl x509 -checkend ${timeouts.expiry_threshold} -noout -in /etc/ucentral/operational.pem`);
if (!ret) {
ulog(LOG_INFO, 'checked certificate expiry - all ok\n');
return;

View File

@@ -29,6 +29,9 @@ Build/Compile = $(Build/Compile/Default)
define Package/ratelimit/install
$(CP) ./files/* $(1)
ifeq ($(CONFIG_TARGET_mediatek),y)
$(SED) 's|qdisc replace dev $$$${iface} parent 1:$$$${id} handle $$$${id}: fq_codel flows 128 limit 800 quantum 300 noecn|qdisc add dev $$$${iface} parent 1:$$$${id} sfq perturb 10 limit 2000 quantum 1514|' $(1)/usr/bin/ratelimit
endif
endef
$(eval $(call BuildPackage,ratelimit))

View File

@@ -42,7 +42,12 @@ const actions = {
tx_power: function(msg) {
if (!global.phy.txpower(msg))
return result(1, msg.event, 'BSS ' + msg.bssid + ' failed to set TX power', { action: 'tx_power', bssid: msg.bssid });
// iw dev gives updated value
// But fetching it immediately failed once.
// Could n't reprouce it though
// Give few milliseconds to settle
sleep(10);
let level = global.local.txpower(msg.bssid) / 100;
return result(0, msg.event, 'BSS ' + msg.bssid + ' changed TX power', { action: 'tx_power', bssid: msg.bssid, level });
},

View File

@@ -293,6 +293,15 @@ return {
return -1;
},
bssid_to_ifname: function(bssid) {
for (let bss, v in interfaces) {
if (v.bssid == lc(bssid)) {
return bss;
}
}
return null;
},
txpower: function(bssid) {
for (let bss, v in interfaces) {
if (v.bssid != lc(bssid))

View File

@@ -163,10 +163,11 @@ return {
txpower: function(msg) {
if (!msg.bssid || !msg.level)
return false;
let wiphy = global.local.bssid_to_phy(msg.bssid);
if (wiphy < 0)
return false;
global.nl80211.request(global.nl80211.const.NL80211_CMD_SET_WIPHY, 0, { wiphy, wiphy_tx_power_setting: 2, wiphy_tx_power_level: msg.level * 100});
let dev = global.local.bssid_to_ifname(msg.bssid);
if (dev == null) {
return false;
}
global.nl80211.request(global.nl80211.const.NL80211_CMD_SET_WIPHY, 0, { dev, wiphy_tx_power_setting: 2, wiphy_tx_power_level: msg.level * 100});
return true;
},
};

View File

@@ -4,10 +4,10 @@ PKG_NAME:=ucentral-schema
PKG_RELEASE:=1
PKG_SOURCE_URL=https://github.com/Telecominfraproject/wlan-ucentral-schema.git
PKG_MIRROR_HASH:=6d3b8e342ce8e7aeef908acfcbefc989523f0de9cac215d8be4f148746c4e0ce
PKG_MIRROR_HASH:=ac2a5b026cfc0cdc893cf2ed8dd5aff31c5c56feaffa6bf3489d5c260f2ed724
PKG_SOURCE_PROTO:=git
PKG_SOURCE_DATE:=2025-12-12
PKG_SOURCE_VERSION:=d26c4b0a1e38d331deeef89c5ccf669ce9044791
PKG_SOURCE_DATE:=2026-01-24
PKG_SOURCE_VERSION:=8491119c93f7d94dc8940f1b76619a134f22c5a5
PKG_MAINTAINER:=John Crispin <john@phrozen.org>
PKG_LICENSE:=BSD-3-Clause

View File

@@ -1,12 +1,12 @@
---
profile: edgecore_eap111
target: mediatek
subtarget: mt7981
subtarget: filogic
description: Build image for the EdgeCore EAP111
image: bin/targets/mediatek/mt7981/openwrt-mediatek-mt7981-edgecore_eap111-squashfs-sysupgrade.bin
image: bin/targets/mediatek/filogic/openwrt-mediatek-filogic-edgecore_eap111-squashfs-sysupgrade.bin
feeds:
- name: mediatek
path: ../../feeds/mediatek-sdk
path: ../../feeds/mediatek
packages:
- mediatek
include: