diff --git a/Documentation/README.html b/Documentation/README.html index 01a27ce6446..8cc093715d4 100644 --- a/Documentation/README.html +++ b/Documentation/README.html @@ -8,7 +8,7 @@

NuttX README Files

-

Last Updated: March 23, 2017

+

Last Updated: April 8, 2017

@@ -362,6 +362,8 @@ nuttx/ | | `- README.txt | `- README.txt |- net/ + | |- sixlowpan/ + | | `- README.txt | `- README.txt |- syscall/ | `- README.txt diff --git a/README.txt b/README.txt index 5d3721f4c50..af17a2334dd 100644 --- a/README.txt +++ b/README.txt @@ -1750,6 +1750,8 @@ nuttx/ | | `- README.txt | `- README.txt |- net/ + | |- sixlowpan + | | `- README.txt | `- README.txt |- syscall/ | `- README.txt diff --git a/include/nuttx/net/sixlowpan.h b/include/nuttx/net/sixlowpan.h index 04b69da6048..dfc8a13a764 100644 --- a/include/nuttx/net/sixlowpan.h +++ b/include/nuttx/net/sixlowpan.h @@ -376,28 +376,38 @@ struct ieee802154_driver_s /* i_dgramtag. Datagram tag to be put in the header of the set of * fragments. It is used by the recipient to match fragments of the * same payload. + * + * This is the sender's copy of the tag. It is incremented after each + * fragmented packet is sent so that it will be unique to that + * sequence fragmentation. Its value is then persistent, the values of + * other fragmentatin variables are valid on during a single + * fragmentation sequence (while i_accumlen > 0) */ uint16_t i_dgramtag; + /* i_reasstag. Each frame in the reassembly has a tag. That tag must + * match the reassembly tag in the fragments being merged. + * + * This is the same tag as i_dgramtag but is saved on the receiving + * side to match all of the fragments of the packet. + */ + + uint16_t i_reasstag; + /* i_pktlen. The total length of the IPv6 packet to be re-assembled in - * d_buf. + * d_buf. Used to determine when the re-assembly is complete. */ uint16_t i_pktlen; /* The current accumulated length of the packet being received in d_buf. - * Included IPv6 and protocol headers. + * Included IPv6 and protocol headers. Currently used only to determine + * there is a fragmentation sequence in progress. */ uint16_t i_accumlen; - /* i_reasstag. Each frame in the reassembly has a tag. That tag must - * match the reassembly tag in the fragments being merged. - */ - - uint16_t i_reasstag; - /* i_boffset. Offset to the beginning of data in d_buf. As each fragment * is received, data is placed at an appriate offset added to this. */ diff --git a/net/sixlowpan/README.txt b/net/sixlowpan/README.txt new file mode 100644 index 00000000000..b9968c318b9 --- /dev/null +++ b/net/sixlowpan/README.txt @@ -0,0 +1,30 @@ +Optimal 6loWPAN Configuration: + +1. Link local IP addresses: + + 128 112 96 80 64 48 32 16 + fe80 0000 0000 0000 xxxx xxxx xxxx xxxx + +2. MAC-based IP addresses: + + 128 112 96 80 64 48 32 16 + ---- ---- ---- ---- ---- ---- ---- ---- + xxxx xxxx xxxx xxxx xxxx 00ff fe00 MMMM 2-byte Rime address IEEE 48-bit MAC + fe80 0000 0000 0000 NNNN NNNN NNNN NNNN 8-byte Rime address IEEE EUI-64 + + Where MMM is the 2-byte rime address XOR 0x0200. For example, the MAC + address of 0xabcd would be 0xa9cd. And NNNN NNNN NNNN NNNN is the 8-byte + rime address address XOR 02000 0000 0000 0000 + +3. MAC based link-local addresses + + 128 112 96 80 64 48 32 16 + ---- ---- ---- ---- ---- ---- ---- ---- + fe80 0000 0000 0000 0000 00ff fe00 MMMM 2-byte Rime address IEEE 48-bit MAC + fe80 0000 0000 0000 NNNN NNNN NNNN NNNN 8-byte Rime address IEEE EUI-64 + +4. Compressable port numbers in the rangs 0xf0b0-0xf0bf + +5. IOBs: Must be big enough to hold one IEEE802.15.4 frame (CONFIG_NET_6LOWPAN_FRAMELEN, + typically 127). There must be enough IOBs to decompose the largest IPv6 + packet (CONFIG_NET_6LOWPAN_MTU, default 1294, plus per frame overhead). \ No newline at end of file