Commit Graph

303 Commits

Author SHA1 Message Date
Ravi kumar Veeramally
944b580266 net: Remove net_buf forward declaration in sisclowmac
Change-Id: I5f202c7241b885e85a428b625a7170a5300b7237
Signed-off-by: Ravi kumar Veeramally <ravikumar.veeramally@linux.intel.com>
2016-02-05 20:14:35 -05:00
Ravi kumar Veeramally
fda66bfa34 net: Enable 802.15.4 related macros
UIP_CONF_LL_802154: 802.15.4 support in uIP, default compression
is none(SICSLOWPAN_COMPRESSION_IPV6: just add IPV6 dispatch infront
of header, enable HC06 or HC1 depends upon requirement).

Change-Id: I5c298652783a560d227b77c293c3d13844647f56
Signed-off-by: Ravi kumar Veeramally <ravikumar.veeramally@linux.intel.com>
2016-02-05 20:14:34 -05:00
Jukka Rissanen
cc3afa6346 net: Add net_mbuf validation
Add infrastructure and checks to validate the net_mbuf during
its lifecycle.

Change-Id: Id4b638fff991325d2247b1f24152552038888915
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:34 -05:00
Jukka Rissanen
4f4700e32c net: Use correct IPv6 address when registering UDP socket
The code used wrong IPv6 address pointer for UDP registration.
This caused the packet sending to fail because the generated
IPv6 address was bogus and not routable.

Change-Id: I933d6920c6455b271e775f5cbe15afdaa948abae
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:34 -05:00
Jukka Rissanen
17b269682e net: The local address was allocated from stack
We cannot use stack variable for local address as the address
needs to point to static memory. So change the type of the laddr
to be static. This is not a problem here as there is only one
local address defined anyway in the system.

Change-Id: Ie8763f761eea08997f0984394984050be946ae18
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:34 -05:00
Jukka Rissanen
d644eb8175 net: Add missing curly braces
Follow the style guide here.

Change-Id: Icd4053434f509aee4787bf2d5aae42cefb830a36
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:34 -05:00
Jukka Rissanen
fdadfc95a7 net: uip: Reset the rxbuf if we run out of buffers
We need to reset the slip receive buffer pointers if we cannot
process the incoming message. If this is not done the rxbuf
will overflow and overwrite core kernel data.

Change-Id: If6a96177a3de57148268e48940fbc33d2e08b36a
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:34 -05:00
Jukka Rissanen
5ac5211093 net: uip: Free net_buf if it cannot be pushed to slip rx queue
This is a sanity check.

Change-Id: I1e747887b3f77203c6a2945810c8203243c41fe3
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:34 -05:00
Jukka Rissanen
90ca5ff779 net: Validate that net_buf allocation is correct
Add macros that check that we are not trying to use already
freed net_buf and vice versa.

Change-Id: Ifdb6a7e24cd6d7a0de46fa7b991c358ea8828d6f
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:34 -05:00
Jukka Rissanen
a64f6995bb net: tools: Simple echo client that sends data to echo server
This client sends pre-defined UDP data to server, reads back
the reply and verifies that the data is the same.
This test application is only usable when running in Linux
host and it is not meant to be run inside Zephyr.

Change-Id: I6df83f3a5b1ab92c724b4d3c245738eb5c56a91f
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:34 -05:00
Jukka Rissanen
3e4d890d72 net: slip: Add slip driver for testing purposes
This slip driver is needed for sending packets outside of qemu.

Change-Id: Ifc37181094ddebce08d97ae889f3a58c03d01ae1
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:34 -05:00
Jukka Rissanen
6421d6eba8 net: The UDP remote address was incorrectly set
We need to use correct IPv6 address when registering UDP
socket.

Change-Id: I38f55bc16f72a71cb8cd58d20b3288be2f4cd475
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:34 -05:00
Jukka Rissanen
54ab6fad20 net: Add net_reply() function
The net_reply() can be used if the application wants to reply
something to peer right after receiving the data. The function
will reverse the source and destination addresses and ports,
and set the uIP internal structures in such a way that the
reply is possible. Using this function saves the application
from allocating a separate net_buf for just sending simple
message back.

