On 05/03/12 11:21, Felix Varghese wrote: > On 5 March 2012 00:31, Dmitry Eremin-Solenikov <dbarysh...@gmail.com> wrote: >> Hello, >> >> On Sun, Mar 4, 2012 at 9:05 PM, Felix Varghese <felixv1...@gmail.com> wrote: >>> This is the terminology we tried to follow consistently >>> in the code. If we are aiming for IEEE compliance and >>> interoperability, we would need to implement a get and set for each >>> and every one of these attributes (although indeed the terminology >>> wouldn't matter!). So, even if these attributes weren't actually got >>> or set anywhere in the code (which they would be, as an when new >>> features are implemented), their implementation is a significant step >>> towards building an proper 802.15.4 implementation. >> >> Yes and no. First, do you plan to have standard compatibility on the >> "procedure" level of things - I mean implementing all procedures as >> defined by standard? They don't always fit the Linux model. E.g. >> there are probably better ways to implement passing of scan results >> to userspace, comparing to the standard text. I'm really not sure >> that implementing PHY PIB as get/set is a "Goot Thing". Etc. > > I agree that it doesn't seem good to expose such low level > functionality outside the kernel, but I don't think we have a choice > on that if we expect our stack to be usable for Zigbee or RF4CE or any > other network layer that expects and "IEEE 802.15.4 MAC". Both expect > all PIBs related to non-beacon enabled MAC to be exposed, including > channel and channel page (RF4CE stack can hop channels at will). If we > do not implement it as the spec recommends, sooner or later, somebody > who is porting a network layer on top of MAC might be surprised to > realize that he is missing something important which he has no means > of getting.
802.15.4e also adds optional channel hopping. I do not remember exact timing requirements. Would it be possible to implement channel hopping without hardware (radio) help on a non-RT-enabled Linux? And even if it is possible, I think channel hopping should be implemented in the lowest stack layers. So one will then set channel hopping parameters directly, not hop the channel each time manually. > > For the same reason, it would be ideal if all other MLME primitives > recommended by the standard are implemented (via NL or some other > interface) with minimal variations. Most existing 802.15.4 MAC > implementations on the smaller devices follow this interface > consistently for at least MLME and MCPS. Of course, we are free to > modify the MAC-to-PHY interface in any way we want because it is all > internal to the kernel. And in our case, MCPS data request and > indication should obviously use AF_IEEE802154 socket write() and > read() respectively. Apart from that, we would like to suggest that we > try to go by the standard wherever possible, except where it would > stand in our way, in which case we should undoubtedly take a different > route! This will ensure that our stack is usable by anyone who wants > to implement any protocol over an "IEEE 802.15.4 MAC". It has some established "best practices" and some deficiencies towards standards implementation Well... For small devices it might be a good idea to follow standard word by word. For Linux it is not so good idea. Linux is multi-process, multi-interface and multi-user environment. E.g. the DATA calls are already implemented not following the interface described in the standard. PURGE call will have to be implemented in some not-so-standard-following way. I don't know yet, how it should be implemented. Maybe you can propose something. Scanning, COMM-STATUS and several other topics do not fit directly into my thought of Linux. >>> The PIB also forms >>> the backbone over which the rest of the features would fit in. The MAC >>> primitives, when implemented, will use these attributes heavily. >> >> Yes, it is true. But strictly speaking PIB is not the most important >> part of the standard to implement. It is true that we did not implement >> GET/SET/RESET commands due to various reasons ranging from >> problems with designing good interface to PIB. I'm not sure that >> NetLink is well suited for such task. Could you please consult with >> cfg80211 subsystem to check how they implemented access to >> their information base variables? > > Okay. From our perspective, though, the existing netlink-based > interface seemed ideal for PIB implementation (and all other MLME > primitives too, for that matter) because it would be easily and > consistently accessible using very similar code from both userspace > (for perhaps a Zigbee, Zigbee pro or RF4CE stack) and kernel space > (for 6lowpan and friends). Yes, it was done so exactly on this purpose. I'm just unsure how PIB should fit into NetLink interface. -- With best wishes Dmitry ------------------------------------------------------------------------------ Try before you buy = See our experts in action! The most comprehensive online learning library for Microsoft developers is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3, Metro Style Apps, more. Free future releases when you subscribe now! http://p.sf.net/sfu/learndevnow-dev2 _______________________________________________ Linux-zigbee-devel mailing list Linux-zigbee-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linux-zigbee-devel