Commit graph

19237 commits

Author SHA1 Message Date
Juan Manuel Cruz
ddf447c500 net: arp: Fix issue with compiler optimization on Quark SE x86
On Quark SE x86 core, the usage of the inline funtion: net_nbuf_family
is optimized by the compiler in a way that the ARP verification
of the protocol family fails. This leads the native stack to never
respond to ARP requests.

This commit fixes the issue by recoding the verification flow to get
the family value before the evaluation.

Change-Id: I666d29dff770a3df1a819c4396027e907b137297
Signed-off-by: Juan Manuel Cruz <juan.m.cruz.alcaraz@intel.com>
2016-12-02 12:40:49 +02:00
Ravi kumar Veeramally
712f0c90db net: tests: Add 6lo context based unit tests
Change-Id: I73e18d830d1dcd4f5181b0de74cb7818086504a3
Signed-off-by: Ravi kumar Veeramally <ravikumar.veeramally@linux.intel.com>
2016-12-02 12:40:48 +02:00
Ravi kumar Veeramally
e68625345a net: Add support for 6lo context based compression
RFC 6282, 3.1.1 (If SAC == 1 and M = 0, DAC = 1).
Source and Destination address compression support if addresses are
based on context based information from Router Advertisement message.

Change-Id: I23a3bf4f111016a8e54be5f0181a113353ad4b88
Signed-off-by: Ravi kumar Veeramally <ravikumar.veeramally@linux.intel.com>
2016-12-02 12:40:48 +02:00
Ravi kumar Veeramally
2bb8eed501 net: Add more inline helper functions in 6lowpan
6lowpan IPHC compression and uncompression functions are very big and
bit difficult to follow. Added more inline helper routines. No changes
in functionality.

Change-Id: I310e636e2a23fe5f19a254c158b65c6f4d6253b0
Signed-off-by: Ravi kumar Veeramally <ravikumar.veeramally@linux.intel.com>
2016-12-02 12:40:48 +02:00
Ravi kumar Veeramally
e8f40a970a net: tests: Add sample 6CO context data to IPv6 RA test
Test is only for parsing 6CO data. Nothing more than that.

Change-Id: I7e5851f389216473379a9e50b83dfb03fbe1e68e
Signed-off-by: Ravi kumar Veeramally <ravikumar.veeramally@linux.intel.com>
2016-12-02 12:40:48 +02:00
Ravi kumar Veeramally
5fbca8a0d2 net: Add support for 6CO
6lowpan context options(CO) are supplied in RA (Router Advertisement)
message. Added support for parsing and cache it. This information
will be used in context based compression and uncompression.

Change-Id: I6e9b5bf02aab3a574ba6a1454232e2d56e855bb0
Signed-off-by: Ravi kumar Veeramally <ravikumar.veeramally@linux.intel.com>
2016-12-02 12:40:48 +02:00
Ravi kumar Veeramally
2d1475e03b net: Fix ND RA length
Neighbor discovery options length is inclusive of type and length.
It's in multiple of 8 bytes. So actual length is length * 8 - 2.

Change-Id: I628d6b8c0a0b5a4e8b5f6d48cebed3856cb8e4b7
Signed-off-by: Ravi kumar Veeramally <ravikumar.veeramally@linux.intel.com>
2016-12-02 12:40:48 +02:00
Tomasz Bursztyka
1069d26eae net: Differentiate IPv6 event command and final event
Enum names are colliding with defines, which is bad.

Change-Id: Ia8c003983ddeb1ebed8a9210e682bcb21abfa687
Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
2016-12-02 12:40:48 +02:00
Vinicius Costa Gomes
42c3969ad8 tests/net/nbuf: Fix invalid memory access
The memcmp() could reach after the buffer that is used for verification
ends, which was causing this test to fail on the qemu_cortex_m3 board.

Change-Id: Ia05df823f201d9017acb35c7634fa506389ae9f1
Signed-off-by: Vinicius Costa Gomes <vinicius.gomes@intel.com>
2016-12-02 12:40:48 +02:00
Vinicius Costa Gomes
61bb244ab1 tests/net/nbuf: Fix wrong size to linearize() call
linearize() expects the amount of room available in the buffer.

Change-Id: I1062912f76951758177b7dd6588e7e0ae280dc03
Signed-off-by: Vinicius Costa Gomes <vinicius.gomes@intel.com>
2016-12-02 12:40:48 +02:00
Vinicius Costa Gomes
f2236bb2d7 tests/net: Exclude tests needing more RAM than available
Quark D2000 doesn't not have enough RAM for these tests.

