Compare commits

...

5 Commits

Author SHA1 Message Date
Arif Alam
60a714f15d ath11k: improve peer deletion timeout error handling and fix memory leak
Signed-off-by: Arif Alam <arif.alam@netexperience.com>
2025-09-04 01:13:04 -04:00
Arif Alam
c27b015a63 est_client: fix certificate issuer matching
Signed-off-by: Arif Alam <arif.alam@netexperience.com>
2025-08-29 22:52:28 -04:00
Arif Alam
02c2e6945b est_client: cloud_discovery: fixup demo environment
Signed-off-by: Arif Alam <arif.alam@netexperience.com>
2025-08-28 21:39:54 -04:00
Sebastian Huang
e7cd5038ac mediatek-sdk: Disable surge protection mode for AN8801SB PHY driver
Signed-off-by: Sebastian Huang <sebastian_huang@accton.com>
2025-08-20 08:16:30 +02:00
Paul White
34e4a01e25 ucentral-state: Respect LED config before enabling
Ensure that LEDs are configured to be ON before attempting to change their state.

Previously, if the LED was configured to be OFF, it would still enter a double-blink
state when the cloud connection was lost, and then switch to solid ON upon
reconnection—ignoring the configured OFF state.

This update changes that behavior:
    - If LEDs are configured OFF, they will remain OFF even during cloud
      disconnection (no double-blink).
    - After temporary state changes (e.g., during factory reset), the LED will
      return to its configured state (either OFF or ON).

Signed-off-by: Paul White <paul@shasta.cloud>
2025-08-20 08:16:08 +02:00
6 changed files with 83 additions and 7 deletions

View File

@@ -0,0 +1,10 @@
--- a/drivers/net/wireless/ath/ath11k/peer.c
+++ b/drivers/net/wireless/ath/ath11k/peer.c
@@ -902,6 +902,7 @@ int ath11k_peer_create(struct ath11k *ar
if (vdev_id == param->vdev_id)
return -EINVAL;
+ ath11k_dp_peer_cleanup(ar, vdev_id, param->peer_addr);
ath11k_peer_delete(ar, vdev_id, param->peer_addr);
}

View File

@@ -0,0 +1,54 @@
From f211976a35c898f39d5a2602dd2a076a7b7cebd2 Mon Sep 17 00:00:00 2001
From: Arif Alam <arif.alam@netexperience.com>
Date: Tue, 2 Sep 2025 20:07:06 -0400
Subject: [PATCH] ath11k: improve peer deletion timeout and error handling
Signed-off-by: Arif Alam <arif.alam@netexperience.com>
---
drivers/net/wireless/ath/ath11k/peer.c | 9 ++++++---
drivers/net/wireless/ath/ath11k/peer.h | 2 ++
2 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/drivers/net/wireless/ath/ath11k/peer.c b/drivers/net/wireless/ath/ath11k/peer.c
index 1907067..d5dbf40 100644
--- a/drivers/net/wireless/ath/ath11k/peer.c
+++ b/drivers/net/wireless/ath/ath11k/peer.c
@@ -771,7 +771,7 @@ int ath11k_wait_for_peer_delete_done(struct ath11k *ar, u32 vdev_id,
}
time_left = wait_for_completion_timeout(&ar->peer_delete_done,
- 3 * HZ);
+ msecs_to_jiffies(ATH11K_PEER_DELETE_MSG_TIMEOUT_MS));
if (time_left == 0) {
ath11k_warn(ar->ab, "Timeout in receiving peer delete response\n");
return -ETIMEDOUT;
@@ -857,8 +857,11 @@ int ath11k_peer_delete(struct ath11k *ar, u32 vdev_id, u8 *addr)
}
ret = ath11k_wait_for_peer_delete_done(ar, vdev_id, addr);
- if (ret)
- return ret;
+ if (ret) {
+ ath11k_warn(ar->ab,
+ "failed wait for peer %pM delete done id %d ret %d\n",
+ addr, vdev_id, ret);
+ }
ATH11K_MEMORY_STATS_DEC(ar->ab, per_peer_object,
sizeof(struct ath11k_peer));
diff --git a/drivers/net/wireless/ath/ath11k/peer.h b/drivers/net/wireless/ath/ath11k/peer.h
index c1a6464..ca20627 100644
--- a/drivers/net/wireless/ath/ath11k/peer.h
+++ b/drivers/net/wireless/ath/ath11k/peer.h
@@ -6,6 +6,8 @@
#ifndef ATH11K_PEER_H
#define ATH11K_PEER_H
+#define ATH11K_PEER_DELETE_MSG_TIMEOUT_MS 100
+
struct ppdu_user_delayba {
u8 reserved0;
u16 sw_peer_id;
--
2.50.1

View File

@@ -200,7 +200,7 @@
phy-mode = "sgmii";
full-duplex;
pause;
airoha,surge = <1>;
airoha,surge = <0>;
airoha,polarity = <2>;
};

