Compare commits

...

10 Commits

Author SHA1 Message Date
Volodymyr Pavlenko
6753f152bc profiles: prpl: prplMesh: bump to master-2026-08-29
Some checks failed
Coverity scan build / Coverity x86/64 build (push) Has been cancelled
Integrates following changes:
- CI: bump prplOS to latest-24.10 2026-08-26 (03d8d7192)
- ci: host tool: pkg-config (046de1c7f)
- controller: clear old CAC status reports (2372924a6)
- agent: report capabilities for MLD clients (bbec544de)
- agent: fronthaul: monitor: fix ARP socket wrapper leak (96a762244)
- ci: build: use github.com package feed mirrors (1878217dd)
- hal: whm: migrate to KeyPassphraseVisible (e75041ecb)

References:  PPM-4219, PPM-4210, PPM-4203, PPM-4218, PPW-891
Signed-off-by: Volodymyr Pavlenko <pavlenko.vv@pm.me>
2026-08-29 14:23:05 +03:00
prplbot
50317acfc7 profiles: feed_prplmesh: pwhm: bump to dev-PPW-1799
Integrates following changes:
pwhm:
- 7203ea733: ("ci: baf: update autogenerated files", 2026-07-24)
- 61e7f3be4: ("pwhm: AccessPoint/Endpoint: rename Security param "KeyPassPhrase" to TR-181 standard 'KeyPassphrase'", 2026-07-21)
- 131055a50: ("pwhm: AccessPoint/Endpoint: add KeyPassphraseVisible and SAEPassphraseVisible parameters", 2026-06-03)
prplmesh-dm-mapper:
- 14a466d: ("odl: add getApplicableBandwidthPerChannel()", 2026-08-11)
prplMesh:
- 1a02fd656: ("hal: whm: migrate to KeyPassphraseVisible", 2026-07-17)

References: PPW-891
Signed-off-by: prplbot <bot@prplfoundation.org>
Signed-off-by: Maarten De Decker <maarten.dedecker@mind.be>
Signed-off-by: Igor Plesser <i.plesser@inango-systems.com>
Signed-off-by: Houssem Dafdouf <houssem.dafdouf_ext@softathome.com>
Signed-off-by: Hela Saadani <hela.saadani_ext@softathome.com>
2026-08-28 16:46:08 +01:00
Houssem Dafdouf
78ace27319 ci: cram: wifi: add power save test
Add a CRAM test covering FEAT-105. The test consists of:
- Enable all vaps
- Enable power save on 2.4.GHz radio
- Check the behavior of radio and vaps

References: FEAT-105,PPM-3928
Signed-off-by: Houssem Dafdouf <houssem.dafdouf_ext@softathome.com>
2026-08-28 12:57:56 +01:00
Houssem Dafdouf
c1ba5ad88c ci: cram: wifi: freedom: 100-pwhm_step_2.t: restore prplmesh resume
Restore the unintentionally removed prplmesh resume step that was
pushed during FEAT-389 integration.

References: FEAT-105,PPM-3928
Signed-off-by: Houssem Dafdouf <houssem.dafdouf_ext@softathome.com>
2026-08-28 12:57:56 +01:00
Houssem Dafdouf
36a48ba4c0 ci: cram: 105-pwhm-wpa3-cm.t: add missing BHs MLDUnit restore
Restore the MLDUnit relative to BH interfaces to ensure the test
environment is properly cleaned up after execution.

Not restoring the BHs MLDUnit may affect the behavior of the following
tests.

References: PPM-3928
Signed-off-by: Houssem Dafdouf <houssem.dafdouf_ext@softathome.com>
2026-08-28 12:57:56 +01:00
FAOUZI YAHYA
30d3c7e0d4 ci: cram: obuspa.expected: add Device.WiFi.Radio.{i}.SetRadioPowerDown
Integrates:
- add Device.WiFi.Radio.{i}.X_PRPLWARE-COM_RadioPowerSave.SetRadioPowerDown
- add Device.WiFi.Radio.{i}.X_PRPLWARE-COM_RadioPowerSave.RadioPowerSave DM