Change-Id: Ia960c83b77a8f300222159ee085fed99e2b007c2
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:34 -05:00
Jukka Rissanen
cefc8ea55c net: tools: Removing tunslip6 binary
This binary file should not be here so removing it.

Change-Id: I00d4b2de353f1b7ed75e9480252ea5f3f4b0c3a4
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:34 -05:00
Jukka Rissanen
98cd803dd9 net: uip: Disable duplicate IPv6 address detection
This will disable DAD for now in order to simplify the
IPv6 address assignment. This needs to be re-enabled
at some point.

Change-Id: I9d0ba58ef27df5fb8202863ccf6e33c5e29b6e14
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:34 -05:00
Jukka Rissanen
10c0a16776 net: uip: Comment out neighbor discovery support when needed
If UIP_ND6_SEND_NA is not defined, then input_na() and input_ns()
functions are not needed and should be commented out.

Change-Id: I6849c7a7dba1a4cf60b8b26806df871b5f7801bf
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:33 -05:00
Jukka Rissanen
d1f320c3ca net: uip: Allow UDP packet sender to know the sending status
Return the send status (sent ok or sending failed) to the caller.
Needed so that the caller can figure out whether it needs to
release the net_buf or not.

Change-Id: I7a0617cbb625d6ffcaf503dffc55d474b8f337a7
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:33 -05:00
Jukka Rissanen
4a21035141 net: uip: Traverse only through valid UDP connections
The uip6.c:uip_process() was not checking the upper bound of
the UDP connection list when traversing the connection list.
Now the code checks the upper bound of the array (UIP_UDP_CONNS)
and will not go beyond the max number of items in the array.

Change-Id: I417ffd2bbb54922ae071f2f382f7e9470516ce55
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:33 -05:00
Jukka Rissanen
682eee9306 net: uip: Set the proper link address length
We need to be able to configure link address length (6 or 8 bytes)
depending on what kind of transport we are using.

Change-Id: I9677e40a76f22e4656bcae7c9a667c0e76b0d996
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:33 -05:00
Jukka Rissanen
62852f0ea7 net: Allow 6 byte link addresses
Need to define link address length for ethernet MAC addresses.
This is needed when connecting to host from qemu using slip
and when bluetooth connectivity will be used (in the future).

Change-Id: I3881e970cec52017fd4120a48ff7a99cc5559a0a
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:33 -05:00
Anas Nashif
ea0d0b220c doxygen: change comment style to match javadoc
The change replaces multiple asterisks to ** at
the beginning of comments and adds a space before
the asterisks at the beginning of lines.

Change-Id: I7656bde3bf4d9a31e38941e43b580520432dabc1
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2016-02-05 20:14:32 -05:00
Jukka Rissanen
4eb70872fc net: Fix the loopback driver function parameters
Wrong number of parameters in net_driver.send registration.

Change-Id: I39eda44f0dbc9a5a1d980da3a625ef36946aef19
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:31 -05:00
Ravi kumar Veeramally
89c83d0162 net: 6lowpan: Adapt compression functions to net_mbuf buffers
6lowpan HC06 and HC01 compression/uncompression functions are
adapted to net_mbuf buffers. HC06 compression and uncompression
works properly. HC01 adapted to net_mbuf but functionality is
failing due to inproper IPv6 link local addresses. buf pointers
from net_mbuf and couple of net_mbuf calls are removed (which
are not used at the moment and saves memory from net_mbuf).

Change-Id: I2711b71b1b8df2eaac67d69275baf4b62b03f9f6
Signed-off-by: Ravi kumar Veeramally <ravikumar.veeramally@linux.intel.com>
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:30 -05:00
Jukka Rissanen
540980e243 net: ip: Makefile re-structuring
Set the compiled files unambiguously so that we are always able
to see what object files are compiled from networking sub-system.

Change-Id: Ia763778e954195502281d63438b7e756adadd8a5
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:30 -05:00
Jukka Rissanen
e0509c5e6f net: rpl: Fix compile errors
This fixes RPL compile errors if CONFIG_NETWORKING_WITH_RPL is
enabled. The end result is not tested atm so RPL might not yet
work as expected.

Change-Id: I458c20f8f8c7c750cc17f24acf425f244399699d
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:30 -05:00
Jukka Rissanen
19fe2ff93d net: uip: Avoid unused label compile warning
The process: label is only used if we are a router so add
ifdef guard.

