Commit graph

22,555 commits

Author SHA1 Message Date
Piotr Pryga
87448f99fe Bluetooth: host: Add host API to run conn CTE TX params set
Add host API to allow execution of HCI_LE_Set_Connection_CTE_Transmit_-
Parameters HCI command.

The commit also provides a refactored version of hci_df_set_conn_cte_tx-
_param function. The function was aligned to other hci_df_XXX functions
structure with separated parameters validation and preparation of
command object before it is send to controller.

Signed-off-by: Piotr Pryga <piotr.pryga@nordicsemi.no>
Co-authored-by: Emil Gydesen <Thalley@users.noreply.github.com>
2022-01-04 14:12:15 +01:00
Sebastian Bøe
22365b4dea mcumgr: kconfig: Have OS_MGMT_TASKSTAT default to n
OS_MGMT_TASKSTAT depends on THREAD_MONITOR, so when it defaults to y
and THREAD_MONITOR is disabled we get a build error.

Add a depends on to enforce a correct configuration.

Remove default y, as features should be default n.

Signed-off-by: Sebastian Bøe <sebastian.boe@nordicsemi.no>
2022-01-04 11:54:28 +01:00
Sebastian Bøe
8e47651e3f mcumgr: kconfig: Have task funcs ifdef on CONFIG_OS_MGMT_TASKSTAT
zephyr_os_mgmt_task_at and friends are ifdef'ing on a feature they
depend on instead of their own Kconfig option.

Which is not correct.

ifdef on CONFIG_OS_MGMT_TASKSTAT instead.

Signed-off-by: Sebastian Bøe <sebastian.boe@nordicsemi.no>
2022-01-04 11:54:28 +01:00
Henrik Brix Andersen
b1b77c1774 drivers: can: change can_tx_callback_t function signature
Change the can_tx_callback_t function signature to use an "int" (not an
uint32_t) for representing transmission errors.

The "error" callback function parameter is functionally equivalent to
the return value from can_send() and thus needs to use the same data
type and needs to be able to hold negative errno values.

Signed-off-by: Henrik Brix Andersen <hebad@vestas.com>
2022-01-01 07:40:29 -05:00
Krzysztof Chruscinski
16bd0df2fd testsuite: ztest: Add framework for stress testing
Added framework for concurrency testing. Framework setup multiple
priority contexts and executes user handlers in that context. Test
terminates after certain number of repetitions or preemptions or
when timeout occurs. It can also be aborted by the user.

Framework can be used for testing resiliency to preemptions.

Signed-off-by: Krzysztof Chruscinski <krzysztof.chruscinski@nordicsemi.no>
2022-01-01 07:37:22 -05:00
Vinayak Kariappa Chettimada
a3127afb53 Bluetooth: Controller: Advertising Extensions dynamic Tx power control
Update Controller implementation of Advertising Extensions
to inherit the set dynamic Tx power values of the primary
channel PDU transmissions.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-12-31 20:18:00 +01:00
Piotr Pryga
3344aee332 Bluetooth: host: df: Correct style for CHECKIF statements
Correct wrong coding style used in couple of plces where
CHECKIF marco is used.

Signed-off-by: Piotr Pryga <piotr.pryga@nordicsemi.no>
2021-12-31 17:45:52 +02:00
Piotr Pryga
61872da64e Bluetooth: host: Add API to run conn CTE response HCI command
Add host API to allow execution of HCI_LE_Connection_CTE_Response_-
Enable HCI command.

Signed-off-by: Piotr Pryga <piotr.pryga@nordicsemi.no>
2021-12-31 17:45:52 +02:00
David Brown
fac2c22824 storage/flash_map: Use larger type for alignment
In MCUboot:
    commit 4aa286d2db2d02a8f0ff29cdc3304f3185dbe261
    Author: Gustavo Henrique Nihei <gustavo.nihei@espressif.com>
    Date:   Wed Nov 24 14:54:56 2021 -0300

        flash_map: Increase minimum supported write align via
            flash_area_align

MCUboot changed the type of the alignment value in flash from a uint8_t
to a uint32_t.  Indeed, Zephyr contains flash devices that have a larger
alignment than will fit in an 8-bit value.  This generally means that
`flash_area_align` will just return 0 on these platforms.