References: FEAT-105,PPM-3928
Signed-off-by: FAOUZI YAHYA <faouzi.yahya_ext@softathome.com>
Signed-off-by: Houssem Dafdouf <houssem.dafdouf_ext@softathome.com>
2026-08-28 12:57:56 +01:00
prplbot
5071101456 profiles: feed_prplmesh.yml: feed_prplmesh: Radio Off Power Save RPC and add mapping for SetRadioPowerDown()
Integrates following changes:
- pwhm: Radio Off Power Save RPC (90f384b6)
- 73a00c8a: ("dm-mapper: add mapping for SetRadioPowerDown()", 2026-08-05)

References: PPM-3928, FEAT-105
Signed-off-by: prplbot <bot@prplfoundation.org>
Signed-off-by: FAOUZI YAHYA <faouzi.yahya_ext@softathome.com>
2026-08-28 12:54:42 +01:00
prplbot
d31e9fe2df profiles: feed_prplos.yml: feed_prplos: move PCM import logs to /data and add PCM import log rotation
Integrates following changes:
- odl: add PCM import log rotation (2f2b0f76)
- odl: pcm: move PCM import logs to /data (7c7b6e7a)

References: PPW-2152
Signed-off-by: prplbot <bot@prplfoundation.org>
Signed-off-by: FAOUZI YAHYA <faouzi.yahya_ext@softathome.com>
2026-08-28 11:48:14 +01:00
prplbot
e0fa82980c profiles: feed_prplmesh: pwhm: hostapd: disable backslash escaping when writing config
Integrates following changes:
- pwhm: hostapd: disable backslash escaping when writing config (a7808cca)

References: PPW-1971
Signed-off-by: prplbot <bot@prplfoundation.org>
Signed-off-by: Hela Saadani <hela.saadani_ext@softathome.com>
2026-08-28 09:14:41 +01:00
FAOUZI YAHYA
a29e3d0157 ci: cram: obuspa.expected: update configure Device.SoftwareModules
Integrates:
- update Device.SoftwareModules, Device.SoftwareModules.ExecutionUnit and Device.SoftwareModules.InstallDU()

References: PCF-2687
Signed-off-by: FAOUZI YAHYA <faouzi.yahya_ext@softathome.com>
2026-08-27 13:44:34 +01:00
9 changed files with 202 additions and 4 deletions

View File

