Commit graph

30 commits

Author SHA1 Message Date
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
Ravi kumar Veeramally
f5dec25466 net: Fix arp/ethernet broadcast and multcast addr scenario
In case of broadcast or multicast destination address, ARP
message is not required. But ethernet_send assumes net_arp_prepare()
returns ARP buffer and doesn't fill any LL header information in
all fragments.

So checking whether destination address is broadcast or multicast
in ethernet and fill LL headers according to the case. Lets assume
if net_arp_prepare() returns success means that is ARP message.

Change-Id: If5909d04d993b1690ae44cd9f5af43b8346d3a72
Signed-off-by: Ravi kumar Veeramally <ravikumar.veeramally@linux.intel.com>
2016-12-02 12:40:26 +02:00
Tomasz Bursztyka
becf74743b net: Split debug Kconfig options from legacy to new stack
- new stack options are renamed and placed in their respective menus
- new stack Kconfig gets normalized (tabs vs spaces, etc...)

Change-Id: Ia68f6589fed464bbdd76dc0812775684b2f94a58
Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
2016-12-02 12:40:24 +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
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
f7a9b07a84 net: l2 layer reserve size might need extra parameter
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>
2016-12-02 12:40:17 +02:00
Jukka Rissanen
86a3edffd0 net: Return NET_CONTINUE in L2 ethernet driver in send()
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>
2016-12-02 12:40:17 +02:00
Jukka Rissanen
fe7cc6d2d2 net: Ethernet driver needs to set ll address
Instead of swapping the ll address set the source and
destination addresses if they are not set.

Change-Id: Icdded06df2edb27f71894e29e9bc22a8f0313fae
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:40:17 +02:00
Jukka Rissanen
a91fbc7e3f net: Resolve LL address for IPv6 packet in ethernet L2 driver
If we do not know link layer address when sending ethernet frame,
then initiate IPv6 neighbor discovery process.

Change-Id: Id9c55646895a12ea3693cdca330e730bc80d83dc
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:40:16 +02:00
Tomasz Bursztyka
b8e3415264 net: Let's use inline function for type checking for net_nbuf
Using macros does not let the compiler verifying about the type we are
providing, which usually give an error easier to understand.
Also, this will let the compiler deciding how to actually optimize
(inline or not) the code.

Change-Id: Iba49590b620ef0a1bd0ed5621453524fcfea747c
Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
2016-12-02 12:40:13 +02:00
Jukka Rissanen
0b29c950f4 net: Remove extra debug print in ethernet L2 driver
Change-Id: I6200112c2d4766e4c8fb73cc9a58370ba95969d8
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:40:10 +02:00
Jukka Rissanen
976fb9d988 net: Set multicast dst address in ethernet if missing
If ethernet destination address is not set, then check if
IPv6 packet is multicast one and set the ethernet destination
address using multicast MAC address prefix.

Change-Id: Iade43e9ebcd0939346d89422f74ee547d6908866
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:40:10 +02:00
Jukka Rissanen
d0401ca317 net: Pointer to a ethernet header was incorrectly set
Change-Id: Id96f574b3f9cc0c161bd365b9e7705ee5ffd862f
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:40:10 +02:00
Jukka Rissanen
ffcafd0d9e net: Ethernet L2 TX side needs to setup fragments
We need to build the ethernet header when sending data
fragments so that this does not need to be done in
ethernet device driver.

Change-Id: I0347b1abf0c124978fae3fa4b80bb4ee0d544e41
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:40:10 +02:00
Jukka Rissanen
cbfa6ec5f3 net: Add more debug print in ethernet RX side
Change-Id: I4df82990fb3be2358c94e480c52fc490bee4a3f7
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:40:10 +02:00
Jukka Rissanen
1e2de0febc net: Reserve eth ll header len in L2 ethernet driver
Change-Id: I2ec51033f4e778518e6f860c0d37eea39aa61169
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:40:10 +02:00
Jukka Rissanen
b4b296b888 net: Add utility func to return eth broadcast addr
As the broadcast address is needed in both arp.c and ethernet.c
it is useful to create a utility function for returning that.

Change-Id: I26e75e325f7ee6dcd703a92b3349bd8d388e157e
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:40:10 +02:00
Jukka Rissanen
7bb273f8f2 net: Add debug support to ethernet L2 driver
Change-Id: I53f35dcb1be25aed1a15ebf9322938bd75263047
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:40:09 +02:00
Jukka Rissanen
79fc041407 net: Add link layer reserve information to l2 driver
Caller can figure out what is the link layer header size
for a given link layer. There is a callback that can return
a dynamic header size if needed.

Change-Id: I59ea2319eb6cb53a0ba5c6aa9e7eecc4b38c94d3
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:40:09 +02:00
Jukka Rissanen
82ba457dbc net: Make sure ethernet l2 sets src and dst addresses
We need to set the ethernet source and destination addresses
correctly when sending packet.

Change-Id: Ica1e3fac6299612f0ad1baea7da79143e8944d15
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:40:09 +02:00
Jukka Rissanen
63d941bb08 net: Set IP protocol type when sending ethernet packet
Set the proper next protocol type when sending ethernet frame.

Change-Id: Ie042b3fab0741c9ca51453b0b0ecf6189adf2fe7
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:40:09 +02:00
Jukka Rissanen
59c2d0c0d7 net: Set the ll src and dst addresses in ethernet l2 driver
When packet is received, we set the pointers to ethernet
source and destination addresses.

Change-Id: Ia8795849d8be30e8230e27b1a8d95dd7f334427a
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:40:09 +02:00
Jukka Rissanen
5b65e6592d net: No need to do ARP for IPv6 network packet
Change-Id: Ib9acedfdd9a569501a8d63119b7bddefdf846592
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:40:07 +02:00
Jukka Rissanen
7a88cee800 net: The IP protocol type needs to be set in L2 layer
The network L2 recv handler needs to set the initial value for
IP protocol type (IPv4 or IPv6). Otherwise the recv data check
in net_core.c:process_data() will not work properly if IPv4
is enabled.

Change-Id: I5684cd10e5d79e13a977406729ea68313e689c9b
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:40:07 +02:00
Tomasz Bursztyka
4090b4c01f net: Add an L2 layer
Net core then does not know anything about l2 related logic.
For instance ARP is used in ethernet l2 API and nowhere else.
This will be helpful when adding different technologies altogether.

Currently, only SLIP driver is enabled to use relevant l2 layer.

Change-Id: I03c93326321028d04222733ca4083e3c6b785202
Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
2016-12-02 12:40:06 +02:00
Inaky Perez-Gonzalez
3e63a74514 net/yaip: revert merge
Follow up to TSC decission for further discussion in the networking
WIG.

Change-Id: I148b484dfe308661573e47ed3e60cceed673bddf
Signed-off-by: Inaky Perez-Gonzalez <inaky.perez-gonzalez@intel.com>
2016-07-22 04:43:09 +00:00
Tomasz Bursztyka
d8f0b9ffed net: yaip: Add an L2 layer
Net core then does not know anything about l2 related logic.
For instance ARP is used in ethernet l2 API and nowhere else.
This will be helpful when adding different technologies altogether.

Currently, only SLIP driver is enabled to use relevant l2 layer.

Change-Id: I03c93326321028d04222733ca4083e3c6b785202
Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
2016-07-13 14:06:20 +00:00