Commit Graph

2167 Commits

Author SHA1 Message Date
Tomasz Bursztyka 1975c1d1e7 net: Add TODO items for L2 and 802.15.4
Change-Id: Ie02cecb37e06cfae8a06a0653e2ccdfe0db9fd89
Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
2016-12-02 12:40:23 +02:00
Jukka Rissanen 5665dac4de net: TODO file for networking
Please collect things to do into this document.

Change-Id: I763cd0e3f6ec6b447b5d9efbebcb56f7b50cecc6
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:40:23 +02:00
Jukka Rissanen a7ef4702f4 net: Clarify the CONFIG_NET_TESTING setting
As the CONFIG_NET_TESTING option should be only enabled
if we have Qemu-to-Qemu communication, clearly tell this
in the Kconfig help for that option.

Change-Id: Id1c65d17fb9859ead767294b2f43dd7b57b007ac
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:40:22 +02:00
Tomasz Bursztyka 6e1fc655a2 net: Add packet display in ieee802154 l2 stack
Only meant to be used while debugging deeply. Thus needs to be enabled
by hand in the source code.

Change-Id: Idf4e33154fee0e3d7e1da64708e1c7b4d790d790
Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
2016-12-02 12:40:22 +02:00
Tomasz Bursztyka ddbc7165f6 net: Integrate 6lo compression support in IEEE 802.15.4 L2 stack
Packet is compressed after its ll part has been computed when sending.
And it is then decompressed after the ll part has been validated when
receiving.

Change-Id: Ifebbd5727623e94f1c2273f2211ba0f109ac4a8f
Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
2016-12-02 12:40:22 +02:00
Tomasz Bursztyka f961ad6a49 net: ieee802154: Handle plain/compressed ll addr
Buf ll addr need to point to the right place, depending whether it's a
plain address field (thus with the pan ID) or not.

Change-Id: I9897b1f9bec0f7cecd01517c69c3bdefe2bc204b
Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
2016-12-02 12:40:22 +02:00
Tomasz Bursztyka bf479b326e net: Add more debugging messages to 6lo
Change-Id: I8c5d19a0ecd23235e9d936340cfde2cf0edd98b0
Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
2016-12-02 12:40:22 +02:00
Tomasz Bursztyka 9dae18a11b net: 6lo: Grab uncompressed header type relevantly
When there is no compressed header following IPv6 one,
the type of such header is set after tc/flow information.
Using it relevantly to set IPv6 nexthdr field.

Change-Id: I78d5ae8b8377f9bed6b682fa070f2b5fe28dd3ee
Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
2016-12-02 12:40:22 +02:00
Tomasz Bursztyka 62aa5bece0 net: 6lo uncompression should continue to proceed after src addr
This is a minor fix where it has to continue decompressing the
header instead of ending it after getting src address.

Change-Id: Ice46ec62b8de07927624b275c2a98158d37316fb
Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
2016-12-02 12:40:22 +02:00
Tomasz Bursztyka 1896f017d7 net: Add debug print on IPv6 preliminary check
Change-Id: I13ff6a43b26397b7f84cc45ff48de1bb1d097bc9
Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
2016-12-02 12:40:22 +02:00
Tomasz Bursztyka 55714129cd net: Add debug messages when dropping packets
Also removing a superfluous label.

Change-Id: Ie27e868fe3328162bb3f42312dd2cfcc230aa509
Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
2016-12-02 12:40:21 +02:00
Tomasz Bursztyka 11dba2a129 net: Handle ll part in 6lo logic when relevant
The given buffer might have an ll part already filled in, so handling
its content if any.

Also reordering the local variable declaration according to Zephyr's
style.

Change-Id: Iaf9c117d39c90d5f71ca3aad02a52ea9d9b34223
Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
2016-12-02 12:40:21 +02:00
Tomasz Bursztyka b7bb5bd944 net: Built IEEE 802.15.4 fragmentation logic if requested
Fixing as well minor Kconfig issues related to IEEE 802.15.4
fragmentation.

Change-Id: I4edd3db4501563a473b7cdf15da8262b8443c0ac
Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
2016-12-02 12:40:21 +02:00
Tomasz Bursztyka 9c62543f62 net: Follow file naming in ieee802154 l2 stack
For consistency as well as for helping when grepping etc.

