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@