From 8312d4a665193a5c25ed103196121e0eae69a964 Mon Sep 17 00:00:00 2001
From: Andrei Ovcharenko
Date: Mon, 5 Oct 2026 17:47:10 +0300
Subject: [PATCH] prplmesh: update to 6.2.0
Refresh the stock OpenWrt platform patches for the new BPL configuration
backend and removed Wi-Fi credential setter. Keep the production log
levels through the upstream syslog CMake setting and update patch offsets.
Signed-off-by: Andrei Ovcharenko
---
net/prplmesh/Makefile | 4 +-
net/prplmesh/patches/100-stock-platform.patch | 110 ++++++++----------
.../patches/110-stock-wifi-hardening.patch | 78 ++++---------
...ip-op-class-dm-cleanup-without-nbapi.patch | 2 +-
...egister-foreign-radios-from-topology.patch | 2 +-
...150-nl80211-connected-clients-import.patch | 6 +-
.../patches/160-production-log-levels.patch | 36 +++---
7 files changed, 99 insertions(+), 139 deletions(-)
diff --git a/net/prplmesh/Makefile b/net/prplmesh/Makefile
index bdc15142cf..79e8128466 100644
--- a/net/prplmesh/Makefile
+++ b/net/prplmesh/Makefile
@@ -1,12 +1,12 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=prplmesh
-PKG_VERSION:=6.0.1
+PKG_VERSION:=6.2.0
PKG_RELEASE:=1
PKG_SOURCE:=prplMesh-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://gitlab.com/prpl-foundation/prplmesh/prplMesh/-/archive/$(PKG_VERSION)/
-PKG_HASH:=68602c7bdf521de1797c0e58e66bb45cf105726dfd5a75d8429038012e19a702
+PKG_HASH:=35afcd92185b082d5f92021fcd669d370a47ff0881c9ad495abcfb3438d49a2b
PKG_BUILD_DIR:=$(BUILD_DIR)/prplMesh-$(PKG_VERSION)
PKG_LICENSE:=BSD-2-Clause-Patent BSD-3-Clause ISC MIT
diff --git a/net/prplmesh/patches/100-stock-platform.patch b/net/prplmesh/patches/100-stock-platform.patch
index 566e71da69..9f7c382387 100644
--- a/net/prplmesh/patches/100-stock-platform.patch
+++ b/net/prplmesh/patches/100-stock-platform.patch
@@ -19,32 +19,21 @@ the upstream submission itself goes through the prpl Foundation Jira.
Signed-off-by: Andrei Ovcharenko
---
- CMakeLists.txt | 1 +
- agent/src/beerocks/slave/CMakeLists.txt | 3 +-
- .../beerocks/slave/beerocks_agent_main.cpp | 14 +++
- .../include/bcl/beerocks_ucc_server_factory.h | 1 +
- common/beerocks/bwl/shared/nl80211_socket.h | 2 +
- controller/config/CMakeLists.txt | 2 +-
- .../beerocks/master/beerocks_master_main.cpp | 31 ++++++
- framework/platform/bpl/CMakeLists.txt | 61 +++++++-----
- .../bpl/cfg/linux/bpl_cfg_ifaces.cpp.in | 1 +
- framework/platform/bpl/cfg/uci/bpl.cpp | 1 +
- framework/platform/bpl/cfg/uci/bpl_cfg.cpp | 96 ++++++++++++++++++-
- .../platform/bpl/cfg/uci/bpl_cfg_helper.cpp | 47 +++++++++
- .../platform/bpl/cfg/uci/bpl_cfg_helper.h | 10 ++
- .../platform/bpl/cfg/uci/bpl_cfg_uci.cpp | 18 ++++
- 14 files changed, 261 insertions(+), 27 deletions(-)
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 9eb902a..68aa24f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
-@@ -66,6 +66,7 @@ option (ENABLE_NBAPI "Build the northbou
+@@ -74,6 +74,7 @@ option (ENABLE_NBAPI "Build the northbound (high-level) API" ON)
option (ENABLE_VBSS "Build with Virtual BSS support" ON)
option(USE_PRPLMESH_WHM "Use prplMesh Wireless Hardware Manager" ON)
+option(PRPLMESH_STOCK_OPENWRT_UCI "Build against stock OpenWrt UCI/ubus without Ambiorix or WHM" OFF)
- ## Generic checks and defaults
-
+ option (ENABLE_BEEROCKS_CLI "Build beerocks CLI" ON)
+ option (ENABLE_PRPLMESH_CLI "Build prplMesh CLI" ON)
+diff --git a/agent/src/beerocks/slave/CMakeLists.txt b/agent/src/beerocks/slave/CMakeLists.txt
+index 05c27d4..0efae1a 100755
--- a/agent/src/beerocks/slave/CMakeLists.txt
+++ b/agent/src/beerocks/slave/CMakeLists.txt
@@ -15,11 +15,12 @@ file(GLOB beerocks_agent_sources
@@ -61,9 +50,11 @@ Signed-off-by: Andrei Ovcharenko
add_subdirectory("nbapi")
endif()
+diff --git a/agent/src/beerocks/slave/beerocks_agent_main.cpp b/agent/src/beerocks/slave/beerocks_agent_main.cpp
+index 18ad393..6306f23 100644
--- a/agent/src/beerocks/slave/beerocks_agent_main.cpp
+++ b/agent/src/beerocks/slave/beerocks_agent_main.cpp
-@@ -632,6 +632,20 @@ int main(int argc, char *argv[])
+@@ -729,6 +729,20 @@ int main(int argc, char *argv[])
return 1;
}
}
@@ -84,6 +75,8 @@ Signed-off-by: Andrei Ovcharenko
// beerocks system hang tester
if (beerocks_slave_conf.enable_system_hang_test == "1") {
+diff --git a/common/beerocks/bcl/include/bcl/beerocks_ucc_server_factory.h b/common/beerocks/bcl/include/bcl/beerocks_ucc_server_factory.h
+index ffdc14d..b03c894 100644
--- a/common/beerocks/bcl/include/bcl/beerocks_ucc_server_factory.h
+++ b/common/beerocks/bcl/include/bcl/beerocks_ucc_server_factory.h
@@ -12,6 +12,7 @@
@@ -94,6 +87,8 @@ Signed-off-by: Andrei Ovcharenko
#include
namespace beerocks {
+diff --git a/common/beerocks/bwl/shared/nl80211_socket.h b/common/beerocks/bwl/shared/nl80211_socket.h
+index 916b942..29aba9f 100644
--- a/common/beerocks/bwl/shared/nl80211_socket.h
+++ b/common/beerocks/bwl/shared/nl80211_socket.h
@@ -21,6 +21,8 @@ namespace bwl {
@@ -105,6 +100,8 @@ Signed-off-by: Andrei Ovcharenko
/**
* @brief Class destructor.
*/
+diff --git a/controller/config/CMakeLists.txt b/controller/config/CMakeLists.txt
+index 1b13361..6463988 100644
--- a/controller/config/CMakeLists.txt
+++ b/controller/config/CMakeLists.txt
@@ -1,5 +1,5 @@
@@ -114,9 +111,11 @@ Signed-off-by: Andrei Ovcharenko
set(BEEROCKS_CONTROLLER_DATAELEMENTS_VAP_CONFIGS 1)
endif()
+diff --git a/controller/src/beerocks/master/beerocks_master_main.cpp b/controller/src/beerocks/master/beerocks_master_main.cpp
+index defd36b..72e504c 100644
--- a/controller/src/beerocks/master/beerocks_master_main.cpp
+++ b/controller/src/beerocks/master/beerocks_master_main.cpp
-@@ -672,6 +672,18 @@ int main(int argc, char *argv[])
+@@ -675,6 +675,18 @@ int main(int argc, char *argv[])
}
}
@@ -135,7 +134,7 @@ Signed-off-by: Andrei Ovcharenko
std::string base_master_name = std::string(BEEROCKS_CONTROLLER);
//kill running master
-@@ -820,6 +832,25 @@ int main(int argc, char *argv[])
+@@ -853,6 +865,25 @@ int main(int argc, char *argv[])
beerocks::btl::create_broker_client_factory(broker_uds_path, event_loop);
LOG_IF(!broker_client_factory, FATAL) << "Unable to create broker client factory!";
@@ -161,9 +160,11 @@ Signed-off-by: Andrei Ovcharenko
son::Controller controller(master_db, std::move(broker_client_factory), std::move(ucc_server),
std::move(cmdu_server), timer_manager, event_loop);
+diff --git a/framework/platform/bpl/CMakeLists.txt b/framework/platform/bpl/CMakeLists.txt
+index 813d4a8..d60d280 100644
--- a/framework/platform/bpl/CMakeLists.txt
+++ b/framework/platform/bpl/CMakeLists.txt
-@@ -87,19 +87,32 @@ if (TARGET_PLATFORM STREQUAL "openwrt")
+@@ -88,19 +88,32 @@ if (TARGET_PLATFORM STREQUAL "openwrt")
add_definitions(-DHAVE_C99)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99")
@@ -207,7 +208,7 @@ Signed-off-by: Andrei Ovcharenko
find_package(ubus REQUIRED)
-@@ -159,11 +172,13 @@ else()
+@@ -160,11 +173,13 @@ else()
endif()
@@ -226,7 +227,7 @@ Signed-off-by: Andrei Ovcharenko
# BPL pwhm DM via wbapi
if (USE_PRPLMESH_WHM)
-@@ -185,7 +200,7 @@ if (USE_PRPLMESH_WHM)
+@@ -209,7 +224,7 @@ if (USE_PRPLMESH_WHM)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${WBAPI_SOCK}")
list(APPEND BPL_LIBS wbapi)
@@ -235,25 +236,8 @@ Signed-off-by: Andrei Ovcharenko
file(GLOB_RECURSE bpl_platform_sources
${MODULE_PATH}/*/linux/*.c*
${MODULE_PATH}/service_prioritization/dummy/service_prio_utils_dummy.c*
-@@ -194,11 +209,13 @@ else ()
- endif()
-
- # BPL configuration via nbapi
--list(FIND bpl_platform_sources ${MODULE_PATH}/cfg/dm/bpl_amx.cpp _index)
--message("bpl_platform_sources: ${bpl_platform_sources}")
--if (_index EQUAL -1)
-- message("APPEND bpl_platform_sources with ${MODULE_PATH}/cfg/dm/bpl_amx.cpp")
-- list(APPEND bpl_platform_sources ${MODULE_PATH}/cfg/dm/bpl_amx.cpp)
-+if (NOT PRPLMESH_STOCK_OPENWRT_UCI)
-+ list(FIND bpl_platform_sources ${MODULE_PATH}/cfg/dm/bpl_amx.cpp _index)
-+ message("bpl_platform_sources: ${bpl_platform_sources}")
-+ if (_index EQUAL -1)
-+ message("APPEND bpl_platform_sources with ${MODULE_PATH}/cfg/dm/bpl_amx.cpp")
-+ list(APPEND bpl_platform_sources ${MODULE_PATH}/cfg/dm/bpl_amx.cpp)
-+ endif()
- endif()
- list(APPEND BPL_LIBS nbapi)
-
+diff --git a/framework/platform/bpl/cfg/linux/bpl_cfg_ifaces.cpp.in b/framework/platform/bpl/cfg/linux/bpl_cfg_ifaces.cpp.in
+index 8e41f58..4f0b0b2 100644
--- a/framework/platform/bpl/cfg/linux/bpl_cfg_ifaces.cpp.in
+++ b/framework/platform/bpl/cfg/linux/bpl_cfg_ifaces.cpp.in
@@ -6,6 +6,7 @@
@@ -264,16 +248,8 @@ Signed-off-by: Andrei Ovcharenko
#include
namespace beerocks {
---- a/framework/platform/bpl/cfg/uci/bpl.cpp
-+++ b/framework/platform/bpl/cfg/uci/bpl.cpp
-@@ -7,6 +7,7 @@
- */
-
- #include
-+#include
-
- #include
-
+diff --git a/framework/platform/bpl/cfg/uci/bpl_cfg.cpp b/framework/platform/bpl/cfg/uci/bpl_cfg.cpp
+index ca17397..c7951e6 100644
--- a/framework/platform/bpl/cfg/uci/bpl_cfg.cpp
+++ b/framework/platform/bpl/cfg/uci/bpl_cfg.cpp
@@ -16,14 +16,41 @@
@@ -315,10 +291,10 @@ Signed-off-by: Andrei Ovcharenko
+ return true;
+}
+
- int cfg_get_hostap_iface_steer_vaps(int32_t radio_num,
- char hostap_iface_steer_vaps[BPL_LOAD_STEER_ON_VAPS_LEN])
+ bool bpl_cfg_get_agent_mac(std::string &agent_mac)
{
-@@ -152,8 +179,8 @@ int cfg_get_dcs_channel_pool(const BPL_W
+ agent_mac = DEFAULT_AGENT_MAC;
+@@ -174,8 +201,8 @@ int cfg_get_dcs_channel_pool(const BPL_WLAN_IFACE &iface,
return RETURN_ERR;
}
@@ -329,7 +305,7 @@ Signed-off-by: Andrei Ovcharenko
return RETURN_ERR;
}
-@@ -1102,8 +1129,12 @@ bool cfg_get_clients_unicast_measurement
+@@ -1108,8 +1135,12 @@ bool get_controller_heartbeat_state_timeout_seconds(std::chrono::seconds &timeou
bool cfg_get_private_bridge_iface(std::string &bridge_iface)
{
@@ -343,7 +319,7 @@ Signed-off-by: Andrei Ovcharenko
}
bool cfg_get_guest_bridge_iface(std::string &bridge_iface)
-@@ -1132,5 +1163,64 @@ bool cfg_get_traffic_separation_guest_vi
+@@ -1138,5 +1169,64 @@ bool cfg_get_traffic_separation_guest_vid(int &guest_vid)
bool cfg_commit_changes() { return uci_commit_changes("prplmesh"); }
@@ -408,6 +384,8 @@ Signed-off-by: Andrei Ovcharenko
+
} // namespace bpl
} // namespace beerocks
+diff --git a/framework/platform/bpl/cfg/uci/bpl_cfg_helper.cpp b/framework/platform/bpl/cfg/uci/bpl_cfg_helper.cpp
+index 493a4ed..fc136e4 100644
--- a/framework/platform/bpl/cfg/uci/bpl_cfg_helper.cpp
+++ b/framework/platform/bpl/cfg/uci/bpl_cfg_helper.cpp
@@ -11,6 +11,7 @@
@@ -418,7 +396,7 @@ Signed-off-by: Andrei Ovcharenko
#include
#include
-@@ -38,6 +39,52 @@ int cfg_get_prplmesh_hostapd_ifaces(std:
+@@ -38,6 +39,52 @@ int cfg_get_prplmesh_hostapd_ifaces(std::unordered_map
(char *)"hostap_iface", hostapd_ifaces);
}
@@ -471,12 +449,15 @@ Signed-off-by: Andrei Ovcharenko
int cfg_get_prplmesh_radio_param(int radio_id, const std::string &radio_param, char *buf,
size_t buf_len)
{
+diff --git a/framework/platform/bpl/cfg/uci/bpl_cfg_helper.h b/framework/platform/bpl/cfg/uci/bpl_cfg_helper.h
+index 8d30352..dd4338b 100644
--- a/framework/platform/bpl/cfg/uci/bpl_cfg_helper.h
+++ b/framework/platform/bpl/cfg/uci/bpl_cfg_helper.h
-@@ -26,6 +26,16 @@ namespace bpl {
+@@ -25,6 +25,16 @@ namespace bpl {
+ **/
int cfg_get_prplmesh_hostapd_ifaces(std::unordered_map &hostapd_ifaces);
- /**
++/**
+ * Resolve a runtime hostapd interface to its stock OpenWrt wifi-iface section.
+ *
+ * Modern OpenWrt normally omits the legacy wireless.*.ifname option. In that
@@ -486,10 +467,11 @@ Signed-off-by: Andrei Ovcharenko
+ */
+bool cfg_get_prplmesh_wireless_section(const std::string &iface, std::string §ion_name);
+
-+/**
+ /**
* Returns the value of requested param from DB
*
- * @param [in] param prplmesh param key string
+diff --git a/framework/platform/bpl/cfg/uci/bpl_cfg_uci.cpp b/framework/platform/bpl/cfg/uci/bpl_cfg_uci.cpp
+index 27f2ac6..59dca31 100644
--- a/framework/platform/bpl/cfg/uci/bpl_cfg_uci.cpp
+++ b/framework/platform/bpl/cfg/uci/bpl_cfg_uci.cpp
@@ -8,6 +8,7 @@
@@ -500,7 +482,7 @@ Signed-off-by: Andrei Ovcharenko
#include
#include
-@@ -130,6 +131,23 @@ int cfg_uci_get_wireless_from_ifname(enu
+@@ -130,6 +131,23 @@ int cfg_uci_get_wireless_from_ifname(enum paramType type, const char *interface_
}
}
diff --git a/net/prplmesh/patches/110-stock-wifi-hardening.patch b/net/prplmesh/patches/110-stock-wifi-hardening.patch
index 2082fb5f52..72f65a3c76 100644
--- a/net/prplmesh/patches/110-stock-wifi-hardening.patch
+++ b/net/prplmesh/patches/110-stock-wifi-hardening.patch
@@ -21,15 +21,9 @@ the upstream submission itself goes through the prpl Foundation Jira.
Signed-off-by: Andrei Ovcharenko
---
- .../platform/bpl/cfg/uci/bpl_cfg_wifi.cpp | 215 +++++++++++-------
- .../platform/bpl/cfg/uci/bpl_cfg_wifi_utils.h | 139 +++++++++++
- framework/platform/bpl/test/CMakeLists.txt | 8 +
- .../bpl/test/bpl_cfg_wifi_utils_test.cpp | 66 ++++++
- .../assoc_frame_bitfields.h | 1 +
- 5 files changed, 348 insertions(+), 81 deletions(-)
- create mode 100644 framework/platform/bpl/cfg/uci/bpl_cfg_wifi_utils.h
- create mode 100644 framework/platform/bpl/test/bpl_cfg_wifi_utils_test.cpp
+diff --git a/framework/platform/bpl/cfg/uci/bpl_cfg_wifi.cpp b/framework/platform/bpl/cfg/uci/bpl_cfg_wifi.cpp
+index 108073c..669b949 100644
--- a/framework/platform/bpl/cfg/uci/bpl_cfg_wifi.cpp
+++ b/framework/platform/bpl/cfg/uci/bpl_cfg_wifi.cpp
@@ -14,16 +14,113 @@
@@ -146,7 +140,7 @@ Signed-off-by: Andrei Ovcharenko
static bool bpl_cfg_get_bss_configuration(const std::string §ion_name,
son::wireless_utils::sBssInfoConf &configuration)
{
-@@ -36,38 +133,9 @@ static bool bpl_cfg_get_bss_configuratio
+@@ -36,38 +133,9 @@ static bool bpl_cfg_get_bss_configuration(const std::string §ion_name,
// Fill in wireless credentials from option values read from UCI configuration.
configuration.ssid = options["ssid"];
@@ -188,7 +182,7 @@ Signed-off-by: Andrei Ovcharenko
configuration.network_key = options["key"];
-@@ -128,8 +196,8 @@ int cfg_get_wifi_params(const std::strin
+@@ -128,8 +196,8 @@ int cfg_get_wifi_params(const std::string &iface, struct BPL_WLAN_PARAMS *wlan_p
cfg_uci_get_wireless_bool(TYPE_RADIO, iface.c_str(), "disabled", &disabled);
wlan_params->enabled = !disabled;
@@ -199,7 +193,7 @@ Signed-off-by: Andrei Ovcharenko
// Failed to find "sub_band_dfs", set to to default value.
wlan_params->sub_band_dfs = false;
}
-@@ -143,7 +211,7 @@ int cfg_get_wifi_params(const std::strin
+@@ -143,7 +211,7 @@ int cfg_get_wifi_params(const std::string &iface, struct BPL_WLAN_PARAMS *wlan_p
// country code
char alpha_2[MAX_UCI_BUF_LEN] = {0};
@@ -208,7 +202,7 @@ Signed-off-by: Andrei Ovcharenko
wlan_params->country_code[0] = alpha_2[0];
wlan_params->country_code[1] = alpha_2[1];
-@@ -153,6 +221,15 @@ int cfg_get_wifi_params(const std::strin
+@@ -159,6 +227,15 @@ int cfg_get_wifi_universal_index(const std::string &iface, int &index)
bool bpl_cfg_get_wireless_settings(std::list &wireless_settings)
{
@@ -224,7 +218,7 @@ Signed-off-by: Andrei Ovcharenko
// Get all "wireless.wifi-iface" section names in UCI configuration
const std::string package_name = "wireless";
const std::string section_type = "wifi-iface";
-@@ -227,7 +304,7 @@ bool bpl_cfg_get_wireless_settings(std::
+@@ -233,7 +310,7 @@ bool bpl_cfg_get_wireless_settings(std::list
continue;
}
@@ -233,7 +227,7 @@ Signed-off-by: Andrei Ovcharenko
if (!bpl_cfg_get_bss_configuration(section_name, configuration)) {
LOG(DEBUG) << "Failed to get SSID and WiFi credentials from section " << section_name;
continue;
-@@ -251,13 +328,11 @@ bool bpl_cfg_get_wireless_settings(std::
+@@ -257,13 +334,11 @@ bool bpl_cfg_get_wireless_settings(std::list
continue;
}
@@ -251,7 +245,7 @@ Signed-off-by: Andrei Ovcharenko
// The mode used by upstream hostapd (11b, 11g, 11n, 11ac, 11ax) is governed by several parameters in
// the configuration file. However, as explained in the comment below from hostapd.conf, the
-@@ -274,17 +349,11 @@ bool bpl_cfg_get_wireless_settings(std::
+@@ -280,17 +355,11 @@ bool bpl_cfg_get_wireless_settings(std::list
//
// For MaxLinear's devices, by default '11bgnax' is used for 2.4Ghz bands, and '11anacax' is
// used for 5Ghz bands (see 'files/scripts/lib/netifd/wireless/mac80211.sh' in the swpal package).
@@ -273,7 +267,7 @@ Signed-off-by: Andrei Ovcharenko
continue;
}
-@@ -326,10 +395,10 @@ bool bpl_cfg_get_wireless_settings(std::
+@@ -332,10 +401,10 @@ bool bpl_cfg_get_wireless_settings(std::list
}
}
@@ -287,7 +281,7 @@ Signed-off-by: Andrei Ovcharenko
}
return true;
-@@ -340,7 +409,7 @@ bool bpl_cfg_get_wifi_credentials(const
+@@ -346,7 +415,7 @@ bool bpl_cfg_get_wifi_credentials(const std::string &iface,
{
// Find the "wireless.wifi-iface" section in UCI configuration for the given interface
std::string section_name;
@@ -296,43 +290,7 @@ Signed-off-by: Andrei Ovcharenko
LOG(ERROR) << "Failed to find configuration section for interface " << iface;
return false;
}
-@@ -366,9 +435,8 @@ bool bpl_cfg_set_wifi_credentials(const
- // Find the "wireless.wifi-iface" section in UCI configuration for the given interface
- const std::string package_name = "wireless";
- const std::string section_type = "wifi-iface";
-- const std::string option_name = "ifname";
- std::string section_name;
-- if (!uci_find_section_by_option(package_name, section_type, option_name, iface, section_name)) {
-+ if (!cfg_get_prplmesh_wireless_section(iface, section_name)) {
- LOG(ERROR) << "Failed to find configuration section for interface " << iface;
- return false;
- }
-@@ -382,22 +450,8 @@ bool bpl_cfg_set_wifi_credentials(const
- OptionsUnorderedMap options;
- options["ssid"] = configuration.ssid;
-
-- auto get_encryption = [](WSC::eWscAuth authentication_type, WSC::eWscEncr encryption_type) {
-- std::string encryption = "none";
-- if (authentication_type == WSC::eWscAuth::WSC_AUTH_WPA2PSK) {
-- encryption = "psk2";
-- if (encryption_type == WSC::eWscEncr::WSC_ENCR_TKIP) {
-- encryption += "+tkip";
-- } else if (encryption_type == WSC::eWscEncr::WSC_ENCR_AES) {
-- encryption += "+aes";
-- }
-- } else if (authentication_type == WSC::eWscAuth::WSC_AUTH_SAE) {
-- encryption = "sae";
-- }
-- return encryption;
-- };
-- options["encryption"] =
-- get_encryption(configuration.authentication_type, configuration.encryption_type);
-+ options["encryption"] = wifi_cfg_utils::encryption_to_uci(configuration.authentication_type,
-+ configuration.encryption_type);
-
- options["key"] = configuration.network_key;
-
-@@ -476,18 +530,17 @@ void cfg_wifi_reset_wps_credentials() {
+@@ -436,18 +505,17 @@ int cfg_get_sta_iface(const std::string &iface, std::string &sta_iface)
int cfg_get_hostap_iface(int32_t radio_num, std::string &hostap_iface)
{
@@ -357,6 +315,9 @@ Signed-off-by: Andrei Ovcharenko
hostap_iface = std::string(iface_c_str);
return result;
}
+diff --git a/framework/platform/bpl/cfg/uci/bpl_cfg_wifi_utils.h b/framework/platform/bpl/cfg/uci/bpl_cfg_wifi_utils.h
+new file mode 100644
+index 0000000..6624ab6
--- /dev/null
+++ b/framework/platform/bpl/cfg/uci/bpl_cfg_wifi_utils.h
@@ -0,0 +1,139 @@
@@ -499,9 +460,11 @@ Signed-off-by: Andrei Ovcharenko
+} // namespace beerocks
+
+#endif // BPL_CFG_WIFI_UTILS_H_
+diff --git a/framework/platform/bpl/test/CMakeLists.txt b/framework/platform/bpl/test/CMakeLists.txt
+index d2485fd..7318d94 100644
--- a/framework/platform/bpl/test/CMakeLists.txt
+++ b/framework/platform/bpl/test/CMakeLists.txt
-@@ -5,3 +5,11 @@ target_include_directories(bpl_test PUBL
+@@ -5,3 +5,11 @@ target_include_directories(bpl_test PUBLIC
$
$
)
@@ -513,6 +476,9 @@ Signed-off-by: Andrei Ovcharenko
+ $
+)
+add_test(NAME bpl_cfg_wifi_utils_test COMMAND $)
+diff --git a/framework/platform/bpl/test/bpl_cfg_wifi_utils_test.cpp b/framework/platform/bpl/test/bpl_cfg_wifi_utils_test.cpp
+new file mode 100644
+index 0000000..bce1ffe
--- /dev/null
+++ b/framework/platform/bpl/test/bpl_cfg_wifi_utils_test.cpp
@@ -0,0 +1,66 @@
@@ -582,6 +548,8 @@ Signed-off-by: Andrei Ovcharenko
+ EXPECT_FALSE(select_unique_wireless_section(two, selected));
+ EXPECT_TRUE(selected.empty());
+}
+diff --git a/framework/tlvf/src/include/tlvf/AssociationRequestFrame/assoc_frame_bitfields.h b/framework/tlvf/src/include/tlvf/AssociationRequestFrame/assoc_frame_bitfields.h
+index b05bd5f..0ca4610 100644
--- a/framework/tlvf/src/include/tlvf/AssociationRequestFrame/assoc_frame_bitfields.h
+++ b/framework/tlvf/src/include/tlvf/AssociationRequestFrame/assoc_frame_bitfields.h
@@ -4,6 +4,7 @@
diff --git a/net/prplmesh/patches/130-skip-op-class-dm-cleanup-without-nbapi.patch b/net/prplmesh/patches/130-skip-op-class-dm-cleanup-without-nbapi.patch
index 02553df952..76accbef2b 100644
--- a/net/prplmesh/patches/130-skip-op-class-dm-cleanup-without-nbapi.patch
+++ b/net/prplmesh/patches/130-skip-op-class-dm-cleanup-without-nbapi.patch
@@ -24,7 +24,7 @@ Signed-off-by: Andrei Ovcharenko
--- a/controller/src/beerocks/master/db/db.cpp
+++ b/controller/src/beerocks/master/db/db.cpp
-@@ -7087,6 +7087,10 @@ bool db::dm_clear_empty_current_op_class
+@@ -7218,6 +7218,10 @@ bool db::dm_clear_empty_current_op_class
return false;
}
diff --git a/net/prplmesh/patches/140-register-foreign-radios-from-topology.patch b/net/prplmesh/patches/140-register-foreign-radios-from-topology.patch
index b81cee3709..67e9d89386 100644
--- a/net/prplmesh/patches/140-register-foreign-radios-from-topology.patch
+++ b/net/prplmesh/patches/140-register-foreign-radios-from-topology.patch
@@ -30,7 +30,7 @@ Signed-off-by: Andrei Ovcharenko
--- a/controller/src/beerocks/master/db/db.cpp
+++ b/controller/src/beerocks/master/db/db.cpp
-@@ -6998,9 +6998,17 @@ bool db::handle_current_op_class(const s
+@@ -7129,9 +7129,17 @@ bool db::handle_current_op_class(const s
return false;
}
diff --git a/net/prplmesh/patches/150-nl80211-connected-clients-import.patch b/net/prplmesh/patches/150-nl80211-connected-clients-import.patch
index 741719a9db..f1a8a35ef8 100644
--- a/net/prplmesh/patches/150-nl80211-connected-clients-import.patch
+++ b/net/prplmesh/patches/150-nl80211-connected-clients-import.patch
@@ -46,7 +46,7 @@ Signed-off-by: Andrei Ovcharenko
--- a/agent/src/beerocks/fronthaul_manager/ap_manager/ap_manager.cpp
+++ b/agent/src/beerocks/fronthaul_manager/ap_manager/ap_manager.cpp
-@@ -747,6 +747,20 @@ bool ApManager::ap_manager_fsm(bool &con
+@@ -733,6 +733,20 @@ bool ApManager::ap_manager_fsm(bool &con
m_generate_connected_clients_events = !is_finished_all_clients;
}
@@ -69,7 +69,7 @@ Signed-off-by: Andrei Ovcharenko
break;
--- a/agent/src/beerocks/fronthaul_manager/ap_manager/ap_manager.h
+++ b/agent/src/beerocks/fronthaul_manager/ap_manager/ap_manager.h
-@@ -300,6 +300,8 @@ private:
+@@ -322,6 +322,8 @@ private:
bool m_generate_connected_clients_events = false;
std::chrono::steady_clock::time_point m_next_generate_connected_events_time =
std::chrono::steady_clock::time_point::min();
@@ -80,7 +80,7 @@ Signed-off-by: Andrei Ovcharenko
void start_csa_notification_timer(
--- a/common/beerocks/bwl/include/bwl/ap_wlan_hal.h
+++ b/common/beerocks/bwl/include/bwl/ap_wlan_hal.h
-@@ -442,6 +442,14 @@ public:
+@@ -470,6 +470,14 @@ public:
virtual bool pre_generate_connected_clients_events() = 0;
/**
diff --git a/net/prplmesh/patches/160-production-log-levels.patch b/net/prplmesh/patches/160-production-log-levels.patch
index 90c95f13de..29feed182e 100644
--- a/net/prplmesh/patches/160-production-log-levels.patch
+++ b/net/prplmesh/patches/160-production-log-levels.patch
@@ -19,33 +19,43 @@ the upstream submission itself goes through the prpl Foundation Jira.
Signed-off-by: Andrei Ovcharenko
---
- agent/config/beerocks_agent.conf.in | 4 ++--
- controller/config/beerocks_controller.conf.in | 4 ++--
- 2 files changed, 4 insertions(+), 4 deletions(-)
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 68aa24f..2dd772a 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -238,7 +238,7 @@ set(BEEROCKS_LOG_FILES_AUTO_ROLL "true" CACHE STRING "Auto rollback prplMesh log
+ set(BEEROCKS_LOG_STDOUT_ENABLED "false" CACHE STRING "Print logs to stdout")
+ set(BEEROCKS_LOG_SYSLOG_ENABLED "true" CACHE STRING "Send logs to syslog")
+ #full ascending list: trace, debug, info, warning, error, fatal
+-set(BEEROCKS_SYSLOG_LEVEL_LIST "error,fatal" CACHE STRING "Syslog level list")
++set(BEEROCKS_SYSLOG_LEVEL_LIST "error,info,warning,fatal" CACHE STRING "Syslog level list")
+ if (TARGET_PLATFORM STREQUAL "linux")
+ set(BEEROCKS_CONTROLLER_LOG_SIZE "30000000" CACHE STRING "Max controller log size")
+ set(BEEROCKS_AGENT_LOG_SIZE "2000000" CACHE STRING "Max agent log size")
+diff --git a/agent/config/beerocks_agent.conf.in b/agent/config/beerocks_agent.conf.in
+index 7ea4e09..72ae48f 100644
--- a/agent/config/beerocks_agent.conf.in
+++ b/agent/config/beerocks_agent.conf.in
-@@ -92,8 +92,8 @@ enable_repeater_mode=0
- em_handle_third_party=0
+@@ -93,7 +93,7 @@ em_handle_third_party=0
[log]
+ #full ascending list: trace, debug, info, warning, error, fatal
-log_global_levels=error,info,warning,fatal,trace,debug
--log_global_syslog_levels=error,info,warning,fatal,trace,debug
+log_global_levels=error,info,warning,fatal
-+log_global_syslog_levels=error,info,warning,fatal
+ log_global_syslog_levels=@BEEROCKS_SYSLOG_LEVEL_LIST@
log_global_size=@BEEROCKS_AGENT_LOG_SIZE@
log_files_enabled=@BEEROCKS_LOG_FILES_ENABLED@
- log_files_path=@BEEROCKS_LOG_FILES_PATH@
+diff --git a/controller/config/beerocks_controller.conf.in b/controller/config/beerocks_controller.conf.in
+index be33029..5646005 100644
--- a/controller/config/beerocks_controller.conf.in
+++ b/controller/config/beerocks_controller.conf.in
-@@ -56,8 +56,8 @@ fail_safe_5G_vht_frequency=5210
- use_dataelements_vap_configs=@BEEROCKS_CONTROLLER_DATAELEMENTS_VAP_CONFIGS@
+@@ -57,7 +57,7 @@ use_dataelements_vap_configs=@BEEROCKS_CONTROLLER_DATAELEMENTS_VAP_CONFIGS@
[log]
+ #full ascending list: trace, debug, info, warning, error, fatal
-log_global_levels=error,info,warning,fatal,trace,debug
--log_global_syslog_levels=error,info,warning,fatal,trace,debug
+log_global_levels=error,info,warning,fatal
-+log_global_syslog_levels=error,info,warning,fatal
+ log_global_syslog_levels=@BEEROCKS_SYSLOG_LEVEL_LIST@
log_global_size=@BEEROCKS_CONTROLLER_LOG_SIZE@
log_files_enabled=@BEEROCKS_LOG_FILES_ENABLED@
- log_files_path=@BEEROCKS_LOG_FILES_PATH@