Change call in Zephyr as well.

This shouldn't cause any observable behavior changes in Zephyr, other
than making some cases that don't work currently begin to work.  If a
client is storing these results in a u8, it will be truncated, the same
as things were previously.  If, however, the caller is prepared to
handle a larger type, this will result in having correct information,
instead of the truncated value.

Signed-off-by: David Brown <david.brown@linaro.org>
2021-12-30 16:32:02 -05:00
Vinayak Kariappa Chettimada
8660457ec2 Bluetooth: Controller: Apply suggestions from code review
Apply suggestions from code review.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-12-29 18:01:17 +01:00
Vinayak Kariappa Chettimada
6b9b16f06d Bluetooth: Controller: Minor changes related to review comments
Minor changes related to review comments.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-12-29 18:01:17 +01:00
Vinayak Kariappa Chettimada
c706a095e8 Bluetooth: Controller: Rename drop to accept to avoid negations
Rename the variable drop to accept to avoid multiple use of
negations in the implementation.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-12-29 18:01:17 +01:00
Vinayak Kariappa Chettimada
471543e75e Bluetooth: Controller: Use DUP_FILTER_DISABLED define
Use DUP_FILTER_DISABLED define instead of magic value to
represent duplicate filtering being disabled.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-12-29 18:01:17 +01:00
Vinayak Kariappa Chettimada
a1810425ca Bluetooth: Controller: Update support for Periodic Sync Receive enable
Update support for Periodic Advertising Synchronization
Receive Enable command, so that PDUs are received so that
contents of Extended Common Payload Format is parsed and
process for information like Channel Map Update and BIGInfo.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-12-29 18:01:17 +01:00
Vinayak Kariappa Chettimada
64eaa52e41 Bluetooth: Controller: Initial support for Periodic Sync Receive enable
Initial support for Periodic Advertising Synchronization
Receive Enable command.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-12-29 18:01:17 +01:00
Pavel Vasilyev
91c87fdc7d Bluetooth: Mesh: Fix publication period measurement
Period measurement should be started right after a message is updated.
That is because `struct bt_mesh_send_cb.start` callback is called from
the advertiser thread which is not necessary to be scheduled immeditely
and a user may see some delays between update handler calls.

The publication timer still needs to be scheduled after a message being
actually sent out to the air so that access layer doesn't overflow the
advertiser's buffer. To achieve some specific use cases, where a
published message needs to be retransmitted with 50ms interval, a user
has to switch off network retransmissions to make the legacy advertiser
sleep for the shortest possible time.

Signed-off-by: Pavel Vasilyev <pavel.vasilyev@nordicsemi.no>
2021-12-23 14:57:54 +01:00
Piotr Pryga
49f0aba94c Bluetooth: Controller: Fix wrong variable passed to isr_done
Wrong variable was passed when isr_done was registered. It lead to
memory faults and exceptions. It should be a pointer to lll_adv_sync
instance instead of lll_adv.

The commit fixes the issue.

Signed-off-by: Piotr Pryga <piotr.pryga@nordicsemi.no>
2021-12-23 11:20:00 +01:00
Vinayak Kariappa Chettimada
0b47645cd7 Bluetooth: Controller: Fix Periodic Advertising Sync aux context leak
Fix Periodic Advertising Synchronization Auxiliary context
leak when failing to receive chain PDUs.
Auxiliary context has not being associated with sync context
when ULL scheduling was used.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-12-22 16:55:17 +01:00
Vinayak Kariappa Chettimada
6c8ff338b8 Bluetooth: Controller: Remove redundant extra list release
Periodic Advertising Synchronization Reports do not use a
list for the received chain PDUs, remove the stale code that
free extra list.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-12-22 16:55:17 +01:00
Vinayak Kariappa Chettimada
079e7976fe Bluetooth: Controller: Fix erroneous merge conflict resolution
Fix erroneous merge conflict resolution.