View File

@@ -49,10 +49,12 @@ function detect_certificate_type() {
let issuer = pipe.read("all");
pipe.close();
if (!match(issuer, /Telecom Infra Project Issuing CA/)) {
if (match(issuer, /OpenLAN Demo Birth CA/)) {
ulog(LOG_INFO, 'Certificate type is "Demo" \n');
cds_server = 'discovery-qa.open-lan.org';
timeouts.expiry_threshold = 3 * 24 * 60 * 60;
} else if (match(issuer, /OpenLAN Birth Issuing CA/)) {
ulog(LOG_INFO, 'Certificate type is "Production"\n');
} else {
ulog(LOG_INFO, 'Certificate type is "TIP"\n');
}

View File

@@ -16,9 +16,11 @@ function set_est_server() {
let issuer = pipe.read("all");
pipe.close();
if (!match(issuer, /Telecom Infra Project Issuing CA/)) {
if (match(issuer, /OpenLAN Demo Birth CA/)) {
ulog(LOG_INFO, 'Certificate type is "Demo" \n');
est_server = 'qaest.certificates.open-lan.org:8001';
} else if (match(issuer, /OpenLAN Birth Issuing CA/)) {
ulog(LOG_INFO, 'Certificate type is "Production"\n');
} else {
ulog(LOG_INFO, 'Certificate type is "TIP"\n');
}
@@ -165,7 +167,7 @@ function fwtool() {
let issuer = pipe.read("all");
pipe.close();
if (!(match(issuer, /OpenLAN/) && match(issuer, /Birth CA/)))
if (!(match(issuer, /OpenLAN/) && match(issuer, /Birth/)))
return 0;
ulog(LOG_INFO, 'The issuer is insta\n');

View File

@@ -20,6 +20,7 @@ let config;
let offline_timer;
let current_state;
let online = false;
let leds_off = false;
function self_healing() {
let heal_wifi = false;
@@ -148,6 +149,13 @@ function online_handler() {
function config_load() {
ulog(LOG_INFO, 'loading config\n');
uci.load('system');
let led_off_cfg = uci.get("system", "@system[0]", "leds_off");
if (led_off_cfg == 1) {
leds_off = true;
}
uci.load('state');
config = uci.get_all('state');
@@ -191,7 +199,7 @@ function led_find(alias) {
function factory_reset_timeout() {
let led = led_find('led-running');
if (led)
led_write(led, 'trigger', 'default-on');
led_write(led, 'trigger', leds-off ? 'none' : 'default-on');
}
let blink_timer;
@@ -210,7 +218,7 @@ let state_handler = {
offline: function() {
online = false;
let led = led_find('led-running');
if (led)
if (!leds_off && led)
led_write(led, 'trigger', 'heartbeat');
if (config.ui.offline_trigger) {
if (offline_timer)
@@ -223,7 +231,7 @@ let state_handler = {
online: function() {
online = true;
let led = led_find('led-running');
if (led)
if (!leds_off && led)
led_write(led, 'trigger', 'default-on');
online_handler();
return 0;