Commit graph

21541 commits

Author SHA1 Message Date
Flavio Ceolin
dd152c2b89 pm: policy: Add cpu information in the API
On multicore environments the policy may need to know which CPU is
idle.

Signed-off-by: Flavio Ceolin <flavio.ceolin@intel.com>
2021-11-06 10:21:53 -04:00
Flavio Ceolin
9765e93064 pm: Track power state per cpu
Currently power management subsystem uses a global variable to hold
power state. On multicore environment this is a problem and we have to
have this information per core.

Signed-off-by: Flavio Ceolin <flavio.ceolin@intel.com>
2021-11-06 10:21:53 -04:00
Flavio Ceolin
e05247a789 pm: Change post_ops_done type to boolean
Boolean is more appropriate to this variable and it is aligned with
Zephyr's code guideline.

Signed-off-by: Flavio Ceolin <flavio.ceolin@intel.com>
2021-11-06 10:21:53 -04:00
Johan Lundin
bc0db8931c Bluetooth: Host: Set SID in bt_le_per_adv_sync_recv_info
Sets SID in bt_le_per_adv_sync_recv_info when host receives
a Periodic Advertising Report

Signed-off-by: Johan Lundin <johan.lundin@nordicsemi.no>
2021-11-06 00:41:28 +02:00
Lingao Meng
b29ce22a96 Bluetooth: Mesh: Fix incorrect write conn_count
When Device use pb-gatt bearer provisioning, and first
provisioning failed due to some reasons(invalid oob etc..).

Which cause `proxy:gatt_disconnectd` incorrected write `conn_count`

Cause this var euqals `-1`.

Signed-off-by: Lingao Meng <menglingao@xiaomi.com>
2021-11-05 14:29:27 -04:00
Carlo Caione
2c08114c27 ipc_service: mi: Convert to device driver
As part of the work to support multiple IPC instances / backends using
IPC service, the static vrings mi code must be reworked to resemble a
classic device driver.

Fix also the sample using it.

Signed-off-by: Carlo Caione <ccaione@baylibre.com>
2021-11-04 18:03:16 +01:00
Carlo Caione
086801ca2e ipc: ipc_service: Add support for multiple instances
The IPC service code is currently assuming that only one IPC instance
does exist and the user can use the IPC service API to interface with
that singleton instance.

This is a huge limitation and this patch is trying to fix this
assumption introducing three major changes to the IPC service API:

- All the IPC instances are now supposed to be instantiated as a struct
  device. A new test is introduced to be used as skeleton for all the
  other backends.

- ipc_service_register_backend() is now removed (because multiple
  backends are now supported at the same time).

- All the other ipc_service_*() functions are now taking a struct device
  pointer as parameter to specify on which instance the user is going to
  act and operate.

In this patch the documentation is also extended to better clarify the
terminology used.

Signed-off-by: Carlo Caione <ccaione@baylibre.com>
2021-11-04 18:03:16 +01:00
Gerard Marull-Paretas
b5e1ec60be pm: device: adjust flag names
Some flags were using `FLAGS` instead of `FLAG`.

Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
2021-11-04 16:49:08 +01:00
Tomasz Bursztyka
2ae9a54a09 net/tcp: Use highest priority for TCP internal work queue
Reason why the prority was at its lowest is unknown, but now that it may
be used to send local packets (which used to be sent right away),
it seems to affect TCP scheduling in loopback mode. Raising the prority
so it matches how it was previously (i.e. sent right away) should fix
things. (Note however that this issue was not broadly present, only
sockets.tls test seemed to be affected.)

Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
2021-11-04 13:54:28 +01:00
Tomasz Bursztyka
8a2e5b1648 net/context: Close TCP connection properly
Closing a connection, thus calling net_context_put() will not close a
TCP connection properly, and will leak tcp connection memory.

This is because: net_context_put calls net_context_unref which calls
net_tcp_unref which leads to unref tcp connection and thus sets
ctx->tcp to NULL. Back to net_context_put, that one finally calls
net_tcp_put: but that bails out directly since ctx->tcp is NULL.

