Skip to content

Bluetooth: Mesh: Cherry pick BLE Mesh 27.03.2025 #2677

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 8 commits into from
Apr 1, 2025

Conversation

PavelVPV
Copy link
Contributor

@PavelVPV PavelVPV commented Mar 27, 2025

This PR cherry-picks the following upstream mesh PRs:

  • 87396
  • 87428
  • 87399
  • 86927
  • 87620
  • 87691

@PavelVPV PavelVPV added this to the ncs-3.0.0 milestone Mar 31, 2025
@PavelVPV PavelVPV force-pushed the cherry_pick_ble_mesh_27_03_2025 branch from 944889d to ff76e69 Compare March 31, 2025 11:57
PavelVPV and others added 8 commits March 31, 2025 21:26
…tion Ack PDU

The Generic Provisioning protocol requires that a transaction must be
acknowledged before the next Generic Provisioning PDU is processed
(section 5.3.3, MshPRT_v1.1).

In the current PB-ADV implementation, if there is an ongoing transaction
(link.tx.adv points to a valid advertisement), any received Generic
Provisioning Start and Continuation PDUs are ignored.

This creates a scenario where a remote device misses the Transaction
Acknowledgment PDU and retransmits the last PDUs, but they are ignored
by the local device because the local device has already started sending
the next Provisioning PDU.

In particular, in the observed failure, the Provisioner missed the
Generic Transaction Acknowledgment PDU during the transmission of the
Provisioning Data PDU.

This commit modifies the processing logic for Generic Provisioning Start
and Continuation PDUs by checking if the received PDU has already been
received. If so, it attempts to re-send the Generic Transaction
Acknowledgment PDU.

Signed-off-by: Pavel Vasilyev <[email protected]>
(cherry picked from commit 7592b04)
Signed-off-by: Pavel Vasilyev <[email protected]>
…TT server enabled

When the GATT server is enabled the proxy advertiser
server need to be stopped. This solved a bug where the
Mesh Proxy Service is not restared.
This fix is done to fix several failing PTS test that
was failing when CONFIG_BT_MESH_ADV_EXT_GATT_SEPARATE
was enabled. Calling the stop_proxy_adv was left out
in a prevouis commit when doing code cleanup.

Signed-off-by: Ingar Kulbrandstad <[email protected]>
(cherry picked from commit a65a164)
Signed-off-by: Pavel Vasilyev <[email protected]>
… valid yet

Commit sets valid state when mesh is actualy provisioned.

Signed-off-by: Aleksandr Khromykh <[email protected]>
(cherry picked from commit 928208c)
Signed-off-by: Pavel Vasilyev <[email protected]>
Previously, PB-GATT unprovisioned advs would continue being sent if a
device is provisioned or in the process of being provisioned (an active
provisioning link) over PB-ADV.

This commit introduces the `link_cancel` callback for the `prov_bearer`
struct. When a provisioning link is established over a prov bearer, all
other (active) prov bearers will be suspended through this callback, and
re-enabled when the link is closed. An exception is made for PB-REMOTE,
which can utilize the other bearers.

The call to `bt_mesh_pb_gatt_srv_disable` in settings.c is removed. This
is called in `mesh_commit`, and is not needed as this is only used
during boot, at which point the Mesh provisioning service has not yet
been enabled/registered, meaning the function does nothing.

Signed-off-by: Håvard Reierstad <[email protected]>
(cherry picked from commit 200628e)
Signed-off-by: Pavel Vasilyev <[email protected]>
Changes Brearer --> Bearer.

Signed-off-by: Håvard Reierstad <[email protected]>
(cherry picked from commit 062fdc30bd714389928c54165a6847884bd8c185)
Signed-off-by: Pavel Vasilyev <[email protected]>
Adds a provision test to check that provisioning bearers are cancelled
when a provisioning link is opened. Modifies the functionality for
receiving unprovisioned beacons to fail the test if a unprovisioned
beacon is received from the current provisionee after a threshold.

Signed-off-by: Håvard Reierstad <[email protected]>
(cherry picked from commit acccd46)
Signed-off-by: Pavel Vasilyev <[email protected]>
When the board has been provisioned and the board is rebooted
it was not possible to connect to the board through the proxy
servcie. This fixes that the Mesh Proxy servive is restarted
after the board is rebooted.

Signed-off-by: Ingar Kulbrandstad <[email protected]>
(cherry picked from commit db84181)
Signed-off-by: Pavel Vasilyev <[email protected]>
Commit removes device key candidate if provisionee failed
during device key refresh procedure or mesh reset has been
called in between. Otherwise, device key candidate gets
stuck in the internal trusted storage of crypto library.

Signed-off-by: Aleksandr Khromykh <[email protected]>
(cherry picked from commit bf22fa6)
Signed-off-by: Pavel Vasilyev <[email protected]>
@PavelVPV PavelVPV force-pushed the cherry_pick_ble_mesh_27_03_2025 branch from ff76e69 to b749247 Compare March 31, 2025 19:26
Copy link

@nordicjm nordicjm merged commit 95fb969 into nrfconnect:main Apr 1, 2025
18 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants