-
Notifications
You must be signed in to change notification settings - Fork 8.3k
Description
Hello,
i am currently working on porting zephyr to the Texas Instruments cc2538 SoC. While doing that, i am trying to get Networking to work over the built-in IEEE802154 radio in the cc2538. I already got that to working as far that the echo_client / echo_server samples can communicate with each other successfully with data beeing transmitted correctly.
My development started on Zephyr 1.7 and i recently have moved my implementation to Zephyr 1.11, when i was running on 1.7 the transmission was very smooth and was only subject to errors very rarely (that is less than 1 lost paket in a minute, mostly due to an error on the physical layer). With Zephyr 1.11 i am experiencing delays which i could not identify the source exaclty yet, but i suspected some network caching mechanism, which led me to disabling "Multicast Listener Discovery support" and "Neighbor cache".
In doing so i loose the functionality with the following error:

I was able to track the issue to some degree, but since my understanding of the layer 2 and layer 3 implementation is limited i had given up on my own. My findings were that there seems to exist a discrepancy with what address type is used (PAN ID, Short Address, Extended Address) when computing the header size in the function ieee802154_compute_header_size.
In this context i also found it interesting that the layer 2 implementation in l2/ieee802154_frame.c seems to make a call to a higher layer, the ipv6 layer, which seems uncommon / incorrect in a layered architecture to me. Below you see the piece of code in question, the function call to "net_ipv6_nbr_lookup", i think the other branch is taken between working/nonworking.

Some one else pointed out to me that it might be related to "joining a network" on a certain level, on which it does not know the mode of addressing yet, but sadly i'm could not do much with that information.
Attached you can find the autoconf.h from the working variant (which still suffers from frequent timeouts, but otherwise works) and the nonworking variant which does not send anything because of the explained error. I hope this provides reasonable information about my configuration, if i should / can provide addition information, please tell me to.
autoconf_working.h.txt
autoconf_nonworking.h.txt
The final question therefore is, is this a bug (in calculating the header sizes) or is my second configuration at fault?