@ -3373,6 +3373,7 @@ Device.SoftwareModules.DeploymentUnit.{i}.Update() input:AllocatedDiskSpace
Device.SoftwareModules.DeploymentUnit.{i}.Update() input:AllocatedMemory
Device.SoftwareModules.DeploymentUnit.{i}.Update() input:ApplicationData
Device.SoftwareModules.DeploymentUnit.{i}.Update() input:Data
Device.SoftwareModules.DeploymentUnit.{i}.Update() input:EnableHostCapabilities
Device.SoftwareModules.DeploymentUnit.{i}.Update() input:EnvVariable
Device.SoftwareModules.DeploymentUnit.{i}.Update() input:HostObject
Device.SoftwareModules.DeploymentUnit.{i}.Update() input:ModuleVersion
@ -3471,6 +3472,7 @@ Device.SoftwareModules.ExecutionUnit.{i}.CreationTime
Device.SoftwareModules.ExecutionUnit.{i}.Description proto::timingila
Device.SoftwareModules.ExecutionUnit.{i}.DiskSpaceInUse proto::timingila
Device.SoftwareModules.ExecutionUnit.{i}.EUID proto::timingila
Device.SoftwareModules.ExecutionUnit.{i}.EnableHostCapabilities proto::timingila
Device.SoftwareModules.ExecutionUnit.{i}.EnvVariable.{i}. proto::timingila
Device.SoftwareModules.ExecutionUnit.{i}.EnvVariable.{i}.Alias proto::timingila
Device.SoftwareModules.ExecutionUnit.{i}.EnvVariable.{i}.Key proto::timingila
@ -3500,6 +3502,7 @@ Device.SoftwareModules.ExecutionUnit.{i}.NetworkConfig.PortForwarding.{i}.Interf
Device.SoftwareModules.ExecutionUnit.{i}.NetworkConfig.PortForwarding.{i}.InternalPort proto::timingila
Device.SoftwareModules.ExecutionUnit.{i}.NetworkConfig.PortForwarding.{i}.Protocol proto::timingila
Device.SoftwareModules.ExecutionUnit.{i}.NetworkConfig.X_PRPLWARE-COM_DNSSDRefList proto::timingila
Device.SoftwareModules.ExecutionUnit.{i}.Privileged proto::timingila
Device.SoftwareModules.ExecutionUnit.{i}.References proto::timingila
Device.SoftwareModules.ExecutionUnit.{i}.RegisterTrustPaths proto::timingila
Device.SoftwareModules.ExecutionUnit.{i}.RequiredUserRoles proto::timingila
@ -3522,6 +3525,7 @@ Device.SoftwareModules.InstallDU() input:ApplicationData
Device.SoftwareModules.InstallDU() input:AutoRestart
Device.SoftwareModules.InstallDU() input:AutoStart
Device.SoftwareModules.InstallDU() input:Data
Device.SoftwareModules.InstallDU() input:EnableHostCapabilities
Device.SoftwareModules.InstallDU() input:EnvVariable
Device.SoftwareModules.InstallDU() input:ExecutionEnvRef
Device.SoftwareModules.InstallDU() input:HostObject
@ -5326,6 +5330,11 @@ Device.WiFi.Radio.{i}.X_PRPLWARE-COM_NaStaMonitor.deleteNonAssociatedDevice()
Device.WiFi.Radio.{i}.X_PRPLWARE-COM_NaStaMonitor.deleteNonAssociatedDevice() input:macaddress
Device.WiFi.Radio.{i}.X_PRPLWARE-COM_NaStaMonitor.getMonitorDeviceStats() proto::prplmesh-dm-mapper
Device.WiFi.Radio.{i}.X_PRPLWARE-COM_NaStaMonitor.getNaStationStats() proto::prplmesh-dm-mapper
Device.WiFi.Radio.{i}.X_PRPLWARE-COM_RadioPowerSave. proto::prplmesh-dm-mapper
Device.WiFi.Radio.{i}.X_PRPLWARE-COM_RadioPowerSave.Enable proto::prplmesh-dm-mapper
Device.WiFi.Radio.{i}.X_PRPLWARE-COM_RadioPowerSave.SteerBandPrio proto::prplmesh-dm-mapper
Device.WiFi.Radio.{i}.X_PRPLWARE-COM_RadioPowerSave.SteerPeriod proto::prplmesh-dm-mapper
Device.WiFi.Radio.{i}.X_PRPLWARE-COM_RadioPowerSave.SteerRetries proto::prplmesh-dm-mapper
Device.WiFi.Radio.{i}.X_PRPLWARE-COM_ScanComplete! proto::prplmesh-dm-mapper
Device.WiFi.Radio.{i}.X_PRPLWARE-COM_Sensing. proto::prplmesh-dm-mapper
Device.WiFi.Radio.{i}.X_PRPLWARE-COM_Sensing.CSIClient.{i}. proto::prplmesh-dm-mapper
@ -5345,6 +5354,7 @@ Device.WiFi.Radio.{i}.X_PRPLWARE-COM_Sensing.addClient() input:Receiver
Device.WiFi.Radio.{i}.X_PRPLWARE-COM_Sensing.csiStats() proto::prplmesh-dm-mapper
Device.WiFi.Radio.{i}.X_PRPLWARE-COM_Sensing.delClient() proto::prplmesh-dm-mapper
Device.WiFi.Radio.{i}.X_PRPLWARE-COM_Sensing.delClient() input:MACAddress
Device.WiFi.Radio.{i}.X_PRPLWARE-COM_SetRadioPowerDown() proto::prplmesh-dm-mapper
Device.WiFi.Radio.{i}.X_PRPLWARE-COM_SupportedSensingDataTypes proto::prplmesh-dm-mapper
Device.WiFi.Radio.{i}.X_PRPLWARE-COM_SupportedSensingExchangeTypes proto::prplmesh-dm-mapper
Device.WiFi.Radio.{i}.X_PRPLWARE-COM_getApplicableBandwidthPerChannel() proto::prplmesh-dm-mapper

View File

@ -0,0 +1 @@
../wifi/wifi-power-save.t

View File

@ -241,6 +241,15 @@ get_ssid_ssid() {
R "usp-cli -j -l Device.WiFi.SSID.?0 | jsonfilter -e @[0]'[@.Alias != \"ep2g0\" && @.Alias != \"ep5g0\" && @.Alias != \"ep6g0\"].SSID'" | LC_ALL=C sort
}
# print the status of the accesspoints related to a given radio
# In : Radio index
# Out : the status of all the accespoint attached to the radio
get_radio_ap_status() {
local rad=$1
rad_name=$(R "ba-cli -l WiFi.Radio.$rad.Name?" | sed '/^$/d')
R "ba-cli WiFi.AccessPoint.? | sed -n '/Alias=\"${rad_name}/,/\.Status=/ { /\.Status=/p }'"
}
# Set MLDUnit
# In : AccessPoint object index, MLDUnit
# Out : MLDUnit value set