Change-Id: Iba79eaadb15eb8f1eae4bfdbc6865985d3da3fd3
Signed-off-by: Vinicius Costa Gomes <vinicius.gomes@intel.com>
2016-12-02 12:40:48 +02:00
Ravi kumar Veeramally
3ccf24ccab net: Remove assert and return false in net_nbuf_write
In case of invalid parameters return false than NET_ASSERT.
This way we can continue calling net_nbuf_write() and the
function will will cause no ill effects to the net_buf.

Change-Id: I008a044069d26cb8b5971524dd3e1f23f0786926
Signed-off-by: Ravi kumar Veeramally <ravikumar.veeramally@linux.intel.com>
2016-12-02 12:40:48 +02:00
Jukka Rissanen
5fd1fb05f0 net: Refactor nbuf data fragment detection
Previously the code was using the size of the user data part
to determine whether the buf was a data fragment or RX/TX
buf. This is not enough as we might have a buffer that has
user data but is still allocated from data pool.

This commit changes the detection logic. Now the pool free
pointer is checked against the data pool fifo pointer. If
those match then the buf was allocated from data pool.

Change-Id: I627a960fd2e9cbb7ac8a2e06a914a3ab9596985d
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:40:48 +02:00
Jukka Rissanen
4bf941ee39 net: Re-order fields in net_nbuf struct
Re-ordering fields in struct net_nbuf in order to avoid
holes because of memory alignment.

Change-Id: I5a3ab31a0232003c161fd65848f70d83e07a75c9
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:40:48 +02:00
Tomasz Bursztyka
1b7282a986 net: ethernet: Set ll_reserve only when ready
Let's set ll_reserve only when the ethernet header has been verified.

Change-Id: Icd369cd3a84a6d8c98b4df5ca95227d177b12c3d
Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
2016-12-02 12:40:48 +02:00
Tomasz Bursztyka
5e96fa9544 net: ethernet: Drop the packet early when relevant
If PTYPE is unknown, let's drop the packet.

Change-Id: I2fcdd99b01a875e21b2a1952d556f09e40829d2b
Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
2016-12-02 12:40:47 +02:00
Tomasz Bursztyka
805e475e9d net: events: Fix a mix up between code and command
Code is actually meant to identify the part in the layer from which the
events originates. Adding or removing an address is a command.

Change-Id: I42b4823d2585b15851c4fdd91802a13d2a5759c1
Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
2016-12-02 12:40:47 +02:00
Ravi kumar Veeramally
918703cba3 net: tests: Decrease the required buffers count
Buffer leaks are fixed in 6lowpan compression and ieee802154
fragmentation. So lower the count in tests.

Change-Id: Ic9581f898156fedc20a3e445be8b7a466ee15d99
Signed-off-by: Ravi kumar Veeramally <ravikumar.veeramally@linux.intel.com>
2016-12-02 12:40:47 +02:00
Ravi kumar Veeramally
3712eff2cb net: Fix buffer leak in ieee802154 fragmentation
Unref the buffer after net_buf_frag_del() call. net_buf_frag_del()
doesn't unref the buffer.

Change-Id: I06833e059bb46f6d3e63a22b6cce7dce0ccff14d
Signed-off-by: Ravi kumar Veeramally <ravikumar.veeramally@linux.intel.com>
2016-12-02 12:40:47 +02:00
Ravi kumar Veeramally
25feaf196d net: Fix buffer leak in 6lowpan compression
Uncompressed (original) header fragment deleted but not unreffed.
So leaking buffer here.

Change-Id: Iaefef1e8578cf3b290ae5a00141132cae36332a6
Signed-off-by: Ravi kumar Veeramally <ravikumar.veeramally@linux.intel.com>
2016-12-02 12:40:47 +02:00
Flavio Santes
f74f3f8385 net: Fix Kconfig indentation issue
checkpatch warns about some indentation issues found in Kconfig files.
So, this patch fixes those issues. No new information is added by
this commit.

Change-Id: I251add0359be3fd9152df0f6d58c1207488464a6
Signed-off-by: Flavio Santes <flavio.santes@intel.com>
2016-12-02 12:40:47 +02:00
Tomasz Bursztyka
18601fedb0 drivers: cc2520: Fix LQI computation and generalize it
LQI is actually not provided as is, but should be computed from an
abstract correlation factor. See Section 20.6.

LQI is provided the same way as Linux does, so it can push it everytime
into the buffer.

Change-Id: I5de318db2c2581d7482cc16e41dc601130753a62
Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
2016-12-02 12:40:47 +02:00
Tomasz Bursztyka
74c30c812b net: ieee802154: End of buffer contains LQI
This avoids bloating the radio API by adding a function to get current
LQI and it optimizes the usage of the fragment as its minimal size is
128. Knowing that 802.15.4 frame cannot be bigger than 127 bytes, it
thus finds a usage for the tail byte.