Change-Id: Ib88d4e4d70b049541480a6e9dd9d68911543ff50
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:30 -05:00
Jukka Rissanen
6869b1ace6 net: Make 6lowpan config depend on 802.15.4 config
As we do not have Bluetooth IPSP support yet, then assume
that user needs 802.15.4 if 6lowpan needs to be activated
in Kconfig. This needs tweaking later.

Change-Id: I02ab6ebea51fdcacf8d23960e4ca70e777c0da88
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:30 -05:00
Jukka Rissanen
1af5132250 net: Do not compile slip if UART support is missing
Saves some memory if unnecessary slip functions are not
compiled into kernel.

Change-Id: If2316909b36b12cb4d163a5ca966e2e54f4e1159
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:30 -05:00
Jukka Rissanen
015b52f55c net: 15.4: Make it possible to disable 802.15.4 networking
It is now possible to fully remove 802.15.4 radio support
from generated kernel.

Change-Id: Ib7cf8f4bb400ae7e298bdc62e3b50b787a2ef06d
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:30 -05:00
Jukka Rissanen
cae2483f18 net: 15.4: Tweak the stack size of Rx and Tx fibers
One kb for Rx is enough, Tx needs bigger stack (4 kb) as it
needs to fragment bigger messages and needs more buffers.

Change-Id: Ib0a77dbd627bb3bd2806fa13a24a5869c64b31b2
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:30 -05:00
Jukka Rissanen
0e8524ca2e net: Tweak the stack size of Rx and Tx fibers
One kb seems to be enough for the stack.

Change-Id: Ib1e3a7e97bf7d69ddd4b3028fe7dd6413a0098d4
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:30 -05:00
Jukka Rissanen
904c5a0cf0 net: Tweak the number of network buffers to use
Use correct number of network buffers when sending and receiving
maximum size IPv6 frames (1280 bytes).

Change-Id: Iec4978fc97fb16f279a409f4f04d8a679d7cadc7
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:30 -05:00
Jukka Rissanen
46b534009d net: conf: Set the max number of internal buffers
The queuebuf count defines how many fragments we are able to
receive. Value 13 means that we can receive full IPv6 data
(1280 bytes), we need also some extra buffers for temp use.

Change-Id: Ie16d37ae61e15ded4355b5f54136722fc6317022
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:30 -05:00
Jukka Rissanen
442554615f net: 15.4: Add code to analyze stack usage
To make it easy to periodically verify that we have sane stack sizes
it's helpful to have some code to evaluate how much of the stacks are
used. There's already a CONFIG_INIT_STACKS option which pre-fills the
stacks with 0xaa bytes, so we make use of it and in case the option is
enabled run the extra code to evaluate how much of each stack was
used. The trigger for the evaluation is a disconnection event.

Copied from Bluetooth sub-system.

Change-Id: I5539156d98abd361254088f775765f7a72890ed5
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:30 -05:00
Jukka Rissanen
e4505927a3 net: 15.4: Rename rx and tx fibers
Easier to debug the beast if the IP fibers are not called
the same as 15.4 fibers.

Change-Id: Iaa15b5e359c7dc2fd9af298445d6abe59a26ddd0
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:30 -05:00
Jukka Rissanen
29d0e5b74a net: 6lowpan: Free net_buf if receiving wrong fragments
If we receive wrong fragments, then we start all over. In this
case we also need to release the net_buf that is used to collect
the earlier fragments.

Change-Id: I121d6a4031a375a0208441e110ebede58320c153
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:30 -05:00
Jukka Rissanen
95fb81a3ae net: 6lowpan: Clear net_buf pointer after sending or dropping it
The net_buf is used to collect the received data. We clear the
buf pointer after all the data has been received or if we dropped
the packet. This way we know if the buf pointer was used or not.

Change-Id: I5d41b61fbc468262e8097719ddbc85ca90a73b98
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:30 -05:00
Jukka Rissanen
63512ac2f3 net: udp: Do not mark the packet to be dropped if received ok
If the udp packet was successfully delivered to the application,
and if the application did not want to send anything back to
sender, then then uip_slen(buf) will be 0.
In this case we MUST NOT set uip_len(buf) to 0 as that would
cause the net_buf to be released by RX fiber. In this case it is
application responsibility to release the buffer.

