-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
documentation: networking: add 6lowpan documentation
This patch adds a 6lowpan.txt into the networking documentation directory. Currently this documentation describes how the lowpan private data of net devices will be handled. Cc: Jonathan Corbet <corbet@lwn.net> Cc: linux-doc@vger.kernel.org Suggested-by: Jukka Rissanen <jukka.rissanen@linux.intel.com> Signed-off-by: Alexander Aring <alex.aring@gmail.com> Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
- Loading branch information
Alexander Aring
authored and
Marcel Holtmann
committed
Aug 11, 2015
1 parent
4ae935c
commit ea9eb69
Showing
2 changed files
with
51 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,50 @@ | ||
|
||
Netdev private dataroom for 6lowpan interfaces: | ||
|
||
All 6lowpan able net devices, means all interfaces with ARPHRD_6LOWPAN, | ||
must have "struct lowpan_priv" placed at beginning of netdev_priv. | ||
|
||
The priv_size of each interface should be calculate by: | ||
|
||
dev->priv_size = LOWPAN_PRIV_SIZE(LL_6LOWPAN_PRIV_DATA); | ||
|
||
Where LL_PRIV_6LOWPAN_DATA is sizeof linklayer 6lowpan private data struct. | ||
To access the LL_PRIV_6LOWPAN_DATA structure you can cast: | ||
|
||
lowpan_priv(dev)-priv; | ||
|
||
to your LL_6LOWPAN_PRIV_DATA structure. | ||
|
||
Before registering the lowpan netdev interface you must run: | ||
|
||
lowpan_netdev_setup(dev, LOWPAN_LLTYPE_FOOBAR); | ||
|
||
wheres LOWPAN_LLTYPE_FOOBAR is a define for your 6LoWPAN linklayer type of | ||
enum lowpan_lltypes. | ||
|
||
Example to evaluate the private usually you can do: | ||
|
||
static inline sturct lowpan_priv_foobar * | ||
lowpan_foobar_priv(struct net_device *dev) | ||
{ | ||
return (sturct lowpan_priv_foobar *)lowpan_priv(dev)->priv; | ||
} | ||
|
||
switch (dev->type) { | ||
case ARPHRD_6LOWPAN: | ||
lowpan_priv = lowpan_priv(dev); | ||
/* do great stuff which is ARPHRD_6LOWPAN related */ | ||
switch (lowpan_priv->lltype) { | ||
case LOWPAN_LLTYPE_FOOBAR: | ||
/* do 802.15.4 6LoWPAN handling here */ | ||
lowpan_foobar_priv(dev)->bar = foo; | ||
break; | ||
... | ||
} | ||
break; | ||
... | ||
} | ||
|
||
In case of generic 6lowpan branch ("net/6lowpan") you can remove the check | ||
on ARPHRD_6LOWPAN, because you can be sure that these function are called | ||
by ARPHRD_6LOWPAN interfaces. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters