timer_expired uses the nano_timer_test API to determine whether a
timer has expired. This API calls the private function
_nano_timer_expire_wait which returns the timer user data if this
timer has expired. Unfortunately _nano_timer_expire_wait clears the
user data pointer after returning it.
Therefore if timer_expired is called several times for the same timer
and if this timer has already expired then only the first call returns
the expected value (true). Other calls always return false.
In ipv6 this bug can be seen with the uip_ds6_periodic timer. Indeed
when expired this timer is going to be checked at least twice by
etimer_process function and the tcpip eventhandler function. Thus the
final uip_ds6_periodic callback is never called.
The fix consists in adding a expired field in the timer struct and
make timer_expired retain the nano_timer_test result when the timer
has expired.
Change-Id: I3c6aceaa0627be264b6d9913b629e7b619888938
Signed-off-by: Sebastien Griffoul <sebastien.griffoul@intel.com>
User can enable TCP server (listening socket) support in the
IP stack. This commit does not yet have TCP client (connecting
socket) support.
Change-Id: I75dd02a81addc1d1e026463b53631d56378157df
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
We need to check the timer expiration properly. The nano_timer_test()
will return user data to caller if the timer is expired.
The issue that is fixed by this commit started to appear after
the commit 9b2452047d which combined
nano_timers and nano_timeouts.
Change-Id: I9cf10e605f1c4767caa1aad9dcf29a159af55e28
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
The network timers will now use the fiber wakeup to let the
network timer fiber to get the next event. This enables the
timer fiber to sleep much longer and only wakeup when there
is something to do.
Change-Id: Ia69d92392c02b884c036793de41b38b6489c4d2e
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
Including zephyr.h instead of microkernel.h will also bring in
sysgen.h, which may not be available at the time these files are used
during the build.
Change-Id: I5e9e33a06a5877c6077bceebbab1bee6479fddc0
Signed-off-by: Iván Briano <ivan.briano@intel.com>
Integrating it into network stack. Centralizing all in drivers/802.15.4
Change-Id: Ia2916ff652afe5fe736f6560c2ed4a911a5f0679
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
Use existing macros from Zephyr and apply proper code style.
Change-Id: Ia3d572054aa702ce33ceae04eff931cfb900c45c
Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
Replaces calls to nano_cycle_get_32() and task_cycle_get_32()
with sys_cycle_get_32() as that is the preferred API to use.
Change-Id: I0ad1c50083c4cfdd9a26c2f20ba24e065410d90d
Signed-off-by: Peter Mitsis <peter.mitsis@windriver.com>
We need to export ctimer_process so that net_core.c can
call it and let it set the corresponding event timers.
Without this the timers would not be called properly.
Change-Id: I623b60420eacfe326f6b18d89f3e008cc56379fc
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
Add a function that allows the code to busy wait usec timeout.
Change-Id: I6c0bbe33a98d45c58667e1400e0ebcdc59d28bad
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
Fix the include paths in Contiki sources so that we do not
have to create links to include directories during compilation.
Change-Id: I9316f1e90474e0ee563557deadd0bdc321cbb0fa
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
Change all the Intel and Wind River code license from BSD-3 to Apache 2.
Change-Id: Id8be2c1c161a06ea8a0b9f38e17660e11dbb384b
Signed-off-by: Javier B Perez Hernandez <javier.b.perez.hernandez@linux.intel.com>
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
Signed-off-by: Allan Stephens <allan.stephens@windriver.com>
Signed-off-by: Benjamin Walsh <benjamin.walsh@windriver.com>
The etimer.c does not need to know about ctimer_process so
remove the extra variable.
Change-Id: I761a9d79c09876c5270e294dd008a8821705e9a2
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
When the timer is set, the caller needs to specify the function
that is called when timer expires.
Change-Id: Iae69986c6f32b789d708247b187d143e45d73828
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
Now we can wakeup properly if there are multiple Contiki etimers
in the system.
Change-Id: I356818f4b79427c9bf26afca31b1a0766760ca3d
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
The clock_delay() function sleeps now correctly either
in micro or nano kernel.
Change-Id: I1df71b64c5f0b46d963ee117252e41be3ddfb1df
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
Refactor etimer and timer Contiki APIs to use the native
Zephyr timers. The Contiki way did not work well anyway
as we do not really have the process concept in Zephyr.
Change-Id: I14743707f3cf43eddfe914717b069204cde4bd65
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
The clock_seconds() API returned wrong number of seconds since
initialization.
Change-Id: I4f0f6197327f4ebe12e2c37588d9611ec40d7643
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
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>
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>
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>
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>
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>