[riot-devel] MRF24J40 radio module driver

Alexander Aring aar at pengutronix.de
Tue Sep 6 08:48:13 CEST 2016


not sure if I should open this discussion in this thread. :-/

On 09/05/2016 11:45 PM, Peter Kietzmann wrote:
> Hi Neo,
> if I see it correctly, the procedure is as follows:
> gnrc_networking uses the the gnrc_ipv6 module which automatically pulls in it's dependencies. This is, among others, gnrc_ipv6_netif.
> https://github.com/RIOT-OS/RIOT/blob/master/Makefile.dep#L280
> Once this was defined, auto_init will call the "init by netif device" function.
> https://github.com/RIOT-OS/RIOT/blob/master/sys/auto_init/auto_init.c#L227
> This function will set the net option "NETOPT_SRC_LEN" to 8 Byte, which is the length for long hardware addresses.
> https://github.com/RIOT-OS/RIOT/blob/master/sys/net/gnrc/network_layer/ipv6/netif/gnrc_ipv6_netif.c#L833
> The at86rf2xx driver does not implement this option itself and passes it to the netdev2_ieee802154 module.
> https://github.com/RIOT-OS/RIOT/blob/master/drivers/at86rf2xx/at86rf2xx_netdev.c#L580
> In case netopt is "NETOPT_SRC_LEN" and the value is "IEEE802154_LONG_ADDRESS_LEN" (which is defined as 8U), this module sets the "NETDEV2_IEEE802154_SRC_MODE_LONG" flag.
> https://github.com/RIOT-OS/RIOT/blob/master/drivers/netdev2_ieee802154/netdev2_ieee802154.c#L173

I don't know why this goes down through the driver layer. The address
filter doesn't need such information if you use as source address long
or short.

For me it's unclear for what this sourc_len really is made for. I would
suggest to use the best address setting which do the most smallest
payload. Sure, there exists situation to overwrite such setting - but
this should be done not as an interface setting.

This is the way what I have in my mind to do in Linux.

side note:
interessting is that, in 6LoWPAN it depends on L3 address and
fragmentation if you use short or long address to produce the smallest

- Alex

More information about the devel mailing list