gnrc_ipv6_nib: fix config for mixed 6lo/classic setup#20167
gnrc_ipv6_nib: fix config for mixed 6lo/classic setup#20167OlegHahm merged 2 commits intoRIOT-OS:masterfrom
Conversation
Which optimizations are you referring to exactly? |
[1] those are still disabled for the 6lo interface, but previously when |
a85c5c3 to
fa1f60f
Compare
| USEMODULE += core_msg_bus | ||
| endif | ||
|
|
||
| ifneq (,$(filter netdev_eth slipdev, $(USEMODULE))) |
There was a problem hiding this comment.
Would that cover esp32 or is the esp32 using its own IP implementation anyway?
There was a problem hiding this comment.
Both esp_wifi and esp_eth select netdev_eth.
esp_now is a 6lo interface.
And ESP32 does use our GNRC stack or LWIP, just like everyone else.
|
When building for a 6lo-only board (e.g., nrf52840) ideally nothing should change, right? However, I get 12 additional bytes in ROM compared to the state before this PR. I haven't really figured out where. Edit: Maybe that's just an issue with the size command. cosy isn't showing any differences. |
Contribution description
When mixing 6lo interfaces with 'classic' IPv6 interfaces we would always see strange behavior in RIOT. E.g. if we enable
gnrc_ipv6_defaulttogether with an Ethernet interface and a IEEE 802.15.4 interface, the node would get a global address on the Ethernet interface but seemingly can't be reached via that address. (After manually enablingCONFIG_GNRC_IPV6_NIB_SLAACandCONFIG_GNRC_IPV6_NIB_ARSM)This is because the 6lo optimizations would always get turned on globally when the
gnrc_ipv6_nib_6lnmodule is in use, disregarding what other interfaces might be present.In this case the
CONFIG_GNRC_IPV6_NIB_NUMOFwould get set to 1, leading to no space being left for any neighbor's address, other than the default router, so address resolution would always fail.Fix this by introducing a pseudo-module
gnrc_ipv6_classicthat gets selected by non-6lo interfaces. Now we can only enable the 6lo optimizations when there are no 'classic' interfaces present.Testing procedure
In
examples/gnrc_networkingreplacegnrc_ipv6_router_defaultwithgnrc_ipv6_default(or don't, it's just most apparent with that), then addUSEMODULE += netdev_tapand build and run withUSE_ZEP=1.master
let's manually enable SLAAC and ARSM…
But still no success:
this PR
Issues/PRs references