Change-Id: I43cf9b147a45294288dc3c631908b034e1a4ab6a
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:30 -05:00
Jukka Rissanen
3be36754db net: UDP socket registration must only done once
We must make sure that the UDP socket can be registered only once.

Change-Id: I90e0dac2b1b234fd7f899a0e41442c13f0c8bdd7
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:30 -05:00
Ravi kumar Veeramally
56ccfb3785 net: 15.4: Add 802.15.4 driver and 802.15.4 loopback radio driver
Enable 802.15.4 driver that receives the IPv6 packet, does header
compression on it and writes it to the 15.4 stack Tx FIFO.
The 15.4 Tx fiber will pick up the header compressed IPv6
6LoWPAN packet and fragment it into suitable chunks ready
to be sent to the 15.4 hw driver. The 15.4 stack Rx fiber picks
15.4 frames from 15.4 Rx FIFO (which are fed by 15.4 driver)
and reassembles the all fragmented packets and uncompress the
header and writes to the IP Rx FIFO.

The 15.4 loopback radio driver receives the 15.4 frames and
put it back to 15.4 Rx Fifo.

Change-Id: I68d1c7ff6de0e8770616e574206c2091c69a28e6
Signed-off-by: Ravi kumar Veeramally <ravikumar.veeramally@linux.intel.com>
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:30 -05:00
Patrik Flykt
231572a1c6 net: Set loopback address in the loopback driver
Set the loopback IPv6 address and an all-zero MAC address as the
loopback device really does not have a defined MAC address.

Clean up the code so that the loopback driver's IPv6 addresses are
not reused in other parts by mistake.

Change-Id: I07cc8bc5ad3a2ec5997bb313dd0ecaca4d9742f7
Signed-off-by: Patrik Flykt <patrik.flykt@linux.intel.com>
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:30 -05:00
Jukka Rissanen
e4a6a07f40 net: rpl: Enable RPL Kconfig option
RPL (ripple) is IPv6 routing protocol for low power and lossy
networks. See RFC 6550 for details.

Change-Id: I60ca9e66be46741ebcc173ca3b581afd6876e9dc
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:30 -05:00
Jukka Rissanen
0b54f984b8 net: apps: Simple listener application that just receives packets
Change-Id: I91457d364742928743be9040c0db64a1f052c093
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:30 -05:00
Jukka Rissanen
43593bcbf4 net: Use simple UART driver for handling slip (serial line IP) traffic
This commit uses the simple UART driver to pass slip data between
qemu and host.

User needs to create a network device (tun) in host that is
connected to qemu via slip protocol. The tunslip6 process
acts as a gateway and passes packets between qemu and host.
See net/ip/contiki/tools/README file for details how to use and
configure the slip in host.

This is meant for testing the uIP stack.

Change-Id: I82bb87a76485a07ddf5de9ae91fe3d49a0e20658
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:30 -05:00
Patrik Flykt
6d54615e7c net: Look up the local address if none is given
Look up the local IPv6 address if none is given by the application.
If no address is present, return a NULL context.

Change-Id: I7d4ef306944f65bc40799865dc6520b977636f6b
Signed-off-by: Patrik Flykt <patrik.flykt@linux.intel.com>
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:30 -05:00
Jukka Rissanen
b2685703b9 net: context: Add our local address to address list
Add the user specified local address to the list of addresses
that the uIP stack knows.

Change-Id: I53dede27fa1717119a8bad6d7eee574ad3e924f1
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:30 -05:00
Jukka Rissanen
e71e01a588 net: uip: Debug print the added IPv6 address
Change-Id: Ib20723c1d85558cedb54f67b9159253b9e6d7911
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:30 -05:00
Jukka Rissanen
ad409a8964 net: init: Allow the network stack to be initialized only once
Change-Id: I06745962523b3774e0f5b830ec65a996d38ec9e6
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:29 -05:00
Jukka Rissanen
6fe17bb7a5 net: Check error when pushing packet into stack
Make tcpip_input() to return 0 if there is an error when
processing the packet. Value != 0 indicates a successfull
packet processing and in this case the application will
free the packet.

