Marian Buschsieweke
89c69c5450
sys/net/gnrc/tx_sync: new module
...
The new `gnrc_tx_sync` module allows users of the GNRC network stack to
synchronize with the actual transmission of outgoing packets. This is directly
integrated into gnrc_sock. Hence, if `gnrc_tx_sync` is used, calls to e.g.
sock_udp_send() will block until the network stack has processed the message.
Use cases:
1. Prevent packet drop when sending at high rate
- If the application is sending faster than the stack can handle, the
message queues will overflow and outgoing packets are lost
2. Passing auxiliary data about the transmission back the stack
- When e.g. the number of required retransmissions, the transmission time
stamp, etc. should be made available to a user of an UDP sock, a
synchronization mechanism is needed
3. Simpler error reporting without footguns
- The current approach of using `core/msg` for passing up error messages is
difficult to use if other message come in. Currently, gnrc_sock is
busy-waiting and fetching messages from the message queue until the number
of expected status reports is received. It will enqueue all
non-status-report messages again at the end of the queue. This has
multiple issues:
- Busy waiting is especially in lower power scenarios with time slotted
MAC protocols harmful, as the CPU will remain active and consume
power even though the it could sleep until the TX slot is reached
- The status reports from the network stack are send to the user thread
blocking. If the message queue of the user thread is full, the network
stack would block until the user stack can fetch the messages. If
another higher priority thread would start sending a message, it
would busy wait for its status reports to completely come in. Hence,
the first thread doesn't get CPU time to fetch messages and unblock
the network stack. As a result, the system would lock up completely.
- Just adding the error/status code to the gnrc_tx_sync_t would preallocate
and reserve memory for the error reporting. That way gnrc_sock does not
need to search through the message queue for status reports and the
network stack does not need to block for the user thread fetching it.
2021-02-03 15:16:42 +01:00
Akshai M
ed1b86492f
net/lorawan : Move 'LORAMAC_DEFAULT_JOIN_PROCEDURE' to 'CONFIG_'
...
Added symbols 'CONFIG_LORAMAC_DEFAULT_JOIN_PROCEDURE_XXX'
for Kconfig exposure
2021-01-26 16:52:59 +01:00
Akshai M
d2d90fbce5
net/lorawan : Move 'LORAMAC_DEFAULT_TX_MODE' to 'CONFIG_'
...
Move 'LORAMAC_DEFAULT_TX_MODE' to 'CONFIG_' and added symbols
for Kconfig exposure
2021-01-26 16:52:58 +01:00
Akshai M
aa3b1da0c4
net/lorawan : Move 'LORAMAC_DEFAULT_TX_PORT' to 'CONFIG_'
2021-01-26 16:52:58 +01:00
Akshai M
55f196095d
net/lorawan : Move 'LORAMAC_DEFAULT_DR' to 'CONFIG_'
...
Move 'LORAMAC_DEFAULT_DR' to 'CONFIG_' and enable options for
Kconfig
2021-01-26 16:52:58 +01:00
Akshai M
9e626f471a
net/lorawan : Move 'LORAMAC_DEV_ADDR_DEFAULT' to 'CONFIG_'
2021-01-26 16:52:57 +01:00
Akshai M
50e979c600
net/lorawan : Move 'LORAMAC_NWK_SKEY_DEFAULT' to 'CONFIG_'
2021-01-26 16:52:57 +01:00
Akshai M
43d7f28e63
net/lorawan : Move 'LORAMAC_APP_SKEY_DEFAULT' to 'CONFIG_'
2021-01-26 16:52:57 +01:00
Akshai M
d138fa9aad
net/lorawan : Move 'LORAMAC_APP_KEY_DEFAULT' to 'CONFIG_'
2021-01-26 16:52:57 +01:00
Akshai M
bcb0ed38ff
net/lorawan : Move 'LORAMAC_APP_EUI_DEFAULT' to 'CONFIG_'
2021-01-26 16:52:57 +01:00
Akshai M
5b4a873de5
net/lorawan : Move 'LORAMAC_DEV_EUI_DEFAULT' to 'CONFIG_'
2021-01-26 16:52:57 +01:00
Akshai M
3ecd304354
net/gnrc_lorawan : String keywords for keys
...
Swapped hex input for keys with string keywords.
2021-01-26 16:52:57 +01:00
Benjamin Valentin
d8918c24fa
socket_zep: register with netdev
2021-01-25 22:59:01 +01:00
Fabian Hüßler
7d618afa17
nrf24l01p_ng: make use of netdev_register()
2021-01-24 20:49:39 +01:00
fabian18
f7a77ebb04
drivers/nrf24l01p_ng: netdev driver for nrf24l01+
...
The driver uses the netdev interface. Due to the limited
capabilities of the transceiver (32 byte FIFO and no source address in the layer2 frame),
it relies on 6LowPAN compression and adds the source address to the frame for that.
2021-01-24 20:49:39 +01:00
Martine Lenders
640ff4f5d8
Merge pull request #15609 from maribu/ethernet-rx-timestamp
...
sys/net/gnrc/netif/ethernet: Support RX timestamp
2021-01-07 19:53:52 +01:00
Marian Buschsieweke
f6bca70d11
sys/net/gnrc/netif/ethernet: Support RX timestamp
2021-01-06 20:30:14 +01:00
Martine S. Lenders
1cd1716280
gnrc_sixlowpan_frag: initial import of Selective Fragment Recovery
2020-12-14 13:00:36 +01:00
dylad
5b7961b747
sys/net: add sam0 eth auto init
2020-12-13 22:01:50 +01:00
benpicco
1477a340fe
Merge pull request #15150 from fabian18/ieee802154_security
...
Initial implementation of IEEE 802.15.4 security
2020-12-09 14:14:27 +01:00
Benjamin Valentin
518c95e0ee
gnrc_netif_ieee802154_create: use byteorder_htols()
2020-12-08 16:31:20 +01:00
Fabian Hüßler
7b5391b7ce
sys/net/gnrc/netif/init_devs: IEEE802154_STACKSIZE_DEFAULT
2020-12-04 09:40:55 +01:00
Fabian Hüßler
dc16c14b3d
sys: Add IEEE 802.15.4 security
2020-12-04 09:40:55 +01:00
benpicco
665c07eb53
Merge pull request #15120 from benpicco/driver/at86rf215-trim
...
driver/at86rf215: add functions to configure trim & clock output at run-time
2020-12-02 16:53:02 +01:00
Benjamin Valentin
b866b5ef2b
sys/net/gnrc/netif: add gnrc_netif_get_netdev()
...
Add a function to retrieve a netdev from the list of interfaces.
2020-12-02 14:59:17 +01:00
Fabian Hüßler
c526a34770
sx127x: make use of netdev_register()
...
Call netdev_register() in sx127x_setup()
and pass the index in auto_init_sx127x()
and semtech_loramac_init()
2020-12-01 16:34:11 +01:00
Fabian Hüßler
39adf908ce
cc110x: make use of netdev_register()
...
Call netdev_register() in cc110x_setup()
and pass the index in auto_init_cc110x()
2020-12-01 12:11:20 +01:00
c1874c8d89
all: add missing limits.h includes
...
Removal of kernel_types.h make these necessary.
2020-11-25 17:52:34 +01:00
Jose Alamos
dfb214ab98
gnrc_netif: add missing pktbuf release
2020-11-19 11:13:58 +01:00
Jose Alamos
53348e3a8c
gnrc_netif: add missing netdev events
2020-11-12 16:12:22 +01:00
Bas Stottelaar
922e2ac1c9
sys/*: replace #if ENABLE_DEBUG with IS_ACTIVE
2020-11-02 21:49:39 +01:00
benpicco
e77d12da26
Merge pull request #15188 from benpicco/drivers/kw41zrf-register
...
drivers/kw41zrf: register with netdev
2020-10-31 14:30:00 +01:00
benpicco
9e4dd8e451
Merge pull request #15287 from miri64/ethernet/enh/join-leave-mcast-group
...
gnrc_netif: add capability to join or leave link layer multicast groups
2020-10-29 16:03:32 +01:00
Martine Lenders
ad3c8ba5a4
gnrc_netif_ethernet: use new helper function to generate MC address
2020-10-29 14:38:52 +01:00
Martine Lenders
d8c78a9910
gnrc_netif: add capability to join or leave link-layer multicast groups
...
The request is forwarded to the device.
2020-10-29 14:38:51 +01:00
68d3f2ee6c
sys/net: remove nordic softdevice specific handling
2020-10-29 09:02:12 +01:00
José Alamos
60b5a6b35e
Merge pull request #15268 from benpicco/gnrc_netif_ieee802154_create-const
...
drivers/at86rf215: give driver threads different names
2020-10-23 17:14:19 +02:00
Bas Stottelaar
1b35d06a51
sys/*: realign ENABLE_DEBUG
2020-10-23 11:27:48 +02:00
Bas Stottelaar
80d9da90df
sys/*: add missing include of assert.h
2020-10-22 11:13:09 +02:00
Benjamin Valentin
eb3daf4c22
drivers/at86rf215: give driver threads different names
...
Use different names for the sub-GHz and 2.4 GHz driver thread to make
it easier to tell which is which.
```
2020-10-21 19:53:50,608 # pid | name | state Q | pri | stack ( used) ( free) | base addr | current
2020-10-21 19:53:50,622 # - | isr_stack | - - | - | 512 ( 232) ( 280) | 0x20000000 | 0x200001c8
2020-10-21 19:53:50,623 # 1 | main | running Q | 7 | 1536 ( 660) ( 876) | 0x200002f8 | 0x2000075c
2020-10-21 19:53:50,639 # 2 | pktdump | bl rx _ | 6 | 1536 ( 236) ( 1300) | 0x200035a8 | 0x20003abc
2020-10-21 19:53:50,653 # 3 | 6lo | bl rx _ | 3 | 1024 ( 332) ( 692) | 0x2000420c | 0x2000450c
2020-10-21 19:53:50,655 # 4 | ipv6 | bl rx _ | 4 | 1024 ( 376) ( 648) | 0x200009d4 | 0x20000cd4
2020-10-21 19:53:50,670 # 5 | udp | bl rx _ | 5 | 1024 ( 252) ( 772) | 0x200049f0 | 0x20004cf4
2020-10-21 19:53:50,672 # 6 | at86rf215 [sub GHz] | bl rx _ | 2 | 1024 ( 536) ( 488) | 0x20001200 | 0x200014c4
2020-10-21 19:53:50,687 # 7 | at86rf215 [2.4 GHz] | bl rx _ | 2 | 1024 ( 536) ( 488) | 0x20001600 | 0x200018c4
2020-10-21 19:53:50,689 # | SUM | | | 8704 ( 3160) ( 5544)
```
2020-10-21 19:59:42 +02:00
Benjamin Valentin
671c882d4f
gnrc_netif_ieee802154_create: make name argument const
...
`gnrc_netif_create()` already expects a `const` name parameter,
also make the name parameter in `gnrc_netif_ieee802154_create()` const.
2020-10-21 19:49:34 +02:00
János Brodbeck
5a75eb29c3
net/netif/gnrc_netif: allow larger IPv6 MTU than minimum for BLE
2020-10-20 14:20:51 +02:00
Jose Alamos
46600adf22
nrf802154: unify auto_init for HAL and netdev
2020-10-19 15:18:35 +02:00
Jose Alamos
c1a9d352f3
cc2538_rf: unify auto_init for HAL and netdev
2020-10-19 15:18:34 +02:00
Marian Buschsieweke
c38ca6d718
Merge pull request #15212 from miri64/gnrc_pkt/enh/pkt-list-ops
...
gnrc_pkt: introduce packet list operations
2020-10-15 12:13:03 +02:00
Francisco Acosta
05b089b3c4
gnrc_netif: remove unused event_netdev_t
struct
2020-10-14 14:46:35 +02:00
Martine Lenders
45144fb4a4
treewide: use new gnrc_pkt API functions instead of utlist.h macros
2020-10-13 13:32:53 +02:00
Sören Tempel
af03cd8f4f
gnrc_netif: add missing gnrc_netif_release() to early return
...
The gnrc_netif_ipv6_addr_add_internal() function unconditionally
acquires the global netif rmutex lock but doesn't release this lock on
this specific path (i.e. if gnrc_netif_ipv6_group_join_internal failed).
This can cause a deadlock as no other thread will afterwards be capable
of acquiring the netif lock.
2020-10-13 04:42:52 +02:00
benpicco
3384c327a7
Merge pull request #15194 from miri64/gnrc_netif_raw/fix/netif-hdr
...
gnrc_netif_raw: add NETIF header on receive
2020-10-09 14:35:54 +02:00
Martine Lenders
6991ad5910
gnrc_netif_raw: add NETIF header on receive
...
... to give upper layer a hint on the interface the packet came from.
2020-10-09 11:51:18 +02:00
Benjamin Valentin
b32bc3dbd1
drivers/kw41zrf: register with netdev
2020-10-08 16:19:23 +02:00
Benjamin Valentin
1afe72a5e5
drivers/enc28j60: register with netdev
2020-10-08 10:36:56 +02:00
Benjamin Valentin
988ee1648f
drivers/mrf24j40: register with netdev
2020-10-07 16:39:39 +02:00
Leandro Lanzieri
e1418e0972
Merge pull request #14065 from jia200x/pr/improve_gnrc_lorawan
...
gnrc_lorawan: refactor
2020-10-05 15:56:00 +02:00
Jose Alamos
9ebc3f8bd8
auto_init/nrf52840: add support for SubMAC
2020-10-01 10:55:55 +02:00
Jose Alamos
1de5b34adf
auto_init/cc2538_rf: add support for SubMAC
2020-10-01 10:55:55 +02:00
Jose Alamos
fda73fdf0a
gnrc_lorawan: uncrustify files
2020-09-30 14:18:54 +02:00
Jose Alamos
71bda3bcd8
gnrc_lorawan: remove GNRC specific dependencies
2020-09-30 14:18:54 +02:00
Jose Alamos
2e6ba90435
gnrc_lorawan: refactor rx_done callback
2020-09-30 14:18:54 +02:00
Jose Alamos
5146261f03
gnrc_lorawan: rename radio event functions
2020-09-30 14:18:54 +02:00
Marian Buschsieweke
8a5d301caa
sys/net/gnrc/netif: Fix compilation on waspmote-pro
...
xtimer.h must not be included, when the xtimer module is not use. Otherwise
compilation on the waspmote-pro with https://github.com/RIOT-OS/RIOT/pull/14799
will not longer work. gnrc_netif_pktq includes xtimer.h and uses xtimer, but
gnrc_netif includes gnrc_netif_pktq.h regardless of whether gnrc_netif_pktq
is used. This makes sure that gnrc_netif_pktq.h is only included when actually
used.
2020-09-22 11:51:09 +02:00
Marian Buschsieweke
1d1b446d6b
sys/net/gnrc/netif: use IS_USED macro
2020-09-22 11:50:18 +02:00
Marian Buschsieweke
0cb274c1eb
sys/net/gnrc: Fix include of xtimer.h
...
Make sure xtimer.h is only included if the xtimer module is actually used, as
otherwise compilation for the waspmote-pro fails.
2020-09-16 19:55:43 +02:00
Francisco
cb6b65e7ff
Merge pull request #14886 from miri64/gnrc/fix/circ-deps
...
gnrc: remove circular module dependencies
2020-09-09 09:06:28 +02:00
Martine S. Lenders
0e3443d006
gnrc_netif: guard usage of gnrc_ipv6 member
2020-09-08 12:53:29 +02:00
Martine Lenders
a72d0ef3e8
gnrc_netif: add packet to queue when device is busy
...
... and also send on send error (i.e. when *medium* was busy)
2020-09-02 12:30:23 +02:00
Martine Lenders
7c7f667108
gnrc_netif: add a send queue
2020-09-02 12:30:22 +02:00
Leandro Lanzieri
d25fc243c4
treewide: change prefix for generated Kconfig symbols.
...
This changes the prefixes of the symbols generated from USEMODULE and
USEPKG variables. The changes are as follow:
KCONFIG_MODULE_ => KCONFIG_USEMODULE_
KCONFIG_PKG_ => KCONFIG_USEPKG_
MODULE_ => USEMODULE_
PKG_ => USEPKG_
2020-08-31 09:37:09 +02:00
benpicco
9f2475dc14
Merge pull request #14832 from maribu/sys-cleanup
...
sys: Cleanup access to internal variables
2020-08-26 17:07:19 +02:00
benpicco
2eb6d752df
Merge pull request #14770 from benpicco/netif_addr_to_str
...
net/netif: move gnrc_netif_addr_to/from_str() to netif
2020-08-25 18:52:55 +02:00
Marian Buschsieweke
3b6fa61829
sys: Cleanup access to internal variables
...
Replace direct accesses to sched_active_thread and sched_active_pid with
the helper functions thread_getpid() and thread_get_active(). This serves
two purposes:
1. It makes accidental writes to those variable from outside core less likely.
2. Casting off the volatile qualifier is now well contained to those two
functions
2020-08-24 20:28:11 +02:00
Benjamin Valentin
decadc41a0
drivers/dose: register driver with netdev
2020-08-17 22:53:51 +02:00
Benjamin Valentin
4f19b54b7b
drivers/at86rf215: register driver with netdev
2020-08-17 22:53:51 +02:00
Benjamin Valentin
53eedc283b
drivers/at86rf2xx: register driver with netdev
2020-08-17 22:53:51 +02:00
Benjamin Valentin
39951a948e
net/netif: move gnrc_netif_addr_to/from_str() to netif
...
These functions are independent from GNRC and can be used by stack-agnistoc
code.
Avoid pulling in a GNRC dependency by moving those two helper functions to
`netif`.
The old function names are kept as `static inline` wrapper functions to avoid
breaking API users.
2020-08-16 23:52:32 +02:00
Jose Alamos
96ee1d2bf8
net/gnrc_netif_lorawan: fix unaligned copy
2020-07-13 16:57:26 +02:00
Gunar Schorcht
b51ac69d0a
sys/net/gnrc: add netif support for ATWINC15x0 netdef driver
2020-06-26 12:33:38 +02:00
Martine Lenders
09d097c934
Merge pull request #14214 from btcven/2020_06_06-6lo-mtu
...
net/gnrc/netif: add option for non-std 6lo MTU
2020-06-18 15:25:01 +02:00
Jean Pierre Dudey
e1ef082d49
net/gnrc/netif: disable 6lo fragmentation when unneeded
...
Signed-off-by: Jean Pierre Dudey <jeandudey@hotmail.com>
2020-06-18 07:16:16 -05:00
Jean Pierre Dudey
d47f4a1caa
net/gnrc/netif: add option for non-std 6lo MTU
...
Signed-off-by: Jean Pierre Dudey <jeandudey@hotmail.com>
2020-06-18 07:16:16 -05:00
Leandro Lanzieri
05962fe3ef
gnrc/netif: Configure queue size with exponent
...
This changes the configuration macro to be the exponent of 2^n, as the
message queue size needs to be always power of 2.
2020-06-15 07:30:52 +02:00
Martine Lenders
f9bed00701
Merge pull request #12738 from miri64/netif/enh/id-functions
...
netif: add functions to get and get by identifier
2020-06-09 15:12:06 +02:00
821eb5bc76
sys/net/auto_init: remove useless preprocessor directives
...
The files are now built only when the corresponding module is used
2020-06-08 11:10:39 +02:00
29c5c54fe2
sys/net/auto_init: only build files when related module is used
2020-06-08 11:10:22 +02:00
3fe35e755c
sys/net/auto_init: rename cdcecm source file
...
Use a name that corresponds to the related module name
2020-06-08 10:27:35 +02:00
Jean Pierre Dudey
60385d2c24
net/gnrc/netif: limit 6lo frag size
...
The 6Lo network interfaces can only support a max_frag_size of
SIXLOWPAN_FRAG_MAX_LEN (2047 bytes) as the length field is only 11-bits.
This limits the max_frag_size in the case that the L2-PDU is higher than
that.
Signed-off-by: Jean Pierre Dudey <jeandudey@hotmail.com>
2020-06-07 15:43:33 -05:00
Benjamin Valentin
840be824d4
gnrc_netif: relax 6lo MTU assertion for 802.15.4g
...
802.15.4g devices have a 2047 byte PDU.
So the assertion `netif->ipv6.mtu == IPV6_MIN_MTU` is too strict here.
This is only enforced on init, so changing the modulation at run-time
did not catch this bug.
To test, use e.g. `at86rf215` with
CFLAGS += -DAT86RF215_DEFAULT_PHY_MODE=IEEE802154_PHY_MR_OQPSK
fixes #14164
2020-05-29 15:59:23 +02:00
Benjamin Valentin
3974a04623
gnrc/nib: add NIB event bus
...
Add a message bus where threads can listen for nib events.
Currently only the GNRC_IPV6_NIB_EVENT_ADDR_VALID event is
implemented which informs subscribers that an address got
valid.
2020-05-20 10:44:11 +02:00
Benjamin Valentin
85100ad61a
gnrc_netif: add message bus to interface
...
Allow threads to listen for events on an interface.
2020-05-20 10:44:11 +02:00
Leandro Lanzieri
16113afb1e
Merge pull request #14026 from miri64/gnrc_netif/fix/deps
...
gnrc_netif: use gnrc_netif-submodules to pull in upper-layer struct members
2020-05-19 16:36:18 +02:00
Martine S. Lenders
a48629b395
gnrc_netif: introduce gnrc_netif_ipv6 pseudo-module for IPv6 members
...
This aims to reduce circular dependencies in GNRC.
2020-05-19 16:10:59 +02:00
Martine S. Lenders
9801a439fc
gnrc_netif: introduce gnrc_netif_6lo pseudo-module for 6LoWPAN members
...
This aims to reduce circular dependencies in GNRC.
2020-05-19 16:10:59 +02:00
Martine S. Lenders
0d2f0a5ba4
gnrc_netif: fix gnrc_netif_lorawan dependencies
2020-05-19 16:10:58 +02:00
José Alamos
089e0a2b44
Merge pull request #14048 from jue89/fix/gnrc_lorawan_abp
...
net/gnrc/netif/lorawan: fix ABP device activation
2020-05-11 11:34:59 +02:00
Juergen Fitschen
1eb3b596c4
net/gnrc/netif/lorawan: fixed ABP device activation
2020-05-09 20:16:29 +02:00
Juergen Fitschen
255c76ff35
net/gnrc/netif/lorawan: fixed deprecated NETOPT_LINK_CONNECTED
2020-05-09 20:11:16 +02:00
Benjamin Valentin
18651eb399
gnrc_netif: Use full L2-PDU as IPv6 MTU
...
If the L2-PDU is greater than IPV6_MIN_MTU, use that as the MTU instead.
2020-04-29 12:49:36 +02:00
Francisco
80b300289d
Merge pull request #13912 from benpicco/at86rf215-mr-qpsk
...
drivers/at86rf215: implement MR-O-QPSK
2020-04-29 12:44:00 +02:00
Benjamin Valentin
504d02038d
gnrc_netif: update PDU after changing PHY mode
2020-04-29 10:41:37 +02:00
Martine Lenders
652276f00f
gnrc_netif: provide PID-based version for netif ID
2020-04-17 16:59:21 +02:00