1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2024-12-29 04:50:03 +01:00
RIOT/sys/net
bors[bot] 9142d9c375
Merge #19383 #19385
19383: cord: include gcoap_req_send returning 0 in error r=benpicco a=bergzand

### Contribution description

gcoap_req_send returns 0 if it was unable to send the CoAP request. CoRD did not include that case in the return code checks. This changes CoRD to include it and drop the registration if CoAP could not send the request. The old behaviour made the CoRD thread lock up.

### Testing procedure

- Check with the gcoap API docs.
- I can reliable trigger the issue with a RIOT application including both the `cord_ep_standalone` module and some measurement reported both sending requests to the same application. If at some point the application is shut down, gcoap has all its memo's occupied with the measurement reporting and can't add the CoRD update request. Thus the CoRD update request fails with a zero code and the thread (previously) would lock up.

### Issues/PRs references

None

19385: cpu/stm32/periph/timer: fix clobered IRQ flag r=benpicco a=Enoch247

### Contribution description

From the git commit:

> The STM32 periph_timer driver reads the timer's status flags, then clears them all. It is possible that a timer interrupt could occur between reading the flag and clearing it. This would lead to a lost interrupt.
> 
> The timer's status flags can be cleared by software, but can only be set by the hardware. This patch takes advantage of this by only clearing the flags it knows are set. The rest of the flags are set, which doesn't actually change their state.

I had trouble finding anything in ST's datasheet saying that software could not set the timer's status flags, but testing showed that this is how it works in practice. Further, [ST's own HAL ](https://github.com/STMicroelectronics/STM32CubeF4/blob/master/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_tim.h#L1258)confirms this. If the hardware didn't work this way, it would be impossible to atomically read-modify-write the flags.

### Testing procedure

I tested by doing the following:

1. `make -C tests/periph_timer BOARD=nucleo-f767zi all flash term`
2. press s
3. press [ENTER]
4. observe test passes
5. `make -C tests/periph_timer_periodic BOARD=nucleo-f767zi all flash term`
6. press s
7. press [ENTER]
8. observe test passes
9. `make -C tests/periph_timer_short_relative_set BOARD=nucleo-f767zi all flash term`
10. press s
11. press [ENTER]
12. observe test passes


### Issues/PRs references

- none known

Co-authored-by: Koen Zandberg <koen@bergzand.net>
Co-authored-by: Joshua DeWeese <jdeweese@primecontrols.com>
2023-03-13 20:25:27 +00:00
..
application_layer Merge #19383 #19385 2023-03-13 20:25:27 +00:00
ble net/ble/skald: let itvl be configured per context 2022-05-24 13:02:10 +02:00
credman sys/net/credman: fix insecure memory wiping 2022-09-20 17:44:24 +02:00
crosslayer sys/net/crosslayer/inet_csum: add missing "modules.h" include 2023-02-02 16:37:21 +01:00
dsm sys/net/dsm: add missing dependencies 2022-02-21 15:15:02 +01:00
gnrc gnrc_netif: set lower bound for IEEE802154_STACKSIZE_DEFAULT 2023-03-02 01:01:30 +01:00
link_layer ieee802154/submac/Kconfig: select ZTIMER 2023-01-19 15:34:20 +01:00
lora net/lora: add module to Kconfig 2021-01-21 11:22:33 +01:00
netdev_test netdev_test: avoid explicit cast to netdev 2021-07-09 11:35:19 +02:00
netif sys/net/netif: add helpers for IPv6 addresses 2022-06-06 20:46:48 +02:00
netstats sys/include/net/netstats: move xtimer header where it is needed 2021-02-16 18:18:21 +01:00
netutils net/util: make use of dns_query() 2022-07-29 17:48:26 +02:00
network_layer sixlowpan: replace puts() with printf() 2023-02-27 15:43:00 +01:00
sock sys/net/sock_util: add sock_dtls_establish_session() 2023-02-08 15:57:22 +01:00
transport_layer sys: fix doxygen grouping 2018-06-11 19:12:02 +02:00
doc.txt
ieee802154.txt net/iee802154: fix typo in docs 2022-08-04 15:09:20 +02:00
Kconfig sys/net/netopt: model in Kconfig 2022-07-25 11:08:31 +02:00