Change-Id: I4aaeb5f0039cfbe25f7238a144964e31a8204148
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:29 -05:00
Patrik Flykt
fa87944a08 net: Check that net context is unset based on IP protocol
Rather than checking whether the remote port is zero, use the IP protocol
field. The remote port might be zero if all incoming connections will be
accepted.

Change-Id: Ia1f24ae94fab27c561267c7bbc0f709fe98ee7e8
Signed-off-by: Patrik Flykt <patrik.flykt@linux.intel.com>
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:29 -05:00
Patrik Flykt
b993277436 net: Assign local UDP port number
Assign local UDP port number if not explicitely set by the caller. Use
the timer as a source of uniqueness as there is no random function
available.

If the local UDP port number has been set, verify that it is available
and not already assigned.

Change-Id: I18baac0cbec300cc2a5b7a62dff830d9fafcf2c9
Signed-off-by: Patrik Flykt <patrik.flykt@linux.intel.com>
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:29 -05:00
Patrik Flykt
586f3adf6e net: Handle IPv6 packet reception
When read from the Rx FIFO, pass the network buffer to the uIP IPv6
stack using the tcpip_input() function. As the event is handled, not
all cases where the buffer is to be discarded can be detected.
Thus, if ICMPv6 errors will not be sent, indicate that the packet is
to be dropped by setting its length to zero.

Change-Id: I49f69011685e39759ba25ebb07670308382a5ca8
Signed-off-by: Patrik Flykt <patrik.flykt@linux.intel.com>
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:29 -05:00
Jukka Rissanen
eec46f1a88 net: Add code to analyze stack usage
To make it easy to periodically verify that we have sane stack sizes
it's helpful to have some code to evaluate how much of the stacks are
used. There's already a CONFIG_INIT_STACKS option which pre-fills the
stacks with 0xaa bytes, so we make use of it and in case the option is
enabled run the extra code to evaluate how much of each stack was
used. The trigger for the evaluation is a disconnection event.

Copied from Bluetooth sub-system.

Change-Id: Ic04ff83f682dc9b57afb69e164b972ffd9b860ea
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:29 -05:00
Jukka Rissanen
3ce38be09d net: Declare fiber stacks as __noinit
No need to waste CPU cycles initializing the stack variables.

Change-Id: I0c517125ef37f7d0de4fd0040c4b4700536cd7c7
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:29 -05:00
Ravi kumar Veeramally
9431109cde net: Add separated compression and fragmentation files.
Change-Id: If639164d32dbebb0e23075b433739c56bf70163c
Signed-off-by: Ravi kumar Veeramally <ravikumar.veeramally@linux.intel.com>
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:29 -05:00
Ravi kumar Veeramally
575c89eacb net: Update 802.15.4 stack with net_mbuf and split sicslowpan
Move packetbuf from net_buf to net_mbuf, update 802.15.4 stack
with net_mbuf (which is smaller in size, and mostly wrapper for
packetbuf) and split sicslowpan(ipv6/sicslowpan.c|h) functionality
to compression and fragmentataion. This patch contains
null_compression and null_fragmentation which is exactly what
uip_driver.c|h does.

Change-Id: Ifee359e20aa57a50fb00c9ce049d9476b2ac67e3
Signed-off-by: Ravi kumar Veeramally <ravikumar.veeramally@linux.intel.com>
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:29 -05:00
Patrik Flykt
e26167cd4a net: Add loopback driver
Change-Id: If8ee848ed8519719b4ec3ad2e74167e0558709ef
Signed-off-by: Patrik Flykt <patrik.flykt@linux.intel.com>
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:29 -05:00
Patrik Flykt
78f518db52 net: Use network driver when sending IP packets
Set the uIP output function in order to call the send function in the
registered driver. Do driver initialization and checking cleanups.

Change-Id: I18c9b551320d15fa2619a077d1224f5e521c53ed
Signed-off-by: Patrik Flykt <patrik.flykt@linux.intel.com>
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:29 -05:00
Patrik Flykt
29a61aff9c net: Add function to receive an IP packet from the driver
After an IP packet has been (reassembled and) received, the driver
submits the IP packet to the IP stack.

