Documentation/networking/ieee802154: update MAC chapter

Update the documentation according to latest changes.

Signed-off-by: Alexander Smirnov <alex.bluesman.smirnov@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
alex.bluesman.smirnov@gmail.com 2012-05-15 20:50:31 +00:00 committed by David S. Miller
parent e1e49b6413
commit dd456d45d7
1 changed files with 59 additions and 16 deletions

View File

@ -4,15 +4,22 @@
Introduction Introduction
============ ============
The IEEE 802.15.4 working group focuses on standartization of bottom
two layers: Medium Accsess Control (MAC) and Physical (PHY). And there
are mainly two options available for upper layers:
- ZigBee - proprietary protocol from ZigBee Alliance
- 6LowPAN - IPv6 networking over low rate personal area networks
The Linux-ZigBee project goal is to provide complete implementation The Linux-ZigBee project goal is to provide complete implementation
of IEEE 802.15.4 / ZigBee / 6LoWPAN protocols. IEEE 802.15.4 is a stack of IEEE 802.15.4 and 6LoWPAN protocols. IEEE 802.15.4 is a stack
of protocols for organizing Low-Rate Wireless Personal Area Networks. of protocols for organizing Low-Rate Wireless Personal Area Networks.
Currently only IEEE 802.15.4 layer is implemented. We have chosen The stack is composed of three main parts:
to use plain Berkeley socket API, the generic Linux networking stack - IEEE 802.15.4 layer; We have chosen to use plain Berkeley socket API,
to transfer IEEE 802.15.4 messages and a special protocol over genetlink the generic Linux networking stack to transfer IEEE 802.15.4 messages
for configuration/management and a special protocol over genetlink for configuration/management
- MAC - provides access to shared channel and reliable data delivery
- PHY - represents device drivers
Socket API Socket API
@ -29,15 +36,6 @@ or git tree at git://linux-zigbee.git.sourceforge.net/gitroot/linux-zigbee).
One can use SOCK_RAW for passing raw data towards device xmit function. YMMV. One can use SOCK_RAW for passing raw data towards device xmit function. YMMV.
MLME - MAC Level Management
============================
Most of IEEE 802.15.4 MLME interfaces are directly mapped on netlink commands.
See the include/net/nl802154.h header. Our userspace tools package
(see above) provides CLI configuration utility for radio interfaces and simple
coordinator for IEEE 802.15.4 networks as an example users of MLME protocol.
Kernel side Kernel side
============= =============
@ -51,6 +49,15 @@ Like with WiFi, there are several types of devices implementing IEEE 802.15.4.
Those types of devices require different approach to be hooked into Linux kernel. Those types of devices require different approach to be hooked into Linux kernel.
MLME - MAC Level Management
============================
Most of IEEE 802.15.4 MLME interfaces are directly mapped on netlink commands.
See the include/net/nl802154.h header. Our userspace tools package
(see above) provides CLI configuration utility for radio interfaces and simple
coordinator for IEEE 802.15.4 networks as an example users of MLME protocol.
HardMAC HardMAC
======= =======
@ -73,11 +80,47 @@ We provide an example of simple HardMAC driver at drivers/ieee802154/fakehard.c
SoftMAC SoftMAC
======= =======
We are going to provide intermediate layer implementing IEEE 802.15.4 MAC The MAC is the middle layer in the IEEE 802.15.4 Linux stack. This moment it
in software. This is currently WIP. provides interface for drivers registration and management of slave interfaces.
NOTE: Currently the only monitor device type is supported - it's IEEE 802.15.4
stack interface for network sniffers (e.g. WireShark).
This layer is going to be extended soon.
See header include/net/mac802154.h and several drivers in drivers/ieee802154/. See header include/net/mac802154.h and several drivers in drivers/ieee802154/.
Device drivers API
==================
The include/net/mac802154.h defines following functions:
- struct ieee802154_dev *ieee802154_alloc_device
(size_t priv_size, struct ieee802154_ops *ops):
allocation of IEEE 802.15.4 compatible device
- void ieee802154_free_device(struct ieee802154_dev *dev):
freeing allocated device
- int ieee802154_register_device(struct ieee802154_dev *dev):
register PHY in the system
- void ieee802154_unregister_device(struct ieee802154_dev *dev):
freeing registered PHY
Moreover IEEE 802.15.4 device operations structure should be filled.
Fake drivers
============
In addition there are two drivers available which simulate real devices with
HardMAC (fakehard) and SoftMAC (fakelb - IEEE 802.15.4 loopback driver)
interfaces. This option provides possibility to test and debug stack without
usage of real hardware.
See sources in drivers/ieee802154 folder for more details.
6LoWPAN Linux implementation 6LoWPAN Linux implementation
============================ ============================