Change-Id: Ib5e6b3369e510dd2b996f735d801c2b80291ad7f
Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
2016-12-02 12:40:21 +02:00
Tomasz Bursztyka 78aa33a875 net: Giving uncompressed buffer to 6lo is not an error
If compression header watermark is not found, it will successfully
return as it's not an error. It just means there is not uncompression
work to do.

Using NET_ASSERT() to check the argument validity as well.

Change-Id: I907f3f197d59d7ddb546860d232d6ca20a4445e3
Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
2016-12-02 12:40:21 +02:00
Tomasz Bursztyka 6f7343a154 net: SYS_INIT() routines are never ran twice
No need to control the state of this routine, as this
will be ran only once.

Change-Id: I2f9f04012d793787ba56ef6403f8a92e8e1b073e
Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
2016-12-02 12:40:21 +02:00
Jukka Rissanen 17d2ab05c8 net: Trickle algorithm implementation
See RFC 6206 for Trickle details.

Change-Id: I709d81eb182f068293cf4b1f1474b2911febc5d4
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:40:21 +02:00
Ravi kumar Veeramally a84c40e1ed net: Change NET6LO_ defines to NET_6LO
Change-Id: I2e03cae1e6b785e985cc985c187ccf6cb6ff23c6
Signed-off-by: Ravi kumar Veeramally <ravikumar.veeramally@linux.intel.com>
2016-12-02 12:40:21 +02:00
Ravi kumar Veeramally fe4a4efe78 net: Add support for IEEE 802.15.4 re-assembly
Reassembly IEEE 802.15.4 fragments as per it's datagram size
and datagram tag. Uncompress IP header fragment as soon as it
arrives. Size matches only after uncompression of IP header with
total length.

Support added for multiple IP packet reception. Default is one full
IP packet at a time. Cache size can be modified via Kconfig option
(NET_L2_IEEE802154_FRAGMENT_REASS_CACHE_SIZE).

Note: If you increase the size by 1 means, you should have N number
of data buffers available at max.
e.g. One full IP packet (1280 MTU) needs 15~16 data fragments means,
multiply size by same number of fragments. It requires more memory.

Offset based reassembly yet to be done (fragments can come in any order
[e.g. mesh]). Now assuming that fragments are in right order.

Change-Id: I17baee30a1087eb9ec6dc25f03ed64bbe0df2917
Signed-off-by: Ravi kumar Veeramally <ravikumar.veeramally@linux.intel.com>
2016-12-02 12:40:21 +02:00
Ravi kumar Veeramally dc36bdb89d net: Integrate 6lo and 802.15.4 fragmentation
Change-Id: I348656e0049d79f4dfdaba7909ad0b770f3ee922
Signed-off-by: Ravi kumar Veeramally <ravikumar.veeramally@linux.intel.com>
2016-12-02 12:40:21 +02:00
Ravi kumar Veeramally 3f69b42c9f net: Add support for IEEE 802.15.4 fragmentation
If IPv6 packet exceeds IEEE 8021.15.4 payload, it should be
fragmented as per RFC 4944 and RFC 6282.

Change-Id: Ic02c3089a510a8f6ffe3c3cd4537284a06ac1453
Signed-off-by: Ravi kumar Veeramally <ravikumar.veeramally@linux.intel.com>
2016-12-02 12:40:20 +02:00
Ravi kumar Veeramally 3f15c2c476 net: Fix wrong UDP length calc in 6lo compression
Change-Id: Ida07d86d643948871fca1bc6e66a9f5092c2dc7a
Signed-off-by: Ravi kumar Veeramally <ravikumar.veeramally@linux.intel.com>
2016-12-02 12:40:20 +02:00
Ravi kumar Veeramally 1725ac66d7 net: Add 6lowpan without compression header support
Add support for IPv6 header dispatch (without IPv6 compression
and uncompression). Only IPv6 dispatch header will be added at the
beginning of the buffer.