Change-Id: Icbd1e7740ce59db16bc1d61002420e86ab101d2d
Signed-off-by: Patrik Flykt <patrik.flykt@linux.intel.com>
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:29 -05:00
Jukka Rissanen
5d3685f85f net: Add separate buffers for MAC layer
We do not need large 1280 bytes long buffers in lower IP stack
layers. After long packet has been fragmented to smaller chunks
it depends on the radio technology how long buffers we need
to use. For 802.15.4 we can use 128 bytes long buffers.

Change-Id: I8cd6085944d78fa26a4aa1a93c58fc436856541b
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:29 -05:00
Jukka Rissanen
6e33b6b7af net: csma: Init the queuebuf before use
Change-Id: I1463ccd43e2ba0e683a9fefc4e4afce81037d451
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:29 -05:00
Jukka Rissanen
05c97c195e net: uip: Return correct packet discard status to caller
Fixed the compiler warning about not returning correct value to
caller. Now we return correct value if neighbor solicitation was
sent properly.

Change-Id: Ie28a2ee417bcdf3eb9b24ab91a49c688992e7420
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:29 -05:00
Jukka Rissanen
fad23cb025 net: Check the return value when sending packet
If the return value of the sender is 0, then packet is/was
discarded and we release the net_buf. If the value is 1, then
packet was sent properly and the driver has already freed
the net_buf.

Change-Id: Icd93602225e14f7210fe9ef33603a7451d834a80
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:29 -05:00
Jukka Rissanen
9ee16aa2df net: uip: Print link local address byte without length modifier
The system library does not know how to print length with %x
modifier.

Change-Id: I9a2b0ec138a8da4a001379fe818cd8694cc78bc8
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:29 -05:00
Jukka Rissanen
b4dcd72245 net: 6lowmac: Add more debug prints
Helps to monitor what is going on in the stack.

Change-Id: I1707ea07c09082e4f74b1d6c4fa78a9e646485d5
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:29 -05:00
Jukka Rissanen
fd9e55762d net: 6lowmac: Release net_buf if the packet is discarded
Important to release the net_buf if we discard the packet.
In the future it might be easier if input() would return
status and caller could discard the net_buf if needed.

Change-Id: I533a37ef7f2e80d99ad62301562228189a5e0308
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:29 -05:00
Jukka Rissanen
620fb7eb6c net: 6lowpan: Enabled 6lowpan support
Created a kconf variable that is used to enable/disable 6LoWPAN
support.

Change-Id: Iaccfe01696ec7226d9a114924c1162fa35959ff9
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:29 -05:00
Jukka Rissanen
df85375e56 net: Dummy implementation for watchdog_periodic()
This needs proper implementation later.

Change-Id: I4e7db17bd87be3f6490c3a8ca89c089d79aa3d59
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:29 -05:00
Jukka Rissanen
2f5b1d1570 net: Add a way to see who is trying to alloc/dealloc a net_buf
Change-Id: Ib7813bc5809f85f27aa4fe06583b64461741466a
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:29 -05:00
Jukka Rissanen
c73aeba521 net: Fixing the net_receive() function
Now we properly register UDP listener and specify callback to be
called when UDP packet is received.

Change-Id: Ia9fded780d53ba2fbfad6a34927dcbd92e42a9e8
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:29 -05:00
Jukka Rissanen
844a888e99 net: context: Add helper function for checking socket registration
We need to know if we have registered a socket listener, otherwise
we try to register UDP handler too many times.

Change-Id: I060150d01eb149f2a2a6a332d18e0142e5cb7a5e
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:29 -05:00
Jukka Rissanen
210d10b036 net: Release net_buf in a case of error in IPv6 packet processing
Change-Id: Ic29762737d3d71e97a45cbe9bfccfb0dd1c1bb2f
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:29 -05:00
Jukka Rissanen
49410ae20a net: Allow loopback address for packet
This is enabled so that the loopback network test
driver works.

Change-Id: Ib5e1af2c1b064b0ef71c31be919ea88ed62531ff
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:29 -05:00
Jukka Rissanen
3d3bb6892e net: More debugging added to uIP driver
Change-Id: I610c6eca7dcf0d803f7da8441dd15bf4e6eb3f99
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:28 -05:00
Jukka Rissanen
431300d8a6 net: init: Fix the sending part of the memory buffer
The buffer is released by the driver or some other lower stack
element.