Fixing it by inverting net_tcp_put() and net_context_unref() calls
within net_context_put().

Fixes #38598

Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
2021-11-04 13:54:28 +01:00
Tomasz Bursztyka
798588e709 net/tcp: Stop TCP state machine breaking when sending locally
On any target, running a TCP server and a net shell can show the issue:
net tcp connect local_ip port

will fail. Usally it ends up by consumming all tcp connection memory.

This is because in tcp_in(), state changes will most of the time lead to
sending SYN/ACK/etc... packets under the same thread, which will run all
through net_send_data(), back to tcp_in(). Thus a forever loop on SYN ->
SYN|ACK -> SYN -> SYN|ACK until tcp connection cannot be allocated
anymore.

Fixing it by scheduling any local packet to be sent on the queue.

Fixes #38576

Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
2021-11-04 13:54:28 +01:00
Vinayak Kariappa Chettimada
cff3703e3d Bluetooth: Host: Add Periodic Advertising ADI support
Add Periodic Advertising ADI support.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-11-04 13:32:00 +01:00
Vinayak Kariappa Chettimada
6433a6aac1 Bluetooth: Controller: Add Periodic Advertising ADI support
Add implementation to add ADI in Periodic Advertising PDUs.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-11-04 13:32:00 +01:00
Vinayak Kariappa Chettimada
346141d936 Bluetooth: Controller: Use a function to get unique DID
Refactor the implementation to use unique DID.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-11-04 13:32:00 +01:00
Vinayak Kariappa Chettimada
e50c6b0c7a Bluetooth: Controller: Fix Advertising LLL header initialization
Fix Advertising LLL header initialization to be done early
so that other functions like Periodic Advertising Parameter
set functions can use LLL context to reference ULL conttext.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-11-04 13:32:00 +01:00
Vinayak Kariappa Chettimada
400ff7b99c Bluetooth: Controller: Periodic Adv ADI Support for Duplicate Filtering
Add implementation to support Periodic Advertiser ADI
support for duplicate filtering.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-11-04 13:32:00 +01:00
Vinayak Kariappa Chettimada
cb39a13b53 Bluetooth: Controller: Move Periodic Advertiser List option check
Move Periodic Advertiser List option check in LE Periodic
Advertising Create Sync command to HCI.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-11-04 13:32:00 +01:00
Vinayak Kariappa Chettimada
b68c9cd442 Bluetooth: Controller: Use data status complete HCI define
Review rework to use data status complete HCI define.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-11-04 13:32:00 +01:00
Vinayak Kariappa Chettimada
2e4ed76287 Bluetooth: Controller: Fix Extended Scan Duplicate Filtering
Fix Extended Scan Duplicate Filtering to consider different
advertising mode and multiple advertising set id from same
advertiser Bluetooth device address.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-11-04 13:32:00 +01:00
Sebastian Salveter
4d2e46ddd6 net: lwm2m: Add option to configure device service period
The device service creates a notification of the current time resource
every 10s. This commit adds the possibility to change this timer to a
different value thus giving more control over the way the device object
is notified.

Signed-off-by: Sebastian Salveter <sebastian.salveter@grandcentrix.net>
2021-11-04 07:30:29 -04:00
Vinayak Kariappa Chettimada
9bfba6948b Bluetooth: Add missing header that defines BT_ISO_SDU_BUF_SIZE
Add missing header iso.h to hci_raw.c, that defines the
BT_ISO_SDU_BUF_SIZE.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-11-04 09:52:48 +01:00
Vinayak Kariappa Chettimada
99e02ad62a Bluetooth: Controller: Fix missing initialization of crc_ok
Fix missing initialization of crc_ok in the Periodic
Advertising Sync implementation.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-11-04 09:52:22 +01:00
Gerard Marull-Paretas
64aea4d57e tracing: fix PM system tracing
System PM tracing was broken for SEGGER SystemView, and was missing
proper documentation.

Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
2021-11-03 16:37:33 -04:00
Gerard Marull-Paretas
866b88fd2c tracing: update pm device runtime
Update the tracing definitions used by the device runtime API.

Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
2021-11-03 16:37:33 -04:00
Gerard Marull-Paretas
1cee284a46 pm: device: runtime: use pm_device_runtime* namespace
Move all PM device runtime API calls from pm_device* to the
pm_device_runtime* namespace.

Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
2021-11-03 16:37:33 -04:00
Gerard Marull-Paretas
eed8bd9c61 pm: device: runtime: refactor API
This patch refactors the runtime API to make it more clear and simple.

