Skip to content

Sync Easymesh changes to main - community fixes and features from develop (69 commits) - #1

Closed
Nikita-Hakai wants to merge 69 commits into
mainfrom
em_main_commits
Closed

Nikita-Hakai wants to merge 69 commits into
mainfrom
em_main_commits

Conversation

@Nikita-Hakai

Copy link
Copy Markdown
Collaborator

Summary

Syncs 69 community changes from rdkcentral/OneWifi:develop into this main-based branch. Each commit below was cherry-picked individually (or manually re-applied where conflicts required adaptation to main's current state); commits already present in main (via prior manual cherry-picks, bulk syncs, or superseding work) were excluded.

Tickets included

RDKB-59512, RDKBWIFI-37, RDKBDEV-3291, RDKBACCL-1229, RDKB-62199, RDKBACCL-1240, RDKBWIFI-181, RDKBWIFI-201, RDKBWIFI-203, RDKBWIFI-204, RDKBACCL-1193, RDKBWIFI-323, RDKBWIFI-348, RDKBWIFI-360, RDKBWIFI-375, RDKBWIFI-377, RDKB-63321, RDKBWIFI-382, RDKBWIFI-384, RDKBACCL-1522, RDKBWIFI-381, RDKBWIFI-387, RDKBWIFI-399, RDKBWIFI-322, RDKBWIFI-278, RDKBWIFI-401, RDKBWIFI-386, RDKCOM-5487, RDKBWIFI-359, RDKBWIFI-464, RDKBWIFI-428, RDKBWIFI-286, RDKBWIFI-445, RDKBACCL-1885, RDKBWIFI-459, RDKBWIFI-460, RDKBWIFI-503, RDKBWIFI-454, RDKBWIFI-520, RDKBWIFI-518, RDKBWIFI-517, RDKBDEV-3367, RDKBWIFI-498, RDKBWIFI-531, RDKBWIFI-544, RDKBWIFI-538, RDKBWIFI-553, RDKB-66207, RDKBWIFI-513, RDKBWIFI-563, RDKBACCL-1313, RDKBWIFI-442, RDKBACCL-672

Commits / PRs included (chronological)

Notes

  • Commits that were already present in main (via prior manual cherry-picks, bulk translator syncs, or superseded by later main-only work) were intentionally excluded to avoid duplication/regressions.
  • A handful of conflicts required manual adaptation (e.g. keeping newer main-only refactors while incorporating the develop-side fix, adding a missing CI matrix entry, fixing a couple of latent bugs uncovered during merge). See individual commit messages for details.

amarnathhullur and others added 30 commits September 15, 2026 11:22
Reason for change: No existing subdocs which provides the VAP
configuration corresponding to a radio is present. This is
required for easymesh usecase, thus the change.

Test Procedure: Encode, decode and apply of VAP configuration
per radio tested on Raspberry Pi.

(cherry picked from commit 044e904)
Multi vap, Single Radio subdoc changes and Easymesh translation changes

(cherry picked from commit 103e9f8)
… to support EasyMesh

Reason for change:  EasyMesh integration in BPI
Test Procedure: Able to compile ccsp-one-wifi-libwebconfig with wifi_Easymesh_translator.c
Risks: Low

Signed-off-by: keerthana.p <keerthana_pandurangan@comcast.com>
(cherry picked from commit 752e55c)
Reason for change: To allow client connection in mesh_backhaul mac_filter_mode is changed to wifi_mac_filter_mode_black_list
Test Procedure: In colocated mode, if there is single vap at al mac address, ensure it is configured as mesh_backhaul
Risks: Medium
Priority: P1

Signed-off-by: Rakhil P E <rakhilpe001@gmail.com>
(cherry picked from commit 84fd07a)
…linux (rdkcentral#363)

* Split up linux build into bpi and rpi

Signed-off-by: Benjamin Carlson <b.carlson@cablelabs.com>

* Update GitHub Action for new paths.

Signed-off-by: Benjamin Carlson <b.carlson@cablelabs.com>

---------

Signed-off-by: Benjamin Carlson <b.carlson@cablelabs.com>
Co-authored-by: Amarnath Hullur Subramanyam <amarnath.hs@gmail.com>
(cherry picked from commit 5790356)
…ad the result (rdkcentral#606)

Reason for change: OneWifi wifi_api2 switched from direct rbus API usages to bus abstraction,
and starts to use full name tag for publishing values (instead of hard-coded "value"),
but test wifi_api2 wasn't aligned and as a result wifi_api2 doesn't work.
This fix align SetValue name and GetValue and fix wifi_api2.
In additional to that several issues in wifiapi_result_publish were
fixed to make it more robust.

Test procedure: execute wifi_api2 command for some api and check it gets
result

Risk: Low
Priority: P2
Co-authored-by: Sathish Kumar Gnanasekaran <gsathish86@gmail.com>
(cherry picked from commit 57cb226)
…dkcentral#678)

Reason for change: Build scripts need to point to the updated
hostap URL from the previous URL which is no longer valid.
Test Procedure: Ensured builds are working fine with this change.
Risks: Low

(cherry picked from commit 7817f94)
…dkcentral#652)

RDKB-62199: Increasing the MAX_SCANNED_VAPS macro for DPP scanning

Reason for change: The BSS scan results are getting truncated to 32 max results. Have changed the BSS results to
be in dynamic mem to reduce stack memory.
Test Procedure: Ensure that the scan for CCE IEs were successful
Risks: Medium
Priority: P1

Signed-off-by: sriraaman-c <sriraaman33@gmail.com>
(cherry picked from commit 8616f50)
…kcentral#689)

enabled RDKB BPI builds.
Reason for change: Below line is the crash pointer
    at ../../../git/source/core/wifi_ctrl_rbus_handlers.c:2105
onewifi crash is observing due to l_interface_name value is NULL.
Test Procedure: Able to fetch wifi info via below command
dmcli eRT getv Device.WiFi.
Risks: Low

Signed-off-by: keerthana.p <keerthana_pandurangan@comcast.com>
(cherry picked from commit 8415b5b)
* wifi_8021x: fix null pointer dereference

The changes in this PR were automatically generated by the Permanence AI
Coder and reviewed by @fwph and @jweese. This PR modifies the
`process_eap_data` function in `source/core/wifi_8021x.c` to move null checks
for `data` and `data->data` to the beginning of the function and return
early to avoid segfaults.

on-behalf-of: @permanence-ai <github-ai@permanence.ai>

* use wifi_util_error_print to record null pointer condition

on-behalf-of: @permanence-ai <github-ai@permanence.ai>
(cherry picked from commit 5b004ce)
The changes in this PR were automatically generated by the Permanence AI
Coder and reviewed by @fwph and @jweese. This change adds a null check for
`data` at the beginning of the `webconfig_stats_config_apply` function. If
`data` is null, the function logs an error and returns immediately to
prevent null pointer dereferences. The later check involving `data` was
removed since `data` cannot be null past the early return.

on-behalf-of: @permanence-ai <github-ai@permanence.ai>
(cherry picked from commit a34428a)
The changes in this PR were automatically generated by the Permanence AI
Coder and reviewed by @fwph. This change adds a null check for `data` at
the beginning of the `webconfig_steering_clients_apply` function. If `data`
is null, the function logs an error and returns immediately to prevent
null pointer dereferences. The later check involving data was removed
since data cannot be null past the early return.

on-behalf-of: @permanence-ai <github-ai@permanence.ai>
(cherry picked from commit 4ba8f84)
The changes in this PR were automatically generated by the Permanence AI
Coder and reviewed by @fwph and @jweese. This change adds a null check
for `data` at the beginning of the `webconfig_steering_config_apply`
function. If `data` is null, the function logs an error and returns
immediately to prevent null pointer dereferences. The later check
involving data was removed since data cannot be null past the early
return.

on-behalf-of: @permanence-ai <github-ai@permanence.ai>
(cherry picked from commit 52044eb)
…l#695)

The changes in this PR were automatically generated by the Permanence AI
Coder and reviewed by @fwph and @jweese. This change adds a null check
for data before dereferencing it in the `webconfig_vif_neighbors_apply`
function. If data is null, the function logs an error and returns immediately
to prevent null pointer dereferences. The later check involving data was
removed since data cannot be null past the early return.

on-behalf-of: @permanence-ai <github-ai@permanence.ai>
(cherry picked from commit 855a9be)
rdkcentral#696)

The changes in this PR were automatically generated by the Permanence AI
Coder and reviewed by @fwph. This change moves the deallocation of
dev_array outside of the for loop to prvent a null pointer dereference
when num_devs > 1. In addition, it adds a null check for dev_array
after the call to wifi_getApAssociatedDeviceDiagnosticResult3. If dev_array
is null, an error message is written to result_buf and the  function returns
early to prevent null pointer deferecnces.

on-behalf-of: @permanence-ai <github-ai@permanence.ai>
(cherry picked from commit ee43b72)
The changes in this PR were automatically generated by the Permanence AI
Coder and reviewed by @fwph. The file source/core/wifi_ctrl.c is modified
to add a null check for the name parameter at the beginning of the
bus_get_vap_init_parameter function before it is dereferenced. If name is
null, the function logs an error and returns immediately. The later
check on name is removed, as the pointer is not modified during the
function.

on-behalf-of: @permanence-ai <github-ai@permanence.ai>
(cherry picked from commit 74c63ba)
Reason for change: Bus abstraction was missing handling data from table getter
  callback. This feature is present in rbus, the change will make use of this
  feature. Other bus backends are currently not handled.
Risks: Low

Co-authored-by: Narendra Varma Dandu <narendandu@gmail.com>
(cherry picked from commit 121b609)
…ecution (rdkcentral#908)

Reason for change: The existing timeout calculation is based on current time scheduler start.
If the scheduler timeout and timer task interval is same, small micro seconds difference in scheduler start make the timer task to skip the execution and need to wait till the next iteration.
Fixed the issue a) by modifying the timeout calculation based on last timeout instead of current time. And
                b) updated timeout while adding a new timer task with start_immediately as false.
Test Procedure: Ensure the timer task run in configured intervals and no regressions.
Risks: Medium
Priority: P1

Signed-off-by: Rakhil P E <rakhilpe001@gmail.com>
Co-authored-by: Sathish Kumar Gnanasekaran <gsathish86@gmail.com>
(cherry picked from commit f4c9de9)
)

Reason for change: Latest MP4.2 Kernel 6.6 package is required
for MLO support, current OpenWRT platform supported is 5.4 version.
These changes are to enable support for the Kernel 6.6 version.
Test Procedure: Build and sanity testing of Easymesh scenario
Priority: P1
Risks: Low

Signed-off-by: Amarnath Hullur Subramanyam <amarnath.hs@gmail.com>
(cherry picked from commit 1005559)
…ral#940)

Reason for change: BPI Linux based build was using older hostap
version and also did not have GENERIC_MLO flag enabled. This
change enables MLO build with 2.11 based hostap
Priority: P1
Risks: Low

Signed-off-by: Amarnath Hullur Subramanyam <amarnath.hs@gmail.com>
Co-authored-by: Narendra Varma Dandu <narendandu@gmail.com>
(cherry picked from commit dc7b6e9)
…6 Build and enable MLO for private VAPs (rdkcentral#947)

Reason for change: To update rdk-wifi-libhostap patches for OpenWRT kernel 6.6 Build and make it in sync with RDKB Yocto builds. Also enabled MLO for all private VAPs
Test Procedure: Ensure all patches are applied without any failures.
Risks: Medium
Priority: P1

Signed-off-by: Rakhil P E <rakhilpe001@gmail.com>
(cherry picked from commit f09ec5c)
…central#955)

Reason for change: To use gdb and analyze crash dump
Test Procedure: Build and sanity testing of Easymesh scenario
Priority: P1
Risks: Low

Signed-off-by: Amarnath Hullur Subramanyam <amarnath.hs@gmail.com>
(cherry picked from commit 17cb563)
Reason for change: BPI Linux based build updated to use
the latest hostap patches of MLO. Also added additional
authors to be associated with community contribution.
Test Procedure:Build of OneWifi on Linux platform.
Priority: P1
Risks: Low

Signed-off-by: Amarnath Hullur Subramanyam <amarnath.hs@gmail.com>
(cherry picked from commit ddc983b)
…kcentral#970)

* RDKB-63321: RPI build to apply hostap telemetry enhancement patch

Reason for change: rdk-wifi-hal recent changes require this patch
to be applied for compilation. Adding this patch for 2.10 compilation

* RDKB-63321: OpenWRT5.4 script to apply hostap telemetry enhancement patch

Reason for change: rdk-wifi-hal recent changes require this patch
to be applied for compilation.

---------

Co-authored-by: Sathish Kumar Gnanasekaran <gsathish86@gmail.com>
(cherry picked from commit 7230e5a)
…nt (rdkcentral#971)

Reason for change: To sync rdk-wifi-libhostap patch from RDKB-63321 for BPI Builds. Also fix kernel 5.4 build error due to KERNEL_6_6 flag in makefile.
Test Procedure: Ensure patch file is applied without any failures.
Risks: Medium
Priority: P1

Signed-off-by: Rakhil P E <rakhilpe001@gmail.com>
(cherry picked from commit b5c6c3e)
…sh build (rdkcentral#978)

Reason for change: Backhaul connectivity issues were triggered due to failure in registering for management frames.
To support beacon frame registration in BPI, kernel patch needs to be applied. Additionally added missing compilation flags to openwrt makefile wrt RDKB build.
Test Procedure: Ensure backhaul extender connection work without any disconnect.
Risks: Medium
Priority: P1

Signed-off-by: Rakhil P E <rakhilpe001@gmail.com>
(cherry picked from commit 904bf76)
Reason for change:
Mesh backhaul is loosing whenever easymesh agent is on-boarding in
Extender.
Improvising the conditional check  for security structure of sta_info in is_vap_param_config_changed()
Test Procedure:
Mesh backhaul found to be stable
Risks: Medium

Signed-off-by: keerthana.p <keerthana_pandurangan@comcast.com>
Co-authored-by: Narendra Varma Dandu <narendandu@gmail.com>
(cherry picked from commit 6e94a59)
rdkcentral#967)

* RDKBWIFI-381: [Easymesh] Fix unsafe strncpy usage by replacing with snprintf in easymesh webconfig

Reason for change: there are wrong usages of strncpy like missing
Nul-termination after copying or inccorrect sizes of input buffer
Thus all of strncpy replaced with snprintf which checks buff size and
Nul-termination using same patern: snprintf(dst, sizeof(dst), "%s", src).
For string literals is used strcpy as size of the dest buffers are big enough.

Test procedure:
1. Vaps configured properly
2. No regressions in Easymesh test procedure

Priority: P2
Risks: Low

* fixed code reiview comments

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* replaced remaining strcpy calls to snprintf

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
(cherry picked from commit 1a65205)
kpandu987 and others added 25 commits September 15, 2026 11:40
…central#1212)

Reason for change: Observing below errors,
../../../git/source/webconfig/wifi_ovsdb_translator.c:3075:98: error: 'struct schema_Wifi_VIF_State' has no member named 'mld_if_name'; did you mean 'if_name'?       |  3075 |         if (get_mlo_vap_name_from_per_radio(vap->vap_name, vap_row->mld_if_name, sizeof(vap_row->mld_if_name))) {
Test Procedure: BPI build successful
Risks: None

Signed-off-by: keerthana.p <keerthana_pandurangan@comcast.com>
(cherry picked from commit bca9e26)
This is a placeholder commit, for the dependencies from unified-mesh.
Added dummy functions, which will be replaced later once the driver
changes are available.

Signed-off-by: Sangeetha <sangeetha.s1@tataelxsi.co.in>
Co-authored-by: Narendra Varma Dandu <narendandu@gmail.com>
(cherry picked from commit bbad8ec)
…ral#1167)

Reason for change:
When a Wi-Fi client fails to connect due to authentication or
association failure (e.g., wrong password, MIC failure, ACL deny),
there is no RBUS event to notify upper layers about the failure.
This change introduces the Device.WiFi.EM.FailedConnection event
that is published on connection failure, carrying the BSSID,
station MAC, IEEE 802.11 status code, and reason code as a JSON
payload.

Test Procedure:
1. WPA3-SAE wrong password — verified event published with
   status=15 (SAE Challenge Failure), reason=0
2. WPA2-PSK wrong password — verified event published with
   status=0, reason=14 (MIC Failure)
3. ACL deny (blacklist) — verified event published with
   status=33 (Unspecified/ACL deny), reason=0
All scenarios validated via RBUS subscriber and packet capture
on rdkb-lgm platform.

Risks:
Low. New RBUS event only; no modification to existing connection
or data path logic. No impact on normal association flow.

Signed-off-by: sgunasekaran@maxlinear.com

Signed-off-by: sgunasekaran@maxlinear.com
Co-authored-by: Narendra Varma Dandu <narendandu@gmail.com>
(cherry picked from commit cb6c574)
rdkcentral#1164)

* RDKBWIFI-460: Fixes and improvements for EasyMesh AP metrics reporting

* added checks for get_wifidb_vap_map

* fix radio index mismatch in ap_report_push_cb

* use strncpy for client_type copies

* sync vap_metrics.num_of_assoc_stas with sta_cnt after client_stats_map iteration

* fix vap_reports OOB and encoder/decoder inconsistency on alloc failure

(cherry picked from commit 5594b76)
…kcentral#1254)

Reason for change: With latest changes from RDKB-65811: MLO link reconfiguration for BPi-R4, the temporary change made earlier is no longer needed. Hence removing it from code.
Test Procedure: Ensure fronthaul VAPs are coming up in MLO mode bydefault.
Risks:Medium
Priority:P1

Signed-off-by: Rakhil P E <rakhilpe001@gmail.com>
(cherry picked from commit 36dc153)
…ties) (rdkcentral#1244)

Reason for change: Added encode and decode changes for MLOOperationalCap and TIDLinkMapNegotiation. Also added translation changes for max_nummlds, apmld_maxlinks, bstamld_maxlinks and tidlink_map.
Test Procedure: Ensure Wi-Fi 7 Agent Capabilities are updated properly.
Risks: Medium
Priority: P1

Signed-off-by: Rakhil P E <rakhilpe001@gmail.com>
(cherry picked from commit 34475e6)
…on (rdkcentral#1157)

* Added station RSSI (unassociated STA statistics) implementation - get_NaSta and rbus handlers integration

* Added support for webconfig_subdoc_type_nasta_query

* Added a credit for MaxLinear in NOTICE

* changed sscanf specificator to %u for vap_idx

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* webconfig nasta added for linux and openwrt builds

* set correct raw_data_len as strlen + 1

* aligned names with rdk-wifi-halif

* added missed webconfig subtypes to wifi_event_subtype_to_string

* removed unused headers

* added static const to nasta_query_objects definitions

* removed data->u.encoded.json = json

* added space for NUL-symbol in value.raw_data_len

* marked unused var asyncHandle in get_NaSta func

* fixed review comments

* removed placeholder definitions

* rewerted WIFI_NASTA_RESPONSE_EVENT to original wifi_ctrl_rbus_handlers.c file

* fixed review comments

* changed webconfig_nasta_apply debug logs to dbg level

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
(cherry picked from commit 1124e22)
…rdkcentral#1277)

Reason for change: Added NULL guard to prevent crash if associated_devices_map is NULL. Also addressed a wrong code comparison for radio index.
Test Procedure: Ensure no crash issues with onewifi with AP Metrics reporting.
Risks: Medium
Priority: P1

Signed-off-by: Rakhil P E <rakhilpe001@gmail.com>
Co-authored-by: Narendra Varma Dandu <narendandu@gmail.com>
(cherry picked from commit b284d90)
…slation (rdkcentral#1275)

The EasyMesh device translator hardcoded the device country to "US", so the
actual regulatory country never propagated to the controller and
Device.WiFi.DataElements Network.Device.{i}.CountryCode could not be reported.

Report the device's country from the radio config (via country_code_conversion)
when building the device object, falling back to US only when it is unavailable.

Signed-off-by: Durmus Koyuncu <durmus.kyncu.kd@gmail.com>
Co-authored-by: Narendra Varma Dandu <narendandu@gmail.com>
(cherry picked from commit da1e9c4)
…central#1274)

The channels_2g_40_mhz[] table in get_on_channel_scan_list() used a +/-2
channel offset for the HT40 secondary channel (e.g. primary 1 -> {1,3}). In
2.4GHz the channel numbers are spaced 5 MHz apart, so the two non overlapping
20MHz halves of a 40MHz bond are 20 MHz = 4 channel numbers apart
(secondary = primary +/-4). {1,3} are only 10 MHz apart and overlap, which is
not a valid 40MHz pair. The 5GHz and 6GHz tables in the same function already
use the correct +4 spacing.

With the wrong offset, get_on_channel_scan_list() returned an overlapping
sub channel for every 2.4GHz 40MHz primary, so consumers that check the
sub channels against an allowed list (e.g. channel scan, ACS) could not deploy
a 2.4GHz 40MHz channel and fell back to 20MHz.

Correct the table to the standard 2.4GHz HT40 pairs (1+5, 6+10, 11+7, ...).

Signed-off-by: Durmus Koyuncu <durmus.kyncu.kd@gmail.com>
Co-authored-by: Narendra Varma Dandu <narendandu@gmail.com>
(cherry picked from commit b11e1ca)
…ntral#871)

Reason for change: provision to handle easymesh based on flag

Test Procedure: OneWifi running while EasyMesh services are disabled
Risks: None

Signed-off-by: sai satish <skotapati@maxlinear.com>
Co-authored-by: Narendra Varma Dandu <narendandu@gmail.com>
(cherry picked from commit d7e5e66)
…pp publishers (rdkcentral#1250)

The EasyMesh AP metrics pipeline leaks on both ends of the webconfig
subdoc exchange, growing the consumer of the report (EM agent, via
libwifi_webconfig) and OneWifi itself on every reporting interval.
Leaks were located with LeakSanitizer and validated fixed on a device
(RSS flat over 8 hours).

Decode side (libwifi_webconfig):

- decode_em_ap_metrics_report_subdoc never freed data->u.encoded.json;
  per framework convention (see decode_radio_subdoc) the subdoc
  decoder owns the parsed tree, so the whole cJSON tree of every
  report leaked. Delete it on the success path and on the two error
  paths that were missing it.

- decode_em_ap_metrics_report_object mallocs per-vap sta_traffic_stats
  and sta_link_metrics arrays into the decoded params, but nothing on
  the decode/translate path freed them (webconfig_data_free only frees
  u.encoded.raw). Free them in webconfig_easymesh_decode after
  translation, mirroring the existing assoc-map cleanup.

EM app publishers (wifi_em.c):

- All four publishers (AP metrics report, sta link metrics report,
  channel scan report, beacon report) leaked the encoded JSON string:
  webconfig_encode allocates data->u.encoded.raw, the bus publish
  copies the payload, and the cleanup paths freed the decoded members
  and `data` but never the encoded string. The beacon report publisher
  also leaked wb_data itself on the success path.

Signed-off-by: Durmus Koyuncu <durmus.kyncu.kd@gmail.com>
Co-authored-by: Narendra Varma Dandu <narendandu@gmail.com>
(cherry picked from commit cd27b70)
rdkcentral#1299)

The EasyMesh Radio Metrics TLV carries time fractions in units of 1/255
over the reporting window and noise as ANPI, but the radio metrics were
filled from the raw cumulative HAL survey counters, so the decoded values
were out of range.

Convert the delta since the previous sample into 1/255 fractions and
encode noise as ANPI. Derive the channel utilization from the same window
as max(busy, tx + rx): the spec defines it as the time spent transmitting
and receiving, and some drivers do not include own TX time in the busy
counter. Report zero on the first sample, a counter reset or a channel
change. Also fix the radio index bound check, which allowed
radio_index == MAX_NUM_RADIOS.

Signed-off-by: Durmus Koyuncu <durmus.kyncu.kd@gmail.com>
Co-authored-by: Narendra Varma Dandu <narendandu@gmail.com>
(cherry picked from commit fa2099f)
…al#1319)

The RBUS<->bus_data type mapping tables already cover uint8/uint16, but the
value marshalling switches did not: the property list branch of
set_rbus_property_data() (bulk/getExt responses) lacked uint8/uint16 cases and
the scalar path lacked uint16, so such values were dropped with "value type
not supported". e.g. the Capabilities.WiFi6APRole./WiFi7APRole. leaves were
missing from bulk gets. Add the missing cases.

Signed-off-by: Durmus Koyuncu <durmus.kyncu.kd@gmail.com>

* Fix indentation per copilot

---------
Signed-off-by: Durmus Koyuncu <durmus.kyncu.kd@gmail.com>
Co-authored-by: Mateusz Cieslak <mateusz.cieslak2@globallogic.com>
(cherry picked from commit 64e0440)
…istered yet (rdkcentral#1304)

During startup the webconfig south element is registered with the bus mux
before the WifiCtrl component maps its user set handler. A set arriving in
that window hit "if (user_cb->set_handler != NULL)" with no else branch, so
rbus_set_handler returned success while silently dropping the payload. The
EasyMesh agent's Vap subdocs sent right after WSC M2 were lost this way and
onboarding deadlocked. Return bus_error_not_writable (a new bus_error_t code
mapped to RBUS_ERROR_NOT_WRITABLE) so the setter learns the delivery failed.

Signed-off-by: Durmus Koyuncu <durmus.kyncu.kd@gmail.com>
Co-authored-by: Narendra Varma Dandu <narendandu@gmail.com>
(cherry picked from commit 7ec2867)
…ents (rdkcentral#1321)

* RDKBWIFI-553: OneWifi memory leak in webconfig_subdoc_type_associated_clients

* fix error path

* fixed hash_maps cleaning

* Guarding loops with MAX_NUM_RADIOS / MAX_NUM_VAP_PER_RADIO avoids potential out-of-bounds access

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Sathish Kumar Gnanasekaran <gsathish86@gmail.com>
(cherry picked from commit b43baaf)
* RDKB-66207 : BPI ci-build check overhaul
* Update makefile.yml action versions and runner
* Potential fix for pull request finding
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
* Add missing mock header
* Copilot fixes
* add build summary listing warnings and errors
* Scope out OneWifi to separate warning block.
Use clean -Werr promotion, disable noisy warning flags - based on yocto flag set.
* Fix copilot language nitpicks
* Additional fix - update actions version for community label workflow too.
* Fix 4 format-truncation occurences, which could trigger crash via overflow.
* Delineate -Wformat\* warnings in detail. Show errors on job summary too.
* Enable clang-tidy run
* Upload summaries of all steps into the review
* Scope the summary sticky note to bpi only for now.
* Add missing license to diff_to_suggestions.py
* port a few warning-friendly fixes to rpi too
* copilot fixes

* Final batch of fixes.

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
(cherry picked from commit 07a92e3)
Reason for change: Resolve Data Element GET/SET Failures Caused by Redundant Schema Parsing.
Risks: Medium
Test procedure: Flash the image and verify that the GET and SET operations function as expected.

(cherry picked from commit 8362d57)
Reason for change: Multi-ap policy config commit introduced encode and decode json objects, however one of decoding object has a wrong name, and this PR is fixing it

Test procedure: check webconfig logs and verify there are no decoding errors.

Priority: P1
Risks: Low
(cherry picked from commit 77c2565)
…on (rdkcentral#1340)

Security modes pushed by the EasyMesh controller are not applied
correctly by the translation layer.

translate_auth_type_from_easymesh() handles four of the WSC auth type
flags and falls through to WPA3 Personal for everything else, so an
open, a WPA2 Enterprise or an Enhanced Open profile silently comes up
as WPA3 Personal. Add the missing cases; the fallback keeps its current
behaviour for unrecognised flags.

The M2 override copies the network key into security.u.key.key
regardless of the translated mode. security.u is a union shared with
the RADIUS settings and the webconfig encoder reads it as RADIUS
settings for the open and the enterprise modes: the leftover key bytes
are emitted as a RADIUS server address, fail address validation on the
receiving side and the whole VAP subdoc is rejected. The override also
leaves the encryption method as decoded from the current VAP, so once a
VAP has actually been open, switching it back to a keyed mode produces
a mode/encryption pair that fails validation and the private subdoc
encode fails on every resent M2, leaving the agent unable to finish
configuration. Move the handling into a helper shared by the AP and
mesh STA branches: the union is cleared for the open and the personal
modes, kept for the enterprise modes (their RADIUS settings live in it
and M2 carries none), encryption is set to none for open, to AES for
Enhanced Open together with the PMF it requires, and for the keyed
modes to AES when the current method is not valid for the target mode -
AES is what this stack uses for all the personal modes (the M2
encryption attribute is hardcoded to AES by the controller and
discarded by the agent, so the mode is the authoritative information on
the wire).

translate_per_radio_vap_object_to_easymesh_bss_info() has no dispatch
branch for the hotspot vaps, so they hit the unknown-type branch which
aborts the translation of the whole subdoc: every vap after the hotspot
ones is dropped and the EasyMesh data model keeps stale BSS state. Skip
hotspot vaps the same way translate_vap_object_to_easymesh_for_dml()
already does.

Signed-off-by: Durmus Koyuncu <durmus.kyncu.kd@gmail.com>
(cherry picked from commit 367ac1a)
…robe Response. (rdkcentral#729)

Enabled the BSS load update period such that BSS load element is present
as part of Probe response

Signed-off-by: Sangeetha <sangeetha.s1@tataelxsi.co.in>
Co-authored-by: Narendra Varma Dandu <narendandu@gmail.com>
(cherry picked from commit 24b6870)
… Yocto layersto GitHub (rdkcentral#1381)

* MediaTek disabled git01.mediatek.com (2026-08) and moved their public Yocto layers
to GitHub, which broke the openwrt setup script(setup_MP4_2.sh).
Fixed it by updating github link

Signed-off-by: Sachin Chougale <cm.sachin@capgemini.com>

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

---------

Signed-off-by: Sachin Chougale <cm.sachin@capgemini.com>
Co-authored-by: Narendra Varma Dandu <narendandu@gmail.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
(cherry picked from commit 6281b77)
… STA (rdkcentral#1130)

* RDKBWIFI-442: Collection of Beacon measurement report from the associated STA

* Apply batched suggestions from code review

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Apply batched suggestions from code review

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* em: fix beacon report build error and unbounded hex-buffer allocation

- wifi_em.c failed to build due to a missing include.
- encode_beacon_report_object() computed data_len * 2 + 1 without
  capping data_len, allowing integer overflow and unbounded malloc.
  Cap data_len to MAX_FRAME_SZ and cast to size_t before the
  multiplication, matching encode_frame_data's existing bound.

* address review comments

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
(cherry picked from commit 152019d)
… link conflicts (rdkcentral#1393)

wifi_rrm_send_beacon_req, wifi_wnm_send_bss_tm_req,
handle_wnm_action_frame, and handle_rrm_action_frame are already
defined in rdk-wifi-hal's wifi_hal_wnm_rrm.c and linked in via
libwifihal.a. Referencing wifi_hal_parse_rm_beaon_report() (same
object file) now pulls that .o into the gtest binary, causing
"multiple definition" errors against the mock stubs here.

Dropping the stale mocks; the real implementations satisfy the link.

(cherry picked from commit 8a387f6)
…rdkcentral#1222)

- Refactored implementation to support multiple STA entries per message (spec compliant)
- Changed the struct to json format to carry cacr information from UWM to OneWifi.

Signed-off-by: Sundram Patel <sundram.p@tataelxsi.co.in>
Co-authored-by: Narendra Varma Dandu <narendandu@gmail.com>
(cherry picked from commit 99bef6a)
@Nikita-Hakai

Copy link
Copy Markdown
Collaborator Author

Closing - retargeting to rdkcentral/OneWifi:main upstream.

@github-actions

Copy link
Copy Markdown

🔨 Build summary

Commit d18bb6b · Build Check #67

Banana Pi R4 - MLO — no build log captured

Raspberry Pi — build failure

❌ Errors (29 unique)

OneWifi/include/wifi_base.h:1368:3: error: conflicting types for ‘alarm_report_policy_t’; have ‘struct <anonymous>’
OneWifi/include/wifi_base.h:568:5: error: unknown type name ‘wifi_na_sta_info_t’
OneWifi/include/wifi_webconfig.h:142:5: error: redeclaration of enumerator ‘webconfig_subdoc_type_em_config’
OneWifi/source/webconfig/wifi_decoder.c:5109:22: error: ‘wifi_radio_capabilities_t’ has no member named ‘boot_only’
OneWifi/source/webconfig/wifi_decoder.c:5111:22: error: ‘wifi_radio_capabilities_t’ has no member named ‘boot_only’
OneWifi/source/webconfig/wifi_decoder.c:5115:18: error: ‘wifi_radio_capabilities_t’ has no member named ‘scan_impact’
OneWifi/source/webconfig/wifi_decoder.c:5119:18: error: ‘wifi_radio_capabilities_t’ has no member named ‘min_scan_interval’
OneWifi/source/webconfig/wifi_decoder.c:5122:18: error: ‘wifi_radio_capabilities_t’ has no member named ‘num_op_class_entries’
OneWifi/source/webconfig/wifi_decoder.c:5126:58: error: ‘wifi_radio_capabilities_t’ has no member named ‘num_op_class_entries’
OneWifi/source/webconfig/wifi_decoder.c:5126:83: error: ‘MAX_OP_CLASS_ENTRIES’ undeclared (first use in this function); did you mean ‘MAX_PROBE_ENTRIES’?
OneWifi/source/webconfig/wifi_decoder.c:5132:37: error: ‘wifi_radio_capabilities_t’ has no member named ‘num_op_class_entries’
OneWifi/source/webconfig/wifi_decoder.c:5133:26: error: ‘wifi_radio_capabilities_t’ has no member named ‘op_class_ch_list’
OneWifi/source/webconfig/wifi_decoder.c:5135:32: error: ‘MAX_CHANNELS_PER_OP_CLASS’ undeclared (first use in this function)
OneWifi/source/webconfig/wifi_decoder.c:5140:34: error: ‘wifi_radio_capabilities_t’ has no member named ‘op_class_ch_list’
OneWifi/source/webconfig/wifi_decoder.c:5143:26: error: ‘wifi_radio_capabilities_t’ has no member named ‘op_class_ch_list’
OneWifi/source/webconfig/wifi_decoder.c:5144:26: error: ‘wifi_radio_capabilities_t’ has no member named ‘num_op_class_entries’
OneWifi/source/webconfig/wifi_encoder.c:2427:87: error: ‘wifi_radio_capabilities_t’ has no member named ‘boot_only’
OneWifi/source/webconfig/wifi_encoder.c:2428:86: error: ‘wifi_radio_capabilities_t’ has no member named ‘scan_impact’
OneWifi/source/webconfig/wifi_encoder.c:2429:92: error: ‘wifi_radio_capabilities_t’ has no member named ‘min_scan_interval’
OneWifi/source/webconfig/wifi_encoder.c:2430:63: error: ‘wifi_radio_capabilities_t’ has no member named ‘num_op_class_entries’
OneWifi/source/webconfig/wifi_encoder.c:2430:87: error: ‘MAX_OP_CLASS_ENTRIES’ undeclared (first use in this function); did you mean ‘MAX_PROBE_ENTRIES’?
OneWifi/source/webconfig/wifi_encoder.c:2431:66: error: ‘wifi_radio_capabilities_t’ has no member named ‘num_op_class_entries’
OneWifi/source/webconfig/wifi_encoder.c:2436:78: error: ‘wifi_radio_capabilities_t’ has no member named ‘op_class_ch_list’
OneWifi/source/webconfig/wifi_encoder.c:2438:59: error: ‘wifi_radio_capabilities_t’ has no member named ‘op_class_ch_list’
OneWifi/source/webconfig/wifi_encoder.c:2439:26: error: ‘MAX_CHANNELS_PER_OP_CLASS’ undeclared (first use in this function)
OneWifi/source/webconfig/wifi_encoder.c:2440:87: error: ‘wifi_radio_capabilities_t’ has no member named ‘op_class_ch_list’
make: *** [build/linux/rpi/makefile:522: OneWifi/source/webconfig/wifi_decoder.o] Error 1
make: *** [build/linux/rpi/makefile:522: OneWifi/source/webconfig/wifi_encoder.o] Error 1
make: *** [build/linux/rpi/makefile:522: OneWifi/source/webconfig/wifi_webconfig_associated_client.o] Error 1

⚠️ OneWifi warnings: 0

@github-actions github-actions Bot locked and limited conversation to collaborators Sep 15, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.