Change-Id: I0ced57df4d95213bae2bbe591a41da6178f4c272
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:28 -05:00
Jukka Rissanen
6382e5328a net: packetbuf: Enhanced debugging when printing buf contents
Change-Id: Idf6898e949634d6c4137577875833cf8901fb493
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:28 -05:00
Jukka Rissanen
87dfd99e0b net: csma: Debug print used memory buffer
Change-Id: If4e508503b822b599040afaa664253f25f022fec
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:28 -05:00
Jukka Rissanen
800ac8e3af net: Print warning when the packet was discarded because of length
Inform user when packet is too long. Only printed if logging is
enabled in config.

Change-Id: I3feb052de8edc4b68b36c5190f3d7c8073d9a887
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:28 -05:00
Jukka Rissanen
a00371b4d6 net: Add debugging support to various network components
These are useful to have. The macros are copied from tcpip.c file.

Change-Id: If784fbe449aae6f065af8756c9be6d4ed68a6272
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:28 -05:00
Peter Mitsis
9f084d7d33 Typo: acknowledgement -> acknowledgment
Changing the spelling to comply with the checkpatch tool.

Change-Id: I7f28fd73bfbc89d91e4d7caccffa2c018dcadf6d
Signed-off-by: Peter Mitsis <peter.mitsis@windriver.com>
2016-02-05 20:14:28 -05:00
Jukka Rissanen
0344c11ad7 net: Add preliminary UDP support
Use the Contiki simple UDP API when sending and receiving the
application data.

Change-Id: I39a379f30c8f7febbea223fcf8f8702faf82e39e
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:24 -05:00
Jukka Rissanen
e024dba08f net: uip: Add support for user data in simple UDP API
Adding the user pointer to the uIP simple-udp API is vital so that
we can pass the net_buf to UDP receiver callback.

Change-Id: If7ee24f344fbd23eb7e0c3a99e78deb996d3667d
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:24 -05:00
Jukka Rissanen
7e0951982a net: Add helper function to context for getting recv queue
Needed only in net_init.c so did not put the prototype into .h file.

Change-Id: If84e835d32bcfafd8e403ffa4def51fa72e0aa3e
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:24 -05:00
Jukka Rissanen
e494de2449 net: Simple UDP process declaration was missing
Needed so that UDP process can be called from net init.

Change-Id: Iaa165d7773b7f5851d0088aa0d7480b23e1a9199
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:24 -05:00
Jukka Rissanen
7d7d4e4161 net: Enable logging in uIP stack
Allow the uIP stack to print information about its internal
status. By default the logging is disabled.

Change-Id: I55a03051d3f541b5f6ea950fdd6406814f937197
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:24 -05:00
Jukka Rissanen
cc4b282e46 net: Make sure to get the debug prints from uIP to console
Change-Id: Ic4d57f00f4752084ab5bd2ebc9f3f18c4747f1ab
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:24 -05:00
Jukka Rissanen
6b3c739d7d net: Add helper function to set the link local address
Network driver should call this when it knows the device MAC or
EUI-64 address.

Change-Id: Ie03a80fcdb9a10cd1cb15f12037b3802da13bca9
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:24 -05:00
Jukka Rissanen
0028a541f6 net: uip: Set the link local IPv6 address according to linkaddr
Create a separate utility function to set the IPv6 link local
address using the supplied MAC/EUI-64 address. This is needed
because the net_init() is normally called before the
MAC address is set.

Change-Id: I5d46bd8d802e95a99b4b340d1f37af893b798db8
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:24 -05:00
Jukka Rissanen
8dcb1494a9 net: Fix the environment variable in Makefile
TIMO_ENV changed to ZEPHYR_ENV as that one is now in use.

Change-Id: Ia7d7729a7210401ea2191710c708985c0282257a
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:24 -05:00
Jukka Rissanen
702a596594 net: Add kconf for networking
Change-Id: Id956b7debe4564613007d934636501c98ba1851d
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:20 -05:00
Jukka Rissanen
4c53ef0b93 net: Initialize the IP stack
Call relevant Contiki uIP functions to setup the internal
structures in the uIP stack.

