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