Regression in commit f023b5f611 ("Bluetooth: controller:
push topic branch to main") and
commit 2e2900f1bb ("Bluetooth: controller: revert
erroneous deletion").

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-12-22 16:53:37 +01:00
Vinayak Kariappa Chettimada
bf2bb51035 Bluetooth: Controller: Fix Periodic Adv Sync to private address
Fix Periodic Advertising Synchronization to private address
when public and static identity address is supplied as peer
device address to synchronize to.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-12-22 16:53:30 +01:00
Vinayak Kariappa Chettimada
5d42bf5a70 Bluetooth: Controller: Fix Extended AD data and Scan Rsp total len type
Fix Extended Advertising Report's AD data and Scan Response
total data length type to use uint16_t.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-12-22 16:51:35 +01:00
Vinayak Kariappa Chettimada
fd9c89d8d0 Bluetooth: Controller: Fix HCI fragment of Extended Advertising Report
Fix HCI fragment of Extended Advertising Report when chain
PDUs are received. Implementation was missing HCI event
generation for last frag of each PDU when there was a next
chain PDU.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-12-22 16:51:35 +01:00
Vinayak Kariappa Chettimada
7b78c4e534 Bluetooth: Controller: Fix Extended Scan Response Secondary PHY value
Fix Extended Scan Response report Secondary PHY value to use
AUX_ADV_IND PHY.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-12-22 16:51:00 +01:00
Vinayak Kariappa Chettimada
ac3f12f9b3 Bluetooth: Controller: Fix Periodic Adv EVENT_OVERHEAD_START_US jitter
As EVENT_OVERHEAD_START_US offset is used in ticks unit in
LLL, ULL scheduling using ticker should also use ticks unit
for EVENT_OVERHEAD_START_US when reducing the first Periodic
Advertising event preparation.

Relates to commit 858dc7fab4 ("Bluetooth: controller: Fix
EVENT_OVERHEAD_START_US jitter").

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-12-22 16:50:15 +01:00
Vinayak Kariappa Chettimada
0813d09df9 Bluetooth: Controller: Fix undefined reference in FEM support
Fix undefined reference to radio start time in FEM support
in ISO Synchronized Receiver implementation.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-12-22 13:30:27 +01:00
Vinayak Kariappa Chettimada
519a4a36c6 Bluetooth: Controller: Fix ISO Data payload number for BIS payloads
In the ISO Data the payload number shall be the value of
bisPayloadCounter for the PDU containing that payload.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-12-22 13:30:07 +01:00
Piotr Pryga
aa3090dd7d Bluetooth: controller: lll: add TX configuration of CTE in conn mode
Add configuration of transmission of CTE in connected mode.
The transmission is enabled only for PDUs that have CTE present (CP)
bit set to 1.
Radio peripheral is configued by df_cte_tx_configure to transmit CTE.
The same parameters are set for connected and connectionless mode.
The function was changed to re-use the same code for configuration
of CTE in both modes.

Signed-off-by: Piotr Pryga <piotr.pryga@nordicsemi.no>
2021-12-22 12:18:17 +01:00
Piotr Pryga
1dcbe73cc8 Bluetooth: controller: radio: add setting of S1 byte in radio packet
To transmit CTE with data channel packet the CTE configuration must
be stored in S1 field, that is placed just after length field.

The commit changes radio_pkt_configure function to allow configuration
of S1 field. When S1 field is used to store information about CTE
then its length is 8 bits. The content of the field is filled with
CTEInfo data. The same as the one used in periodic advertising.

The signature of the radio_pkt_configure function was not changed.
There were not used bits in flags parameter of the function.
From now on, bit 3 of the flags parameter will be used to store
information whether CTE will be added to the packet.

Besides that changed, the commit provides set of macros that
help in preparation and validation of the flags parameter content.
Macros provide information about bits that are currently used.
Ther are also macros that help to retrieve particular information
stored in the flags parameter.

Every place of code where the radio_pkt_configure function occurs
was changed to use provided macros.

Signed-off-by: Piotr Pryga <piotr.pryga@nordicsemi.no>
2021-12-22 12:18:17 +01:00
Piotr Pryga
1ff9baf010 Bluetooth: controller: complete DF TX params set in conn mode
HCI_LE_Set_Connection_CTE_Transmit_Parameters host command was
not completely implemented in controller. There were missign
storage of TX parameters in ll_conn instance.

The commit adds missing part of the command handling.

Signed-off-by: Piotr Pryga <piotr.pryga@nordicsemi.no>
2021-12-22 12:18:17 +01:00
Piotr Pryga
f650fd99e0 Bluetooth: controller: Add CTE present bit to pdu_data
If the CTE is attached to data channel packet, the packet must
include information about CTE. The information is stored in
CTEInfo structure that is available in S1 byte of a packet.
Radio checks if the S1 byte is present by verification of
CTE present (CP) bit in byte S0.

The commit add these data to pdu_data structure declaration.
That allows to prepare packet before it is parsed and send
by Radio peripheral.
Besides that there added a new function ull_pdu_data_init that
initlializes fields in pdu_data object that are read only by
lower link layer. CP bit in S0 byte and content of S1 bytes
are examples of such fields.

Signed-off-by: Piotr Pryga <piotr.pryga@nordicsemi.no>
2021-12-22 12:18:17 +01:00
Piotr Pryga
ef24a141fb Bluetooth: controller: radio: add fun to switch to RX after PHYEND evt
When PDU has CTE added to the end, the PHYEND event must be used
to correclty switch between TX and RX. END event is triggered just
before start of CTE.
The commit adds new function that configures radio to disable after
PHYEND is generated and then swtich to RX.

Signed-off-by: Piotr Pryga <piotr.pryga@nordicsemi.no>
2021-12-22 12:18:17 +01:00
Krzysztof Chruscinski
e5d398faa9 net: ip: route: Fix log_strdup misuse
Log_strdup was used in NET_ASSERT macro which is not logging.
As a result linking fails when logging is disabled but asserts
are enabled.

Signed-off-by: Krzysztof Chruscinski <krzysztof.chruscinski@nordicsemi.no>
2021-12-22 12:13:55 +01:00
Jacob Siverskog
3114726356 bluetooth: fix callback name
there has never been a remote_version_available callback.

Signed-off-by: Jacob Siverskog <jacob@teenage.engineering>
2021-12-21 18:19:24 +01:00
Jacob Siverskog
d3c0692e04 bluetooth: correct kconfig help
bt_conn_get_remote_info contains version fields.

Signed-off-by: Jacob Siverskog <jacob@teenage.engineering>
2021-12-21 18:19:24 +01:00
Jacob Siverskog
b9583ddcdc bluetooth: remove duplicate kconfig entry
this entry is already defined in subsys/bluetooth/Kconfig. let's keep
that one since it's used by the controller as well.

Signed-off-by: Jacob Siverskog <jacob@teenage.engineering>
2021-12-21 18:19:24 +01:00
Tomasz Bursztyka
6b03df6931 net/icmpv4: Do not send error on a packet that was broadcasted
For instance, DHCP (UDP protocol) can send broadcasted packet and if we
no not serve the requested destination port, let's not send an error
back.

Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
2021-12-21 17:12:33 +01:00
Tomasz Bursztyka
11cf60d916 net/icmpv4: Fix logging messagse
Invert src/dst strings, the icmpv4 error is sent from the dst (us) to
src (sender of the ipv4 packet that generated the error).

Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
2021-12-21 17:12:33 +01:00
Marcin Niestroj
cbb3e9a065 net: l2: ppp: fix MRU when CONFIG_NET_L2_PPP_OPTION_MRU=n
When support for custom MRU/MTU was added with
CONFIG_NET_L2_PPP_OPTION_MRU=y, code flow with
CONFIG_NET_L2_PPP_OPTION_MRU=n has been broken due to lack of valid
'ctx->lcp.my_options.mru' initialization and its use (with value 0) in
the implementation.

Initialize 'ctx->lcp.my_options.mru' unconditionally in lcp_init(), so
that PPP works fine with CONFIG_NET_L2_PPP_OPTION_MRU=n.

Fixes: 8a51a79d89 ("net: l2: ppp: possibility to have a custom
  MRU/MTU")

Signed-off-by: Marcin Niestroj <m.niestroj@grinn-global.com>
2021-12-21 17:12:24 +01:00
Nicolas Pitre
a3a31257df net: npf: add the ability to do MAC address masked matching
Add the ability to do matching on partial MAC addresses.

Signed-off-by: Nicolas Pitre <npitre@baylibre.com>
2021-12-21 17:06:35 +01:00
Nicolas Pitre
faa0b2a848 net: introduce a network packet filter framework
This provides the infrastructure to create network packet filter rules
and to apply them to the RX and TX packet paths. Rules are made of
simple condition tests that can be linked together, creating a facility
similarly to the Linux iptables functionality.

A couple of generic and Ethernet-specific condition tests are also
provided.

Additional tests can be easily created on top of this.

Signed-off-by: Nicolas Pitre <npitre@baylibre.com>
2021-12-21 17:06:35 +01:00
Michal Ciesielski
8b3d7f2a43 net: lwm2m: Add LWM2M object 9 software management
Adds support for LWM2M object 9 Software management.
This is implemented according to this release:
http://openmobilealliance.org/release/LWM2M_SWMGMT/V1_0_1-20200616-A/

Note that the XML is lacking some resources and for that reason those
resources are not included. This is a known problem by OMA and will be
fixed in a later releases.

This uses the lwm2m_pull_context to pull binaries in case
FIRMWARE_PULL_SUPPORT is enabled

Signed-off-by: Michal Ciesielski <michal.m.ciesielski@voiapp.io>
2021-12-21 13:36:50 +01:00
Michal Ciesielski
06b0a9c59d net: lwm2m: Make lwm2m_pull_context reusable
Add a semaphore to control that no collisions occur when multiple
sources want to use the pull_context

Add struct firmware_pull_context *ctx as an argument to the result_cb of
the context. This allows the receiver to do some kind of differentiation
on the source.

Signed-off-by: Michal Ciesielski <michal.m.ciesielski@voiapp.io>
2021-12-21 13:36:50 +01:00
Michal Ciesielski
2f046da6a1 net: lwm2m: FW Pull separate generic pull logic
Make it possible to reuse the pull logic from firmware_pull.c by
separating it to a separate file.

The firmware_pull_context is still owned and statically allocated in
firmware_pull.c and is being passed into lwm2m_pull_context.c as a
pointer.

In other words, pull_context, does not keep any state except for a
pointer to the context currently in use.

Signed-off-by: Michal Ciesielski <michal.m.ciesielski@voiapp.io>
2021-12-21 13:36:50 +01:00
Krzysztof Chruscinski
94a01d0192 logging: Increase stack size when NO_OPTIMIZATIONS=y
Increase stack size when optimization is disabled.

Signed-off-by: Krzysztof Chruscinski <krzysztof.chruscinski@nordicsemi.no>
2021-12-21 09:36:09 +01:00
Henrik Brix Andersen
682f261c95 Revert "Bluetooth: Mesh: Fix publication period measurement"
This reverts commit 1f9c606f95.

Signed-off-by: Henrik Brix Andersen <hebad@vestas.com>
2021-12-21 07:46:26 +01:00
Emil Obalski
b037054f21 mcumgr: Add latency control functionality
This change adds a posibility to enable low latency connection
parameters for BT when SMP commands are handled.

Support for this functionality is disabled by the default and
can be enabled by CONFIG_MCUMGR_SMP_BT_LATENCY_CONTROL=y option.

Signed-off-by: Emil Obalski <emil.obalski@nordicsemi.no>
2021-12-20 18:46:43 +01:00
Hou Zhiqiang
2fafd8559f net: socket: packet: Add EtherCAT protocol support
Add EtherCAT protocol support, now applications can
transmit/receive EtherCAT packets via RAW socket.

Signed-off-by: Hou Zhiqiang <Zhiqiang.Hou@nxp.com>
2021-12-20 17:49:10 +01:00
Robert Lubos
f8b3516280 net: route: Add mutex protection
Since most of the functions will access non thread-safe resources like
SLIST, and can be invoked from different threads (like the expiry timer
delayed work), add mutex protection to the function calls.

Signed-off-by: Robert Lubos <robert.lubos@nordicsemi.no>
2021-12-20 17:44:28 +01:00
Robert Lubos
e9db822635 net: route: Add support for route preference
Implement a concept of Route Preference, as specified in RFC 4191. The
Zephyr host will prefer routes with higher preference, if they lead to
the same prefix through different neighbours.

Signed-off-by: Robert Lubos <robert.lubos@nordicsemi.no>
2021-12-20 17:44:28 +01:00