Change-Id: I7400a4dd115ac3b4b3d9deecd3cdb9ea292573fb
Signed-off-by: Ravi kumar Veeramally <ravikumar.veeramally@linux.intel.com>
2016-12-02 12:40:20 +02:00
Ravi kumar Veeramally 9217b68f3c net: Change 6lo API returned parameter
6lowpan compression and uncompression done on original
input buffer. So no need to return paramter as net_buf *.
If the compression or uncompression fails, unref the buffer
as it cannot be used further.

Change-Id: I64f496e22b2008a91a358fff65de1b87659cd9eb
Signed-off-by: Ravi kumar Veeramally <ravikumar.veeramally@linux.intel.com>
2016-12-02 12:40:20 +02:00
Ravi kumar Veeramally 9ea261ed4e net: Fix typo and alignment in 6lo
Fix typo DISPATH -> DISPATCH and #define alignment.

Change-Id: I39864362ca0ed740ce1ab7e17cb6e789bc415e23
Signed-off-by: Ravi kumar Veeramally <ravikumar.veeramally@linux.intel.com>
2016-12-02 12:40:20 +02:00
Jukka Rissanen 58116f8b94 net: Do not access IPv6 neighbor cache directly
The neighbor index only works when indexed over neighbor pool
as that takes into account the additional data that is embedded
after the net_nbr struct.

Change-Id: I3a5b971beccb24735e75dd87bfefc75bebba30dc
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:40:20 +02:00
Jukka Rissanen 06c8d99cc1 net: Neighbor cache table was incorrectly accessed
The code tried to access the neighbor via index but this does
not work as there is embedded data after the net_nbr struct.

Change-Id: I3efe325266ac244d82f2c713ed5530eeb0e6a363
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:40:20 +02:00
Jukka Rissanen 181adfdadb net: Add support for IPv6 prefix lifetime
If the received IPv6 router advertisement contains prefix
address options, set the validity of the prefix and expire
them when needed.

Change-Id: I7026d2101bd9eca1f90688c14d5c6aaa66e4af5e
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:40:20 +02:00
Jukka Rissanen b94fc5c707 net: Use target address in IPv6 NS to lookup neighbor
We need to use target address when checking whether
the IPv6 neighbor cache as the destination address is
typically a multicast address and it will never be in
the neighbor cache.

Change-Id: I13ba90e164393a7ab92bcb388a9d1d83f849fd4b
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:40:20 +02:00
Jukka Rissanen 282d020222 net: Send available pending data after receiving IPv6 NA
If there is no pending data when IPv6 neighbor advertisement
is received, then do not try to use NULL pointer and send
bogus data.

Change-Id: I3225e0ffbfdfcd6f2cb3789af0b3a7158ffca24d
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:40:20 +02:00
Jukka Rissanen 9329f4a92a net: Add IPv6 ND reachability support
IPv6 neighbor discovery reachability timer support
was missing.

Change-Id: I54e934b65abe2e99b11762ad29f43b69a8a97754
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:40:20 +02:00
Jukka Rissanen 7bc11597aa net: Add neighbor free function to IPv6 cache
Add utility function that cleanups the neighbor cache.

Change-Id: I77363566469c4f9d0410c08b5a3009bbe8d1b96e
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:40:20 +02:00
Jukka Rissanen 0604534072 net: Add network iface to neighbor creation call
As we know the network interface, use it when creating
initial entry in neighbor cache.

Change-Id: Ife022ffbdf0e8fb84253091b4072aebcee026e34
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:40:19 +02:00
Jukka Rissanen 25f4fbd80d net: Add more debugging prints in IPv6 ND handling
Change-Id: I1cbcfeaad55a159c14b128bda313bc60ba185660
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:40:19 +02:00
Jukka Rissanen 224defa4e6 net: Add debug helper for neigh tables
Change-Id: I7991d73023688bf855479f95282583885f60ba14
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:40:19 +02:00
Jukka Rissanen 5d7e085a3d net: Set initial neighbor value when IPv6 NS is received
We allocate a neighbor entry when neighbor solicitation is received
from peer.

Change-Id: I837262af1ccfba42d52075f32cb15f402b483f55
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:40:19 +02:00
Jukka Rissanen b8ec80fe33 net: IPv6 ND fixes
Do not try to send invalid packet that does not have
link layer address set.