Change-Id: I213ae226f84527fe7b6d761f738e3924651f81e5
Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
2016-12-02 12:40:47 +02:00
Tomasz Bursztyka
cf9dcd3d5b drivers: cc2520: Fix 80 chars lenght limit
Fixing 80 chars limit by removing length computation:
We can count the FCS as part of the received length, even if AUTOCRC is
on. L2 layer is able to parse this out.

Change-Id: I3c824ed95d177570a07d04784798e14f5979c96b
Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
2016-12-02 12:40:47 +02:00
Tomasz Bursztyka
08b748432b tests: Add network core event tests
A fake network device and interface are setup. Test implies add and
removing an IPv6 address which should trigger the related notification.

Change-Id: I6035cfbfaf80c8f4352b5d31b47ca1445434d926
Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
2016-12-02 12:40:47 +02:00
Tomasz Bursztyka
07217ed772 net: net_if: Notify about IPv6 address related changes
These notifications will be forwarded to any relevant net management
event listener.

CONFIG_NET_MGMT and CONFIG_NET_MGMT_EVENT need to be set.

Change-Id: I5de72aed4db06f1d384effde6cf4f003bead3b31
Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
2016-12-02 12:40:47 +02:00
Tomasz Bursztyka
0bd597348c net: Add network management event code for IPv6
Currently, only address related changes are handled.

Change-Id: I2aa366518dae2725e58cbede4ccbe2ef19cd8b16
Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
2016-12-02 12:40:47 +02:00
Tomasz Bursztyka
1d64c3632d net: mgmt: Add some macro helpers for filling in the bit field
This will be useful when creating request and/or event codes.

Change-Id: Ibc117b476c52d72c77924a245e1f263f583061f6
Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
2016-12-02 12:40:47 +02:00
Ravi kumar Veeramally
aeb6d952f2 net: Adopt net_nbuf_read_u8 to dhcpv4 handlers
Change-Id: I78b5bcf291dcf2941b26dfb6d980ba90b4392f03
Signed-off-by: Ravi kumar Veeramally <ravikumar.veeramally@linux.intel.com>
2016-12-02 12:40:47 +02:00
Juan Manuel Cruz
da5bc59d03 net: Fixes the network interface naming macro
The network interface naming macro is ignoring the
dev_name parameter. This can bring issues if having
more than one network interface in the system.

Change-Id: I7e975be61e82bd04bd865b0c4078607cbdef2230
Signed-off-by: Juan Manuel Cruz <juan.m.cruz.alcaraz@intel.com>
2016-12-02 12:40:46 +02:00
Jukka Rissanen
d46f37fe2d net: Add more nbuf read/write helpers
Add net_nbuf_write_u8(), net_nbuf_write_be16(),
net_nbuf_write_be32() and net_nbuf_read_u8() helpers.

Change-Id: I7129625dab85262885a4e130f6d312860c8d1b31
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:40:46 +02:00
Jukka Rissanen
76716480d8 net: IPv6 address should be const in net_if_get_ll_reserve
As the function does not modify the IPv6 address,
it can be const.

Change-Id: I2af58a4954d8b6f0d71bc7d0d14ddf0f62f8ca7c
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:40:46 +02:00
Tomasz Bursztyka
af703e1106 net: Normalizing net_mgmt API names
While doing some documentation for it, I realized names were not all
good and it missed some stuff:

- what belongs to event should contain "event" in it
- we have a structur as callback so let's type the handler as a handler
- let's add the request handler signature

Change-Id: I18822cbcdc3c10e33600d6db38abab5ca73a228c
Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
2016-12-02 12:40:46 +02:00
Jukka Rissanen
146f0e7b87 net: sample: echo-client ported to use the new IP stack
Change-Id: I1666d0634af124fc7a01027187916f427b7c98f8
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:40:46 +02:00
Jukka Rissanen
35c9098c82 net: sample: Make sure echo-client is compiled by sanitycheck
In some cases the BT header files are missing and the compilation
will fail when done by sanitycheck script.

Change-Id: I484e1f0c23975053e947bc57ff3c9f4042fad71e
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:40:46 +02:00
Flavio Santes
7e7f72b104 net: Fix tests/net/nbuf/Makefile
Use ?= for the CONF_FILE variable to match the default assignement for
BOARD ?= qemu_x86.

Change-Id: I0b6cf1e967eeb437d99aa7286cf560426d48fbf9
Signed-off-by: Flavio Santes <flavio.santes@intel.com>
2016-12-02 12:40:46 +02:00
Andrei Emeltchenko
b41457bc5a ieee802154_cc2520: Fix compiler warning with strict aliasing
Fixes compiler warning with strict-aliasing rules shown below.

 ...
