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>
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>
UDP length was wrongly set and test count was hardcoded.
Change-Id: Iade959e1b8c3580b43aa2a9ff1fc10eb5a462f2f
Signed-off-by: Ravi kumar Veeramally <ravikumar.veeramally@linux.intel.com>
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>
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>
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>
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>
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>
IPv6 neighbor discovery reachability timer support
was missing.
Change-Id: I54e934b65abe2e99b11762ad29f43b69a8a97754
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
Add utility function that cleanups the neighbor cache.
Change-Id: I77363566469c4f9d0410c08b5a3009bbe8d1b96e
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
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>
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>
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>
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>
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>
The nbuf.h was not included by net_private.h
Change-Id: I51daf4fecded6347ffcc9cf2be44a6d94319220c
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
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>
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>
The net_linkaddr_cmp() will compare two link layer addresses
and return true if they are the same.
Change-Id: I13f5ee9e7976a4118e891aefdb6e7c08f098c0b6
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
Meant to setup a real 802.15.4 device, changing channel, pan id, etc...
Change-Id: I221ad197aa221bc8f9ec67d0fd523da2023f7979
Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
Making sure we build cc2520 driver when native IP stack is used.
Change-Id: I25f3cb38a2da0c7a54ac4befcea217dc70b31028
Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
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>
Another driver will be made for native IP stack. This is meant
to avoid cluttering the code with #ifdef all over the place.
Instead driver will be transparently selected at built time.
Change-Id: I283f1194fece9357425b87794b5cb51938ca80d3
Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
- Parsing a proper ACK reply
- Generating a ACK reply from a data packet requesting it, and comparing
it to a proper one.
Change-Id: I1717fedc899eafa0aa849e1e253f02cd3dc3d4fc
Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
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>
First test is a unit test for frame parsing
Change-Id: I080d64a71fe4b6ff00e071a0cdee97ab9cd922d5
Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
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>
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>
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>
This new radio API will be provided by 802.15.4 device drivers in order
to fit in the new IEEE 802.15.4 stack within native IP stack.
Change-Id: Ib28e8dd3f25e5c802284568b88c2ea6d5cf58f89
Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
Allocate the right amount of space for L2's context.
Change-Id: Ia2f4f4162334e9e9c26dc95230abdfde5986e052
Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
One might need to find out the proper interface from a given struct
device pointer.
Change-Id: Id480d0a2bdf57f0b2d38379727ea1491dedf213e
Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
To track down the initialization of each interface.
Change-Id: Ia52aba0979689ab6ce24433853d1d87ecb693b3d
Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
The dst_ip6 is a parameter, required for future 802.15.4 L2 layer.
At some point such parameter could be changed to a void pointer,
and a utility function would populate it depending on L2 layer,
if such parameter needs someday to be variable and complex (some
specific struct or else).
Also make sure we use ARG_UNUSED() relevantly, and using proper prefix
to functions.
Change-Id: I43297bb4fb48a8f1bb5075c216342db16261cbb8
Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
The options length check was using fragment length to
verify the correctness of options. This is incorrect
as we need to check against the remaining length of the
packet after we have removed IPv6 and ICMPv6 header lengths.
Change-Id: Ied1b19e3f4b1a88409e81a1974ba5a4bdf022e72
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
This is related to changes in commit 7dcbbc39e7
("build: move from srctree to ZEPHYR_BASE for app include paths")
Change-Id: Ie902ed66bb74188ed54aae44e2f4289f954ec351
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
This is necessary when an external component tries to relate an address
to an actual neighbour.
Change-Id: Ic1b40032300e9fa06e029017098c16b6260c3a41
Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
Source link-layer address option might not be present, if the IP source
address is unspecified.
Change-Id: I1c9e89cce39588c6c8735e59cf894f6d278d52bb
Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
CONFIG_NET_IPV6_ND enables ND packet processing, and we are thus
interested about the packet recv/sent/drop statistics.
Change-Id: Id281c924193bd2b1d71088bf40d47b1601daad5c
Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
Current stack consumption as reported by analyzer
RX fiber stack real size 1200 unused 84 usage 1072/1156 (92 %)
so increase the stack to 1200 bytes.
Change-Id: Ibf2b27a6fb25cfb6be6d95e77c2e882526128a0a
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
If the packet is not sent yet, then return NET_CONTINUE so that
the caller can avoid processing the packet yet. The packet might
not be sent yet if for example IPv6 ND is being done.
Change-Id: I242ffcafb3e68f63d9dca06367e075a143a7bbe6
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>