Relevant changes:

- API uses the action callback in a direct manner, avoiding unnecessary
  overhead.
- API documentation has been improved to include detailed return error
  codes.
- pm_runtime_disable() is now synchronous (to simplify possible error
  paths) and returns error in case it fails. It is also safe to disable
  in pre-kernel now.
- pm_runtime_put(_async)() will return -EALREADY if called with usage
  count at zero (result of an unbalanced get/put call sequence)
- A transitional state has been added back. This makes code more
  readable, and avoids using atomics (not required).

TODO:

- Solve in a better manner the asynchronous suspend error path (now
  "solved" using asserts).

Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
2021-11-03 16:37:33 -04:00
Gerard Marull-Paretas
e3fece5241 pm: device: runtime: remove pm_device_wait
After the removal of pm_device_get_async, the pm_device_wait API has
become redundant. Its usage after pm_device_put_async should not be
considered a valid usecase, since after that call what will happen is a
pm_device_get (which is blocking).

Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
2021-11-03 16:37:33 -04:00
Gerard Marull-Paretas
30d217aa28 pm: device: runtime: remove pm_device_get_async
As of today there is no clear usage of asynchronous gets, since in
general, a resume operation should be synchronous (we are about to use
the device immediately after resuming it). Removing this API simplifies
the runtime implementation in a significant way (refer to future
commits).

Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
2021-11-03 16:37:33 -04:00
Vinayak Kariappa Chettimada
a7b5cc7af8 Bluetooth: Controller: Use define for offset unit bits
Use define for offset unit bits in the auxiliary pointer
structure.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-11-03 16:36:49 -04:00
Vinayak Kariappa Chettimada
1d0709792d Bluetooth: Controller: Use function to get set/clear AD data
Use function to get the set/clear AD data parameter to
populate the common extended payload format field.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-11-03 16:36:49 -04:00
Vinayak Kariappa Chettimada
c78e0512d6 Bluetooth: Controller: Explicitly typecast void return
Explicitly typecast void return for memcpy and memmove
calls.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-11-03 16:36:49 -04:00
Vinayak Kariappa Chettimada
dab1bb17d5 Bluetooth: Controller: Update PDU header fields population
Updated the implementation to allow population of auxiliary
pointer field as necessary to append PDU chains.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-11-03 16:36:49 -04:00
Vinayak Kariappa Chettimada
0c196d1334 Bluetooth: Controller: Extended Scan Response back-to-back chaining
Add LLL implementation to chain Extended Advertising Scan
Response PDUs back-to-back.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-11-03 16:36:49 -04:00
Vinayak Kariappa Chettimada
c5eab2011f Bluetooth: Controller: Extended Advertising back-to-back chaining
Add LLL implementation to chain Extended Advertising PDUs
back-to-back.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-11-03 16:36:49 -04:00
Andrew Hedin
e828009757 mgmt: mcumgr: Make SMP service notification function public
Allow SMP messages to be sent from user space.
For example, a user defined command can be sent when a value changes
so the client doesn't have to poll.
Signed-off-by: Andrew Hedin <andrew.hedin@lairdconnect.com>
2021-11-03 16:36:17 -04:00
Pavel Hübner
14ecebcde8 settings: Add name to backend choice in Kconfig
Unless a choice is named, its default value
cannot be changed in another Kconfig file.

Signed-off-by: Pavel Hübner <pavel.hubner@hardwario.com>
2021-11-03 16:35:46 -04:00
Lingao Meng
fd5c30c68b Bluetooth: Add check given services is register API
Add API for chech given services is register.