CC drivers/ieee802154/ieee802154_cc2520.o
drivers/ieee802154/ieee802154_cc2520.c: In function 'get_mac':
drivers/ieee802154/ieee802154_cc2520.c:290:42: warning: dereferencing
type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
...

Change-Id: Idb0522e4d2207932c9335db1ca12961a5093b48c
Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
2016-12-02 12:40:46 +02:00
Andrei Emeltchenko
3bc58717a1 wpanusb: Export ieee802.14.5 over USB
Export ieee802154 radio over USB to be used in other Operation Systems
like Linux. In this scenario Linux SoftMAC driver would be used
implementing ieee802154 stack inside Linux.

Currently tested to work with Raspberry Pi and addon ieee802154 board.

Change-Id: Iabcbbfcaad8e3935a63faca50a19fb624e78a351
Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
2016-12-02 12:40:46 +02:00
Andrei Emeltchenko
7889ebaf5e net: Add L2 RAW channel hidden option
L2 RAW channel allows to use some functions of IP stack for RAW access
of network drivers. It is hidden from user and is selected by 2520 raw
driver.

Change-Id: I91dd09803052072dfddb7989d9d67c3a5840f89e
Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
2016-12-02 12:40:46 +02:00
Andrei Emeltchenko
ca2cc81d7a net: Add TI_CC2520 RAW driver
Add TI CC2520 driver allowing RAW access to radio interface similar
way Bluetooth user channel works. This makes possible to handle radio
channel inside external 802.15.4 stacks, for example export it over USB
and handle in Linux.

Change-Id: I61bb4c8b998ff1e47dc65427ac471f04ec8fea63
Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
2016-12-02 12:40:46 +02:00
Tomasz Bursztyka
8b1953f740 tests: net: Add net management event sender/receiver tests
It mimics how event could be thrown through a dedicated thrower (a
fiber). The amount and event it can throw is gived through parameters.

Change-Id: I484bc72bdb730a77ce976b0b2998411d9918b7fc
Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
2016-12-02 12:40:46 +02:00
Tomasz Bursztyka
f9fffe32b4 net: Add debugging to network management event part
Change-Id: Ib442dd4a34b30333d1423a9e90367d6626261c37
Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
2016-12-02 12:40:46 +02:00
Tomasz Bursztyka
cce3a7e3d5 net: Add support for event handling on network management API
This adds the capability to raise an event, and for anybody to listen to
it.

Change-Id: I2287b43d678930c29391efa2ddf7b12652cc1bb6
Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
2016-12-02 12:40:46 +02:00
Tomasz Bursztyka
ec1d2c5a48 tests: net: Add a basic network management API test
Testing if net_mng() works.

Change-Id: I303cffa206859184a503ba8efe392b673b162e43
Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
2016-12-02 12:40:45 +02:00
Tomasz Bursztyka
a73b1c39d1 net: Add network management API
Define the ground mechanism to interact with the network stack.

Change-Id: Id2af76188967fa66e0f0d755a2c1dc8a85985540
Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
2016-12-02 12:40:45 +02:00
Ravi kumar Veeramally
8fc7035cfc net: Adopt net_nbuf_read_be32() api to dhcpv4 handlers
Change-Id: I3103e5f4b1bdbf8dced12ef25edd0b63f45548f6
Signed-off-by: Ravi kumar Veeramally <ravikumar.veeramally@linux.intel.com>
2016-12-02 12:40:45 +02:00
Ravi kumar Veeramally
1ce3550779 net: tests: Add RA message unit tests.
Basic unit tests for Router Advertisement message handler.

Change-Id: Ia99cd160632972a12e2099a3ff6e41e6ea48ff9b
Signed-off-by: Ravi kumar Veeramally <ravikumar.veeramally@linux.intel.com>
2016-12-02 12:40:45 +02:00
Ravi kumar Veeramally
c69b10a3a0 net: Adopt new nbuf API's to RA message handlers.
Add multi fragment parsing support for Router Advertisement
packet.

Change-Id: Ie2730156c96759ee720f406f9d034b350643322e
Signed-off-by: Ravi kumar Veeramally <ravikumar.veeramally@linux.intel.com>
2016-12-02 12:40:45 +02:00
Jukka Rissanen
060362ff14 net: Optimize net_nbuf_write() when handling last frag
Get the last fragment only once instead of searching it for
every byte written.

Change-Id: Iebeed21671b12bc081d7a1291f91d2c897a7a1d6
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:40:45 +02:00
Jukka Rissanen
d8cb2fb161 net: Make sure buf is correct one in net_nbuf_write()
The buf parameter cannot point to a data fragment in
net_nbuf_write() because we need to use user data inside
that function and the fragments do not have that information.

Change-Id: I45b9c23869df08a0852bd99c0b453210ad2300b5
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:40:45 +02:00