New direction of the 802.15.4 implementation

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

 



Hi,

This is some note about the new possible direction of this stack
implementation.

The current implementation have several issues, maybe you notice these.

1. Non working monitor device (I get it working with some hacks)

2. There are some mlme ops which don't have any functionality like PAN
   coordinator functionality.(association, ...)

3. Workqueues (Have lot of overhead, should be removed)

4. No async xmit callbacks

5. Slave list need more robust. (No different channels on the slaves,
   like wireless)

6. Make structs like IEEE 802.15.4 standard, I mean the MAC PIB and PHY
   PIB, etc.. sometimes I read the name but when I see the structs it
   isn't that what the standard shows.



I take a closer look at the wireless implementation and this is what we
also should use as a good example. We should all things name like the wireless
stack, so people which comes from this implementation can easly
integrate into the 802.15.4 implementation. This sounds hard but this
was already done, the mac802154_priv struct is the ieee80211_local
struct, etc... we have lot of similarity there. (A note about the priv
struct, we have too much privs in the implementation ipriv, priv I
getting crazy because this.)

They have a lot of ieee80211_* struct, we should name our structs ieee802154_*.
Maybe we can take a more closer look and merge things together, but this
is something for the future.

Currently we have two slave types, these are:

- wpan
- monitor

I will drop the monitor device, because it's not working. Then I will
add:

- node
- monitor
- coord

This allow us to have at the _beginning_ a splitted kernelspace
implementation for node, monitor and coordinator devices.

The node device is similar to the wpan device. The coord device is an coordinator
device. We do this split at beginning and maybe we can merge the
coordinator functionality in the node device type. But for beginning we
split the implementation for that.



For workqueues issues:

The xmit callback will be asynchron and we introduce a xmit_sync
callback as fallback if xmit is not implemented.

The different of these xmit callbacks are that the async xmit call
doesn't block until transmit is done, this will redouce some workqueue
overhead.

We can't just drop the workqueues, because some drivers use the spi_sync
functions.




The wireless stack use slaves list not to have more virtual interfaces
on the phy of the same type. They have it more to have different device
types on a phy like node, monitor or coordinator. I think this is a big
mistake of the current stack implementation. In wireless there are
STATION, ACCESSPOINT, MESH, etc. interface types.

We should go the way exactly like the mac80211 implementation. For the
beginning we don't need gadgets like priority scheduling of frametypes,
etc. Just a base implementation like wireless with receiving and frame
parsing. etc.


For the first we have only the interface type NODE and this is like
STATION in wireless implementation. As default device this is always
set, you don't need userspace tools for that "iz add ...".

I will try to keep all the current "userful and functionality" netlink
interfaces and start also a implementation of a new userspacetool named
"wpan-tools" with iwpan as binary name (like iw wireless).

- Alex
--
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