Re: Open task "missing enums", latest standard and where to put enums?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Thank you Alexander for that comprehensive answer, I will look in to it.
--
Christoffer Holmstedt


2015-05-04 10:44 GMT+02:00 Alexander Aring <alex.aring@xxxxxxxxx>:
> Hi,
>
> On Mon, May 04, 2015 at 08:08:38AM +0200, Christoffer Holmstedt wrote:
>> Hi
>> I'm looking in to the first open task about missing enums.
>>
>> ### Is the latest standard from 2011?
>> Is the IEEE Std 802.15.4-2011 [1] the latest one to use?
>>
>
> yes.
>
>> How much attention should I pay to the more specific ones such as
>> 802.15.4(g) for smart metering utility networks or (p) for Rail
>> communication and control? (I assume these are more about "policy" and
>> perhaps not so much about the "mechanism" to be implemented in the
>> linux kernel but I could be wrong here).
>>
>
> I would say "yes" here too, but I asked this myself some time ago. maybe
> some other people can answer your question here.
>
> What I know is in case of at86rf2xx transceivers:
>
> at86rf230 is -2003
> at86rf231 is -2006
> at86rf233 is -2011
>
> but you should follow the actual standard 2011, they have also some
> notes like:
>
> 5.2.1.1.7 Frame Version field
>
> "This field shall be set to 0x00 to indicate a frame compatible with
>  802.15.4-2003".
>
> Which we should lookup then in 2003 what's the different handling of this.
>
>
> For all others transceivers in the datasheet stands 2003, 2006 or 2011
> standard. I never saw a transceiver which have some additional character
> which follows a 802.15.4(g) standard, but maybe they don't exists yet.
> ;-) And also we don't handle the 2003 standard right at the moment, e.g.
> check/create on frame version field. We also don't support the at86rf230
> at the moment and this is maybe one reason, all others transceivers are
> hopefully -2006 or -2011.
>
> I also never tried to speak to a -2003 transceiver and I am not sure if
> this works correctly.
>
>> ### Where to put enums? It all depends I assume...
>> "include/linux/[ieee802154.h|nl802154.h]" seems to include specific
>> IEEE802.15.4 defines/enums, anywhere else to look?
>>
>
> What I meant with the opentask of missing enums definition to some
> strings is a very simple task which I was too lazy to implement and is
> related to wpan-tools only.
>
> Something like [0], the function "iftype_name".
>
> We need such function also for printing the frequency (in MHz, whatever)
> additional for page and channel. You can lookup the frequency in
> 802.15.4-2011, there are forumlars to calucalte the frequency according
> to page and channel. See "8.1.2 Channel assignments" for formulars like
>
> F_c = 2405 + 5 (k - 11) in megahertz, for k = 11, 12, ... 26 (example
> for channel page zero and channel 11 - 26 which is 2.4 GHz O-QPSK band.
>
> The same is for CCA modes, which we have in the userspace nl802154
> header. Currently I see this on iwpan list:
>
> cca_mode: 1
>
> but what the hell is cca mode "1"? This can be lookuped in 802.15.4-2011
> "8.2.7 Clear channel assessment (CCA)".
>
> Simple making a short function which have [1] as parameter (also
> included the cca opt string for special case in cca mode 3 -> the or 'xor'
> and logical operation).
>
>
> So that was the userspace <-> kernelside. Doing communication between these layes
> are only handled by enums. Special case if the standard definition is a number
> itself, like channel or page. We could introduce some:
>
> enum nl802154_pages {
>         nl802154_PAGE0,
>         nl802154_PAGE1,
>         ...
> };
>
> but I don't see the benifits of this enums, for cca modes it makes sense
> to do that. 802.15.4 describes a mapping to some "string explained cca
> mode" to "number".
>
> This is the userspace side which has only the userspace header nl802154,
> this is what I meant in the opentasks section. We have also one other
> userspace header which is for the 802.15.4 address family, but I didn't
> looked into that deeper.
>
>
> For kernelside there are also some missing enums which can be replaced
> by magic numbers, simple go ahead and send patches then I can look into
> that for reviewing.
>
> General about the huge numbers of related kernel headers:
>
> include/net/6lowan.h - header for net/6lowpan branch only. But this is
>                        currently not through and should a new open task
>                        because this header also includes only defines
>                        which are 802.15.4 specifc. e.g. dispatch values
>                        for fragmentation.
>
> net/ieee802154/6lowpan_i.h - doesn't exist right now but should only
>                              contains 802.15.4 6lowpan defines. e.g.
>                              dispatch values for fragmentation.
>
> You see, you only need to move some defines from global to an internal
> header. I already did that in the rework branch (I supposed) but have
> other priorities. Go ahead and send patches I and the generic 6LoWPAN
> community will review that.
>
> other headers:
>
> include/linux/ieee802154.h - contains 802.15.4 defines like BROADADDRESS
>                              and such things. These things coming from
>                              standard. If things are coming from
>                              standard but you need it for userspace
>                              defines then include/net/nl802154.h is the
>                              right one, e.g. cca modes enum.
>
>                              It's also plan to put (like wireless it does),
>                              many helpers script to parsing the header.
>                              See the rework branch [2]. I didn't send it
>                              mainline because it's difficult to replace
>                              the header parsing, because it's used everywhere
>                              and the crypto layer isn't configurable by a common
>                              userspace tool.
>
> include/net/mac802154.h - for the SoftMAC Layer part which should be
>                           globally because contains defines which
>                           can be used by driver layer.
>
> include/net/cfg802154.h - things which belongs to the connection between
>                           net/mac802154 and net/ieee802154. That's what
>                           cfg802154 does. In future you could also
>                           replace the net/mac802154 by a HardMAC driver.
>
> include/linux/nl802154.h - old userspace header should be removed.
>
> include/net/nl802154.h - userspace header which contains enums or defines only.
>                          I mentioned the enums and defines here because
>                          that was completely wrong in the old userspace
>                          header include/linux/nl802154.h which contains
>                          a prototype "extern const struct nla_policy
>                          ieee802154_policy[];". We do that now like wireless.
>                          You can lookup the wireless userspace header in
>                          "include/uapi/linux/nl80211.h". Our header is
>                          currently not part of include/uapi because if
>                          you have headers there and you will change it
>                          (maybe some enum name), then everybody in the
>                          linux world will be angry, because their
>                          software will not compile anymore. So that we
>                          are don't part of uapi right now is okay... but
>                          changing the interface is always not a good
>                          idea, nevertheless the interface is still in
>                          development. At the moment you need to grab
>                          everytime this header for your wpan userspace
>                          tool and should be the same like the running kernel.
>
> include/net/af_ieee802154.h - normally also an uapi header for the
>                               802.15.4 socket family which I don't trust
>                               right now that this is working correctly.
>
> include/net/ieee802154_netdev.h - this header should be removed, it
>                                   various things which should be moved
>                                   to the other headers.
>
> If you see some magic values, try to find the right header (please not
> the include/net/ieee802154_netdev.h).
>
> - Alex
>
> [0] https://github.com/linux-wpan/wpan-tools/blob/master/src/interface.c#L21
> [1] http://lxr.free-electrons.com/source/include/net/nl802154.h#L136
> [2] https://github.com/linux-wpan/linux-wpan-next/blob/wpan_rework_rfc/include/net/ieee802154.h#L178
--
To unsubscribe from this list: send the line "unsubscribe linux-wpan" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Linux Audio Users]     [Photo]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux