cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

6lowpan.rst (1542B)


      1.. SPDX-License-Identifier: GPL-2.0
      2
      3==============================================
      4Netdev private dataroom for 6lowpan interfaces
      5==============================================
      6
      7All 6lowpan able net devices, means all interfaces with ARPHRD_6LOWPAN,
      8must have "struct lowpan_priv" placed at beginning of netdev_priv.
      9
     10The priv_size of each interface should be calculate by::
     11
     12 dev->priv_size = LOWPAN_PRIV_SIZE(LL_6LOWPAN_PRIV_DATA);
     13
     14Where LL_PRIV_6LOWPAN_DATA is sizeof linklayer 6lowpan private data struct.
     15To access the LL_PRIV_6LOWPAN_DATA structure you can cast::
     16
     17 lowpan_priv(dev)-priv;
     18
     19to your LL_6LOWPAN_PRIV_DATA structure.
     20
     21Before registering the lowpan netdev interface you must run::
     22
     23 lowpan_netdev_setup(dev, LOWPAN_LLTYPE_FOOBAR);
     24
     25wheres LOWPAN_LLTYPE_FOOBAR is a define for your 6LoWPAN linklayer type of
     26enum lowpan_lltypes.
     27
     28Example to evaluate the private usually you can do::
     29
     30 static inline struct lowpan_priv_foobar *
     31 lowpan_foobar_priv(struct net_device *dev)
     32 {
     33	return (struct lowpan_priv_foobar *)lowpan_priv(dev)->priv;
     34 }
     35
     36 switch (dev->type) {
     37 case ARPHRD_6LOWPAN:
     38	lowpan_priv = lowpan_priv(dev);
     39	/* do great stuff which is ARPHRD_6LOWPAN related */
     40	switch (lowpan_priv->lltype) {
     41	case LOWPAN_LLTYPE_FOOBAR:
     42		/* do 802.15.4 6LoWPAN handling here */
     43		lowpan_foobar_priv(dev)->bar = foo;
     44		break;
     45	...
     46	}
     47	break;
     48 ...
     49 }
     50
     51In case of generic 6lowpan branch ("net/6lowpan") you can remove the check
     52on ARPHRD_6LOWPAN, because you can be sure that these function are called
     53by ARPHRD_6LOWPAN interfaces.