zephyr/include
Trond Einar Snekvik 820cfc52ad Bluetooth: Mesh: Rework publication timer
Periodic publication would previously build and send the first
publication inside the bt_mesh_model_pub() function, before cancelling
and rescheduling the next publication. The timer handler would only
handle retransmissions, and would abandon the rest of the publication
event if one of the packets failed to send.

This design has three issues:
- If the initial timer cancel fails, the publication would interfer with
  the periodic publication management, which might skip an event or
  send too many packets.
- If any of the messages fail to publish, the full publication event
  would be abandoned. This is not predictable or expected from the API.
- bt_mesh_model_pub() required 384 bytes of stack to build the message,
  which has to be factored into all calling threads.

This patch moves all transmission into the publication timer by
replacing k_work_cancel with a single k_work_reschedule(K_NO_WAIT). It
also changes the error recovery behavior to attempt to finish the full
publication event even if some of the transmissions fail.

Split out from #33782.

Signed-off-by: Trond Einar Snekvik <Trond.Einar.Snekvik@nordicsemi.no>
2021-04-15 20:31:44 +02:00
..
app_memory arm/arm64: Make ARM64 a standalone architecture 2021-03-31 10:34:33 -05:00
arch linker: cc13x2_cc26x2: CCFG to linker snippets 2021-04-15 12:25:55 +02:00
audio audio: dmic: fix compile error on arm gcc 8 2021-02-16 15:29:16 +03:00
bluetooth Bluetooth: Mesh: Rework publication timer 2021-04-15 20:31:44 +02:00
canbus canbus: isotp: add fixed addressing feature 2021-04-06 16:44:34 -04:00
cmsis_rtos_v1
cmsis_rtos_v2
console
crypto
data doc: fix @param usage in callbacks 2020-12-18 12:18:28 +01:00
debug debug: coredump: remove z_ prefix for stuff used outside subsys 2021-01-21 22:08:59 -05:00
devicetree devicetree: spi: clean up DT_SPI_DEV_CS_GPIOS_CTLR 2021-03-30 07:06:48 -05:00
dfu modules: introduce MCUBOOT_BOOTUTIL module 2021-01-14 18:03:38 +01:00
disk include: disk_access: Add a compat warning 2021-03-26 08:59:47 -04:00
display
drivers interrupt_controller: gic: add SMP support 2021-04-13 15:09:23 -04:00
dt-bindings soc: arm: nxp: ke1xf: use clock nodes for NXP Kinetis SCG clocks 2021-03-31 11:56:13 -05:00
fs include/fs: fixed typo in fs_file_t_init() description 2021-02-05 07:32:20 -05:00
ipc ipc: RPMsg service to register multiple endpoints 2021-01-19 22:07:09 +01:00
kernel kernel: mmu: collect more demand paging statistics 2021-04-06 16:43:55 -04:00
linker linker: macros for memory regions from devicetree 2021-04-15 12:25:55 +02:00
logging userspace: rename _is_user_context -> k_is_user_context 2021-04-01 05:34:17 -04:00
lorawan lorawan: add callback for datarate changes 2021-02-28 16:36:57 -05:00
mgmt doc: fix @param usage in callbacks 2020-12-18 12:18:28 +01:00
modbus modbus: add raw ADU support 2021-03-19 15:50:21 +01:00
net net: socket: Add locking to prevent concurrent access 2021-04-15 07:16:51 -05:00
posix sys: eventfd: Add locking to eventfd_read/write functions 2021-04-15 07:16:51 -05:00
power power: doc: Create a subgroup to constraint API 2021-03-22 12:42:30 -04:00
random
settings
shell shell: telnet: Make sure the delayed work becomes idle after canceling 2021-04-12 11:47:24 -04:00
stats
storage storage/flash_map: Add macro to get string label from DTS 2021-03-30 09:01:20 -05:00
sys doc: strcutures: use doxygen to reference functions 2021-04-15 14:04:05 -04:00
task_wdt task_wdt: add task-level watchdog subsystem 2021-03-15 12:24:54 +01:00
timing timing: guard the header with CONFIG_TIMING_FUNCTIONS 2021-04-06 16:43:55 -04:00
toolchain k_current_get(): make it a "const" function 2021-04-14 20:32:05 -04:00
tracing
usb usb: dfu: give wait_for_usb_dfu an argument 2021-03-22 12:55:56 +01:00
zephyr zephyr: Remove support for deprecated int types 2021-03-05 04:56:13 -06:00
cache.h cache: libmetal: Redirect sys_cache_flush() 2021-01-19 14:31:02 -05:00
device.h kernel/arch: cleanup function definitions 2021-04-01 05:34:17 -04:00
devicetree.h devicetree: add DT_COMPAT_GET_ANY_STATUS_OKAY() 2021-03-29 16:33:51 +02:00
ec_host_cmd.h include: remove enum build assert 2020-10-02 11:44:39 +02:00
emul.h
exc_handle.h
fatal.h
generated_dts_board.h license: add missing SPDX headers 2021-02-11 08:05:16 -05:00
init.h kernel/arch: cleanup function definitions 2021-04-01 05:34:17 -04:00
irq_nextlevel.h
irq_offload.h
irq.h irq: document requirement that irq_lock/unlock provides a memory barrier 2021-01-26 13:42:17 -05:00
kernel_includes.h kernel: move thread definitions to thread.h 2021-01-13 18:18:42 -05:00
kernel_structs.h kernel: Remove abort and join implementation (UNBISECTABLE) 2021-02-24 16:39:15 -05:00
kernel_version.h
kernel.h kernel: move workqueue API reference 2021-04-15 14:04:05 -04:00
mempool_heap.h kernel: Remove z_mem_pool wrapper internals 2020-12-07 21:50:14 -05:00
ptp_clock.h include: Move ptp_clock.h to drivers/ptp_clock.h 2021-03-25 10:09:33 +02:00
sched_priq.h
shared_irq.h drivers: intc: shared_irq: remove internal structs from header 2021-04-13 13:03:33 -04:00
spinlock.h kernel: fix usage of KERNEL_COHERENCE macro 2021-02-03 10:42:04 -05:00
sw_isr_table.h
sys_clock.h kernel: remove tickless idle 2021-03-19 11:22:17 -04:00
syscall_handler.h kernel: Cleanup logger setup in kernel files 2020-11-27 09:56:34 -05:00
syscall.h userspace: rename _is_user_context -> k_is_user_context 2021-04-01 05:34:17 -04:00
timeout_q.h kernel/arch: cleanup function definitions 2021-04-01 05:34:17 -04:00
toolchain.h
wait_q.h
zephyr.h