Signed-off-by: Lingao Meng <menglingao@xiaomi.com>
2021-11-03 18:57:03 +01:00
Vinayak Kariappa Chettimada
7d53c61da3 Bluetooth: Controller: Fix missing traversal of TargetA
Fix missing traversal of TargetA field in advertised Common
Extended Payload Format. This will cause invalid offset used
for fields following the TargetA when Extended Directed
Advertising is used.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-11-03 16:59:46 +01:00
Vinayak Kariappa Chettimada
a3baf8f5da Bluetooth: Controller: Fix ASSERTION FAIL [!hdr->disabled_cb]
Fix ASSERTION FAIL [!hdr->disabled_cb] @ ull_conn.c:882

When initiating a connection using continuous scan window
if there is preemption by the next window then the ISR
callback was overwritten to switch to next scan window
instead of the initiator event being closed.

Fixed by not aborting the initiating state when requested
by the next continuous scan window.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-11-03 16:59:00 +01:00
Vinayak Kariappa Chettimada
311d6da337 Bluetooth: Controller: Review rework fixes and adding const qualifiers
Review rework fixes and adding const qualifiers.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-11-03 16:52:58 +01:00
Vinayak Kariappa Chettimada
5725cea881 Bluetooth: Controller: Use define for max advertising radio channels
Use define for maximum number of primary advertising radio
channels used while scanning.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-11-03 16:52:58 +01:00
Vinayak Kariappa Chettimada
e4c40a5f99 Bluetooth: Controller: Use defined to check Adv and Scan filter policy
Use defines to check Advertising and Scan filter policy.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-11-03 16:52:58 +01:00
Vinayak Kariappa Chettimada
2128e4ab1c Bluetooth: Controller: Use define to translate HCI to Aux Ptr PHY index
In HCI event, PHY indices start at 1 compare to 0 indexed in
aux_ptr field in the Common Extended Payload Format in the PDUs.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-11-03 16:52:58 +01:00
Vinayak Kariappa Chettimada
c1ed2bc17b Bluetooth: Controller: Minor whitespace and return data type fixes
Minor changes to remove redundant whitespaces and to use
uint8_t instead of uint32_t to return true or false.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-11-03 16:52:58 +01:00
Vinayak Kariappa Chettimada
3ba30426ca Bluetooth: Controller: Add const qualifiers to functions
Add const qualifiers to function parameters.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-11-03 16:52:58 +01:00
Vinayak Kariappa Chettimada
f0ea78815a Bluetooth: Controller: Improve directed address type readability
Improve readability of directed address type implementation.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-11-03 16:52:58 +01:00
Vinayak Kariappa Chettimada
effb0ef60f Bluetooth: Controller: Fix missing reset of LLL scheduling
Fix missing reset of LLL scheduling flag when auxiliary PDU
scan scheduled in LLL is aborted due to preemption.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-11-03 16:52:58 +01:00
Vinayak Kariappa Chettimada
ed7e902813 Bluetooth: Controller: Fix skipped Extended Scanning
Fix continuous skipping of Extended Scanning of Auxiliary
PDUs. Due to duplicate prepare events of continuous scanning
present before the auxiliary scanning prepare, preemption
schedules only the primary scan prepare and auxiliary scan
infinitely is postponed.

This is a revert of commit 190532bcc4 ("Bluetooth:
Controller: Only remove duplicate resume events").

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-11-03 16:52:58 +01:00
Vinayak Kariappa Chettimada
333c23beec Bluetooth: Controller: Implement Extend Adv Report HCI fragmentation
Implementation to fragment the list of received Extended
Advertising PDUs into HCI LE Extended Advertising report
events.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-11-03 16:52:58 +01:00
Vinayak Kariappa Chettimada
edb436512b Bluetooth: Controller: Fix missing PDU end timestamp for Scan Response
Fix missing implementation to setup the PDU radio end
timestamp capture for Scan Response PDU.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-11-03 16:52:58 +01:00