Change-Id: If64df1543d66d0ff378c12f371aa2c06fb2fde0a
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:20 -05:00
Jukka Rissanen
6ba3a02eed net: uip: Avoid casting warning when accessing link local addr
The uip_ds6_nbr_get_ll() returns const addr but we need to
overwrite the addr so cast is needed here.

The const pointer returned by nbr-table.c:nbr_table_get_lladdr(),
which is called by uip_ds6_nbr_get_ll(), actually points to
neighbor cache which is dynamic and will never be stored in read
only memory, and thus is safe to cast to non-const.

Change-Id: Ifb47e4cb75054b0a9717304dc1d0bc497fee1e87
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:20 -05:00
Jukka Rissanen
251a45b602 net: Use our network buffers instead of global ones in Contiki
This mega patch changes how Contiki uses buffers. In standard
Contiki there is only couple of static and global buffers.
This makes the stack non-reentrant and only usable in one
thread. This patch replaces the global buffer with buffer
supplied by caller (net_buf.h). The Contiki stack is still not
fully re-entrant after this (packet reassembly needs more TLC)
but it is a good start.

Change-Id: I63abc230b36b14f33f687d3ef64cffb0f3a69f5d
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:20 -05:00
Jukka Rissanen
da36c6371c net: Simple socket API introduced
The network context defines a network connection.

Change-Id: I29a186be6c9de9d824f10b6442fa1dfd3711d24d
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:20 -05:00
Jukka Rissanen
1cf34680cb net: Using correct defines to configure the net stack
Change-Id: Ia2f5f8e496d11c73125aa3e74c0f9ad48141c712
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:20 -05:00
Jukka Rissanen
4f5723a5d0 net: Network initialization and tx/rx functionality
Functions to receive data from apps and transmit it to network, and
receive from network and pass data to apps.

Change-Id: I1b1b8c041e6c5e20294081d2cd403636e9909cdc
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:20 -05:00
Jukka Rissanen
3633410706 net: uip: Pack and alias network buffer related structs
We need to make sure that the structs that are cast to received
network buffer are packed. We also need to enable __may_alias__
attribute for these structs in order to avoid "dereferencing
type-punned pointer" warnings.

Change-Id: Iad65612fd176ed41d66c6fa05c50151001a406eb
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:20 -05:00
Jukka Rissanen
c6c89fbdc6 net: uip: Avoid compiler warning about unused variable
Variable called "initialized" is only needed if the nameserver
pool size is bigger than 1 (UIP_NAMESERVER_POOL_SIZE > 1).

Change-Id: I1bce30bd783f76e56f12b8e76b29c932ab5765af
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:20 -05:00
Jukka Rissanen
c5b936a7c8 net: uip: start_periodic_tcp_timer() not needed
The function start_periodic_tcp_timer(void) is only needed if one
has UIP_TCP or UIP_CONF_IP_FORWARD defined.

Change-Id: I5185bfbdb998ec3d6985681a85c26e094406c404
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:20 -05:00
Jukka Rissanen
bb69910e2a net: uip: Added missing function prototypes to rtimer
Real timer implementation needs function prototypes.
This is just to satisfy the compiler. Needs more TLC.

Change-Id: I39baa7cfe69d28aa1f330089e22144df286c0a0d
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:20 -05:00
Jukka Rissanen
ce302ebc8b net: uip: Callback is only defined for RIME support
We do not need RIME so commenting out the callback call.

Change-Id: I09cd078a3741c6a8e5f4f8fd6387203e6107f218
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:20 -05:00
Jukka Rissanen
1e8cbd99ee net: uip: psock.h is only needed for TCP connections
Comment out the psock.h include if TCP is not used.

Change-Id: I83e537b410b867a5ea30fb60c012521df351d05f
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:20 -05:00
Jukka Rissanen
75d4b3f0c2 net: Initial networking support
Base is from Contiki git tree at git://github.com/contiki-os/contiki.git
commit 6ac939bc58ea76aa37e9b86af55ad51cfc3434e9

This one does not do anything useful yet. It sets the baseline for
subsequent patches.

Change-Id: I7078c938dd59188beceaf47721afaa521d8bde1a
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:20 -05:00