Change-Id: I48292fbd57841d069e00c57028b4be53eba4e732
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:40:19 +02:00
Jukka Rissanen f9303446c2 net: Timeout a pending NS
Install a timer that will drop pending packet if we have not
received NA in timely manner.

Change-Id: I32b133314603a9a1b52d304eb8631f5b174e26f5
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:40:19 +02:00
Jukka Rissanen 9c5149fc5f net: Utility helper to access IPv6 ND cache data
Instead of macros use inline functions to access the data so
we can catch wrong pointer type kind of errors.

Change-Id: I281a4c902cd98e71b77d2f555b2edbe56ecceea3
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:40:19 +02:00
Jukka Rissanen 27d9936bd3 net: Print buffer usage after receiving or sending data
Change-Id: Iae56937f8609b46778bc433ec88c193fe91e6cf4
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:40:19 +02:00
Jukka Rissanen 7ae3d667d5 net: Fix compilation warning
The nbuf.h was not included by net_private.h

Change-Id: I51daf4fecded6347ffcc9cf2be44a6d94319220c
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:40:19 +02:00
Jukka Rissanen d3b1fa31c8 net: Ethernet mac address length was incorrectly set
When an ethernet frame is received, we pre-set the ll address
length. In this case the length of the ethernet mac address was
set too long.

Change-Id: I10d8c60da644558af33644309db51e294d7233d7
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:40:19 +02:00
Jukka Rissanen 1bb53d3ae7 net: Discard ethernet frame if it is not for us
No need to receive ethernet frames that are not meant for us.

Change-Id: Ib49fc12d11b365a99a26c65106d765e125375302
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:40:19 +02:00
Jukka Rissanen a4f56b6fa8 net: Fix compilation if IPv4 is disabled
Change-Id: I4ef4ce1c418361ce01ceb77204c830258a163683
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:40:19 +02:00
Tomasz Bursztyka 4c0d9bcf9a drivers: cc2520: Add a new IP stack ready adaptation of CC2520 driver
It's basically a copy/paste of original driver,
using native IP stack API.

This is meant to avoid cluttering the original driver
code with #ifdef, and in future it will help removing
the old driver as well.

Change-Id: I67d974ad7440d258583a5c7c6c7160e99210808c
Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
2016-12-02 12:40:18 +02:00
Tomasz Bursztyka d82d96a93d net: ieee802154: Support ACK replies
If a data packet is received with AR flag set, it will reply
accordingly. This is meaningful when running the stack above hardware
that cannot reply automatically to ACK request.

Change-Id: I7e5be94c4a5b1c889adb67ceb6f44dadd36db3ce
Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
2016-12-02 12:40:18 +02:00
Tomasz Bursztyka 79aea80ebf net: Add support for the IEEE 802.15.4 ORFD
Overly Reduced Functionality Device, which is meant only for
testing as well as to mimic legacy stack's behavior. This is
not spec compliant!

Change-Id: I2f98092c85d538b9fbfcef0e812461a80b0d67d3
Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
2016-12-02 12:40:18 +02:00
Tomasz Bursztyka 0624199e1f net: Adding ALOHA radio protocol to IEEE 802.15.4 L2 driver
This is the simplest - if not the dumbest - radio protocol we can use
for IEEE 802.15.4 stack. It just transmsits right away (with optional
retry) without taking care of doing any CCA (Clear Channel Assesment).

See IEEE 802.15.4 specification document, part 4.5.4.2

Change-Id: I341ad197aa221bc8f9ec67d0fd523da294a0351b
Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
2016-12-02 12:40:18 +02:00
Tomasz Bursztyka df9b6f76af net: Add preliminary IEEE 802.15.4 L2 driver
It currently supports the basics for the Data MAC service. A radio
protocol is still necessary to send packets.

Change-Id: I78f974ad7440d258583a5c7c6c7160e904eb54f4
Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
2016-12-02 12:40:18 +02:00
Tomasz Bursztyka 981da5cb4a net: Fix TX fiber on net_if
API pointer was set twice.

Change-Id: I51d8b72ea3ec5f343589f550dd011d90dc245a9c
Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
2016-12-02 12:40:18 +02:00