View File

@ -0,0 +1,168 @@
Create R alias:
$ alias R="${CRAM_REMOTE_COMMAND:-}"
$ . "${TESTDIR}/../scripts/wifi.sh"
$ R logger -t cram "Starting PWHM power save test ..."
Check RadioPowerSave configuration defaults:
$ wifi_dm Radio.*.X_PRPLWARE-COM_RadioPowerSave.?
Device.WiFi.Radio.1.X_PRPLWARE-COM_RadioPowerSave.Enable=1
Device.WiFi.Radio.1.X_PRPLWARE-COM_RadioPowerSave.SteerBandPrio="Lowest"
Device.WiFi.Radio.1.X_PRPLWARE-COM_RadioPowerSave.SteerPeriod=1000
Device.WiFi.Radio.1.X_PRPLWARE-COM_RadioPowerSave.SteerRetries=1
Device.WiFi.Radio.2.X_PRPLWARE-COM_RadioPowerSave.Enable=1
Device.WiFi.Radio.2.X_PRPLWARE-COM_RadioPowerSave.SteerBandPrio="Lowest"
Device.WiFi.Radio.2.X_PRPLWARE-COM_RadioPowerSave.SteerPeriod=1000
Device.WiFi.Radio.2.X_PRPLWARE-COM_RadioPowerSave.SteerRetries=1
Device.WiFi.Radio.3.X_PRPLWARE-COM_RadioPowerSave.Enable=1
Device.WiFi.Radio.3.X_PRPLWARE-COM_RadioPowerSave.SteerBandPrio="Lowest"
Device.WiFi.Radio.3.X_PRPLWARE-COM_RadioPowerSave.SteerPeriod=1000
Device.WiFi.Radio.3.X_PRPLWARE-COM_RadioPowerSave.SteerRetries=1
Stop prplMesh:
$ R logger -t cram "Stop prplMesh"
$ R "ba-cli -l X_PRPLWARE-COM_ProcessManager.PrplMesh.Enable=0" | tr -d '\n'
0 (no-eol)
$ sleep 5
Enable all AccessPoints:
$ R logger -t cram "Enables all vaps"
$ wifi_dm "AccessPoint.*.Enable=1"
Device.WiFi.AccessPoint.1.Enable=1
Device.WiFi.AccessPoint.2.Enable=1
Device.WiFi.AccessPoint.3.Enable=1
Device.WiFi.AccessPoint.4.Enable=1
Device.WiFi.AccessPoint.5.Enable=1
Device.WiFi.AccessPoint.6.Enable=1
Device.WiFi.AccessPoint.7.Enable=1
Device.WiFi.AccessPoint.8.Enable=1
Device.WiFi.AccessPoint.9.Enable=1
$ sleep 10
Check AccessPoints status:
$ wifi_dm "AccessPoint.*.Status?0"
Device.WiFi.AccessPoint.1.Status="Enabled"
Device.WiFi.AccessPoint.2.Status="Enabled"
Device.WiFi.AccessPoint.3.Status="Enabled"
Device.WiFi.AccessPoint.4.Status="Enabled"
Device.WiFi.AccessPoint.5.Status="Enabled"
Device.WiFi.AccessPoint.6.Status="Enabled"
Device.WiFi.AccessPoint.7.Status="Enabled"
Device.WiFi.AccessPoint.8.Status="Enabled"
Device.WiFi.AccessPoint.9.Status="Enabled"
Check radio status:
$ wifi_dm "Radio.*.Status?"
Device.WiFi.Radio.1.Status="Up"
Device.WiFi.Radio.2.Status="Up"
Device.WiFi.Radio.3.Status="Up"
Save hostap pid:
$ hostap_pid=$(R pgrep -f 'hostapd')
$ R logger -t cram "hostap PID : $hostap_pid"
Trigger power save on Radio 1:
$ R logger -t cram "call SetRadioPowerDown"
$ R "ba-cli -l 'Device.WiFi.Radio.1.X_PRPLWARE-COM_SetRadioPowerDown()'" | sed '/^$/d'
Device.WiFi.Radio.1.X_PRPLWARE-COM_SetRadioPowerDown() returned
[
{
}
]
$ sleep 10
Check radio status:
$ wifi_dm "Radio.1.Enable?"
Device.WiFi.Radio.1.Enable=0
$ wifi_dm "Radio.1.Status?"
Device.WiFi.Radio.1.Status="Down"
Check corresponding AccessPoints status:
$ get_radio_ap_status 1
WiFi.AccessPoint.\d+.Status="Disabled" (re)
WiFi.AccessPoint.\d+.Status="Disabled" (re)
WiFi.AccessPoint.\d+.Status="Disabled" (re)
Re-enable Radio 1 and check the related vaps status:
$ R logger -t cram "Enable Radio 1"
$ wifi_dm "Radio.1.Enable=1"
Device.WiFi.Radio.1.Enable=1
$ sleep 10
$ get_radio_ap_status 1
WiFi.AccessPoint.\d+.Status="Enabled" (re)
WiFi.AccessPoint.\d+.Status="Enabled" (re)
WiFi.AccessPoint.\d+.Status="Enabled" (re)
Before leaving the test, check if hostap pid has changed or not:
$ if [ "$(R pgrep -f 'hostapd')" = "$hostap_pid" ]; then echo "true"; else echo "hostap restarted during the test !"; fi
true
Disable all vaps:
$ R logger -t cram "Disable all vaps"
$ wifi_dm "AccessPoint.*.Enable=0"
Device.WiFi.AccessPoint.1.Enable=0
Device.WiFi.AccessPoint.2.Enable=0
Device.WiFi.AccessPoint.3.Enable=0
Device.WiFi.AccessPoint.4.Enable=0
Device.WiFi.AccessPoint.5.Enable=0
Device.WiFi.AccessPoint.6.Enable=0
Device.WiFi.AccessPoint.7.Enable=0
Device.WiFi.AccessPoint.8.Enable=0
Device.WiFi.AccessPoint.9.Enable=0
$ sleep 10
Check AccessPoints status:
$ wifi_dm "AccessPoint.*.Status?0"
Device.WiFi.AccessPoint.1.Status="Disabled"
Device.WiFi.AccessPoint.2.Status="Disabled"
Device.WiFi.AccessPoint.3.Status="Disabled"
Device.WiFi.AccessPoint.4.Status="Disabled"
Device.WiFi.AccessPoint.5.Status="Disabled"
Device.WiFi.AccessPoint.6.Status="Disabled"
Device.WiFi.AccessPoint.7.Status="Disabled"
Device.WiFi.AccessPoint.8.Status="Disabled"
Device.WiFi.AccessPoint.9.Status="Disabled"
Re-enable Radio 1 and check that it's back to default state (Dormant):
$ wifi_dm "Radio.1.Enable=1"
Device.WiFi.Radio.1.Enable=1
$ sleep 10
Check radio status:
$ wifi_dm "Radio.*.Status?"
Device.WiFi.Radio.1.Status="Dormant"
Device.WiFi.Radio.2.Status="Dormant"
Device.WiFi.Radio.3.Status="Dormant"
Resume prplMesh:
$ R logger -t cram "Resume prplMesh"
$ R "ba-cli -l X_PRPLWARE-COM_ProcessManager.PrplMesh.Enable=1" | tr -d '\n'
1 (no-eol)
$ sleep 10
$ R logger -t cram "Test finished!"

View File

@ -143,6 +143,15 @@ Restore MLDUnit to default values
$ set_mlduint 6 1
1
$ set_mlduint 7 2
2
$ set_mlduint 8 2
2
$ set_mlduint 9 2
2
$ sleep 10
Check RSNO2 parameter was added to 5GHz hostapd conf file:

View File

@ -0,0 +1 @@
../wifi/wifi-power-save.t

View File

@ -2,4 +2,4 @@
feeds:
- name: feed_prplmesh
uri: https://gitlab.com/prpl-foundation/prplos/feeds/feed-prplmesh.git
revision: main@af298bb28afbc83168b9217eec17d6099b80a0b7
revision: main@6af68a6e4065f7c382dc95f6525ff11af993710b

View File

@ -2,4 +2,4 @@
feeds:
- name: feed_prplos
uri: https://gitlab.com/prpl-foundation/prplos/feeds/feed-prplos.git
revision: main@69fc431d44ae3518e2fa32af320964a5a529cd4a
revision: main@822601eda5c5449d9257f6817ddffafdf5b7060f