Commit Graph

3867 Commits

Author SHA1 Message Date
Anas Nashif c3a7fd2844 arm: use wildcards for kconfig
Move platform related data and definition to the platform
directory and include it using:

arch/<arch>/platforms/*/Kconfig.platform

This way we will able to add a platform as a directory of
content without the need to change and Kconfig files.
Platforms can then be included by reference (using repo or
git submodoules)

Change-Id: I6bff4e48490e33cbaf879fe3c424bf2f6a4887ac
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2016-02-05 20:24:52 -05:00
Anas Nashif cd158f3750 x86: only build configured platform
Do not reference every platform, instead use the platform
name to tell make what to build.

Change-Id: I7498da7cdcdada754466222902f59fe4c6487d89
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2016-02-05 20:24:52 -05:00
Anas Nashif 24da31f7fa kbuild: support makefile wildcards
Change-Id: I7482899718da02975949c362045b4f09e117c27b
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2016-02-05 20:24:52 -05:00
Anas Nashif a4266c3baf kconfig: use wildcards for platforms
Move platform related data and definition to the platform
directory and include it using:

arch/<arch>/platforms/*/Kconfig.platform

This way we will able to add a platform as a directory of
content without the need to change and Kconfig files.
Platforms can then be included by reference (using repo or
git submodules and does not need to be part of the zephyr
project)

Change-Id: I5e71f5394c22edb346f7d61d9448b8e1c68e1f9b
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2016-02-05 20:24:52 -05:00
Anas Nashif 90f07a9dd0 doc: support globbing when creating kconfig docs
When generating documentation for kconfig options, support
wildcards to be able to parse all relevant files.

Change-Id: Ifa565e3809996fcd13b0f15d61a4ffb108c1aa0a
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2016-02-05 20:24:52 -05:00
Anas Nashif 6e23ff44ef kconfig: support wildcards
This allows using wildcards with kconfig files so there is no need
to include individual files within a well define tree structure.

For example, you add

source "drivers/*/Kconfig"

and all Kconfig files under drivers/ will be sourced and the order in
menuconfig will be based on the wildcard processing, not in any particular
order.

The main advantage here is that drivers and platforms become drop-ins, a platform
or a driver can be added by just placing it in the right place without having to
change system Kconfig files or Makefiles (Makefiles will be supported in other change).

Change-Id: Id223ba10e6f48b4c48435e9ea37885162ce55e7c
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2016-02-05 20:24:52 -05:00
Yonattan Louise 2ccaed8720 Adapt fixdep to support Windows.
Text files on windows are be created with a different format
for line endings. This commit improves the host tool 'fixdep' to
support files with the windows-style line endings.

Change-Id: I1d120790c5cbb1f1e7df6761821bc7e01c99b988
Signed-off-by: Yonattan Louise <yonattan.a.louise.mendoza@intel.com>
2016-02-05 20:24:52 -05:00
Yonattan Louise b8a0d15784 gen_idt: Change the custom host identifier macro.
In order to keep the code compatibility with Linux and Windows, the flag
O_BINARY is defined as zero when we are compiling in a Linux host. But
when compiling in a Windows host, we have to use the definition of the
flag provided by the host's includes. Currently, there is a custom macro
to identify if the host is a Windows host. This commit change that custom
macro for the macros that compilers provide to avoid defining a new one.

Change-Id: Ifeeab17c68d07039bd5b4a80c8263d338e6448ce
Signed-off-by: Yonattan Louise <yonattan.a.louise.mendoza@intel.com>
2016-02-05 20:24:52 -05:00
Tomasz Bursztyka 39621510e2 Kconfig: quark_se-x86: Set proper default config settings
Provide the proper irq for i2c, gpio and spi. And make relevant drivers
getting enabled easily once their domain is selected.

Change-Id: Ib8a428e11b6163a1b370b23baa34ea2fab733565
Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
2016-02-05 20:24:52 -05:00
Tomasz Bursztyka 7c0155acd3 i2c: dw: Fix support for i2c port 1
- Provide the irq flags to IRQ_CONNECT_STATIC
- Provide the actual IRQ for that controller

Change-Id: If660baca7e92065cfdb588a2ae86ff13da0918eb
Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
2016-02-05 20:24:52 -05:00
Tomasz Bursztyka 49ea925727 quark_se-x86: Provide the i2c IRQ flags
Without that, it won't built when enabling support for dw i2c in
quark_se-x86.

Change-Id: Icce26488d870c273516dc9f34555176122bcb9c8
Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
2016-02-05 20:24:52 -05:00
Tomasz Bursztyka 14267b85c9 spi: dw: Fix various building and support issues
- Build the actual driver when relevant
- Provide the IOAPIC stub
- Provide the IRQ flags for IRQ_CONNECT_STATIC
- Set the default IRQ priorities

Change-Id: Iea20ef67c92cf7f48791fba5a8021448b7059950
Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
2016-02-05 20:24:52 -05:00
Tomasz Bursztyka d47f91893d gpio: dw: Fix build error when configuring dw driver with direct IRQ
SYS_GET_DEVICE() needs the name set in DECLARE_DEVICE_INIT_CONFIG() not
the one in IRQ_CONNECT_STATIC().

Change-Id: Id1ed66953c863531411b34594ffed669ad524ef5
Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
2016-02-05 20:24:52 -05:00
Tomasz Bursztyka 8ae3b9d2d4 gpio: dw: Provide IRQ flags for GPIO 1
That fixes a build error. Platfom's board.h have to provide such flags
if they enable dw gpio 1 controller.
Take the opportunity to provide the right isr to IRQ_CONNECT_STATIC.

Change-Id: I16900ea04f7f7c5d3c99b93a92b00c1f651494de
Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
2016-02-05 20:24:52 -05:00
Szymon Janc c0baad2262 Rename simple UART driver to pipe UART
Original name was too generic and confusing. This patch renames
driver to pipe UART and moves it to console drivers folder. Kconfig
destription is also improved.

Change-Id: I716fdbf7d636bbdc03b0fce27a59fd866f473246
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
2016-02-05 20:24:52 -05:00
Szymon Janc 341f81bd81 Bluetooth: SMP: Refactor keys handling
This refactor the way stored keys are handled to avoid overwriting
existing keys with new keys in case of pairing failed. Main goal is
to delay update of keys (including type and encryption size) until
link is succesfully encrypted with new key (legacy STK or LE SC LTK).

To fix this properly, TK is used to store STK or LE SC LTK and updates
of keys properties are done only on successfull encryption. This makes
code less error prone since update is done only in one place in code.
Also quering SMP code for current key makes sure that correct keys is
used in case of re-pairing.

Change-Id: I6b9e3d8229de522143e0d1fbfe0bd8223dad2a56
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
2016-02-05 20:24:52 -05:00
Szymon Janc aa1226f0a9 Bluetooth: SMP: Fix not caching keys on security request
There is no need to always look-up for keys on security request.
Instead use cached keys if present, if not update cache.

Change-Id: I375842beb4c461418aea6a40350f797ca7b6264c
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
2016-02-05 20:24:52 -05:00
Szymon Janc 809c03b835 Bluetooth: SMP: Fix lookup for CSRK keys
Looking up for CSRK to sign local PDU or verify remote signature
shouldn't add those keys in case those are not present (which is
done by get function).

Change-Id: Iec271a9dddd2cd319f153cec6e19fc2408ee0896
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
2016-02-05 20:24:52 -05:00
Jukka Rissanen 65a240cd2d net: 802.15.4: Start to send beacons if configured so
If the beacon support is activated, then we join the network
and start to send beacons.

Change-Id: Iffd0f05008e6a2463debb53ca73eb142ff60488a
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:24:52 -05:00
Jukka Rissanen 569fc7cf8e net: 802.15.4: Add debugging support for beacon handling
Change-Id: Ia6f189f723815b72b46c7954a691759910c42979
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:24:52 -05:00
Jukka Rissanen faa218f53f net: 802.15.4: Add beacon statistics support to Kconfig
User can enable 802.15.4 beacon statistics support.
The 802.15.4 stats are printed periodically together with other
statistics.

Change-Id: I844a27224017a9d28cdbc166471523aa366da315
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:24:52 -05:00
Jukka Rissanen 20886743f6 net: 802.15.4: Add beacon support selection to Kconfig
User can select whether the beacon support is activated or not.

Change-Id: I8fd22af73cfca0dd4f2182bf98bc4b3571ac1f8f
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:24:51 -05:00
Szymon Janc 073d8fe9e7 Bluetooth: SMP: Refactor LE SC LTK and DHKey Check code
This refactor code that is used to generate LTK and DHKey check value.
Duplicated code is factored to helpers reducing code size. Resulting
code is simpler and much easier to understand.

Change-Id: I1bb5a72959b9196bc472f069e9be5857d38dbcad
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
2016-02-05 20:24:51 -05:00
Mariusz Skamra 105f052992 Bluetooth: tester: Handle Exchange MTU command
This patch adds Exchange MTU command handler to the tester.
It allows to test if GATT Client can initiate MTU Exchange Procedure.

Change-Id: I2e50cec27fb7b944f57a4a6487138adbf126bad4
Signed-off-by: Mariusz Skamra <mariusz.skamra@tieto.com>
2016-02-05 20:24:51 -05:00
Grzegorz Kolodziejczyk 49eab1402c Bluetooth: Extend BTP Specification to cover SM routines
This adds protocol specification for SM.

Change-Id: I9c6ef377d0e4ad261e466dfed3a35713cf79de12
Signed-off-by: Grzegorz Kolodziejczyk <grzegorz.kolodziejczyk@tieto.com>
2016-02-05 20:24:51 -05:00
Arkadiusz Lichwa baf2f4d28e Bluetooth: Cleanup LE ACL Tx semaphore
Makes consistent and compact ACL Tx semaphore namespace

Change-Id: Ief357e02ff7c3e1c6b7667dc27f057a3499cf1c4
Signed-off-by: Arkadiusz Lichwa <arkadiusz.lichwa@tieto.com>
2016-02-05 20:24:51 -05:00
Arkadiusz Lichwa c4a503b6b4 Bluetooth: BR/EDR: Use correct ACL Tx MTU and semaphore
Selects right ACL Tx MTU and semaphor based on connection link type
and indirectly controller buffers capabilities.

Change-Id: I1df1ba81e6b09d9d5bdcd34a93d9a3d255133143
Signed-off-by: Arkadiusz Lichwa <arkadiusz.lichwa@tieto.com>
2016-02-05 20:24:51 -05:00
Arkadiusz Lichwa 746ae052ca Bluetooth: Refactor ACL Tx packet users
Make and use helper functions to get ACL Tx packets max length (MTU)
and get semaphore syncing out Tx packet to controller.

Change-Id: I52f60a71c6b179ff300b4fd21da27174e9d825d9
Signed-off-by: Arkadiusz Lichwa <arkadiusz.lichwa@tieto.com>
2016-02-05 20:24:51 -05:00
Luiz Augusto von Dentz 7d2d2838fb Bluetooth: L2CAP: Implement segmentation for incoming packets
If the SDU length is bigger than the amount data received in the first
packet it means it will be segmented in 2 or more packet until the SDU
is completed.

Since the MTU required by the upper layer could be much bigger than the
ACL buffer the code now request a buffer to reassemble the SDU.

Change-Id: I286d16e185f59a8128c4357dddebdc13145dfe31
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
2016-02-05 20:24:51 -05:00
Luiz Augusto von Dentz 81af3feb01 Bluetooth: L2CAP: Use semaphore to control credits
This use struct nano_sem to control the credits so when sending if the
credits hit zero it now waits more credits to continue instead of
failing.

Change-Id: I2da4692eaa16828f74a1df4346583258bb4cf8f0
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
2016-02-05 20:24:51 -05:00
Luiz Augusto von Dentz 8f48f02cae Bluetooth: Add l2cap-send command to btshell
l2cap-send can be used to send data when connecting to an L2CAP channel:

btshell> l2cap-send 3
bt: bt_l2cap_chan_send (0x00114b0c): chan 0x00112824 buf 0x00112b00 len 23
bt: l2cap_chan_create_seg (0x00114b0c): chan 0x00112824 seg 0x001124f8 len 23
bt: l2cap_chan_le_send (0x00114b0c): chan 0x00112824 cid 0x0040 len 23 credits 7
bt: l2cap_chan_le_send (0x00114b0c): chan 0x00112824 cid 0x0040 len 2 credits 6
bt: bt_l2cap_chan_send (0x00114b0c): chan 0x00112824 buf 0x00112b00 len 23
bt: l2cap_chan_create_seg (0x00114b0c): chan 0x00112824 seg 0x001124f8 len 23
bt: l2cap_chan_le_send (0x00114b0c): chan 0x00112824 cid 0x0040 len 23 credits 5
bt: l2cap_chan_le_send (0x00114b0c): chan 0x00112824 cid 0x0040 len 2 credits 4
bt: bt_l2cap_chan_send (0x00114b0c): chan 0x00112824 buf 0x00112b00 len 23
bt: l2cap_chan_create_seg (0x00114b0c): chan 0x00112824 seg 0x001124f8 len 23
bt: l2cap_chan_le_send (0x00114b0c): chan 0x00112824 cid 0x0040 len 23 credits 3
bt: l2cap_chan_le_send (0x00114b0c): chan 0x00112824 cid 0x0040 len 2 credits 2

Change-Id: Ibc970d1ffd8c407c66b35e9f3bf49ccf826f7472
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
2016-02-05 20:24:51 -05:00
Luiz Augusto von Dentz 6a4affef19 Bluetooth: L2CAP: Add bt_l2cap_chan_send
This adds bt_l2cap_chan_send which can be used to send data to
dynamic channels resulting in the following trace:

< ACL Data TX: Handle 3585 flags 0x01 dlen 17
      Channel: 64 len 24 [PSM 128 mode 0] {chan 5}
        a0 02 ff ff ff ff ff ff ff ff ff ff ff ff ff ff  ................
        ff ff ff ff ff ff ff ff                          ........

Change-Id: I753e301b1125ef21a345ab96470f15bc53a4869a
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
2016-02-05 20:24:51 -05:00
Mariusz Skamra e54d74f696 Bluetooth: tester: Lookup for service handle while adding characteristic
Add characterictic command requires to provide service ID to which this
characteristic shall be added. With this patch initialization will
succeed only if service with given ID exists.

Change-Id: Ie6223f293b4cac06f211556d29896b2e1ccd96ac
Signed-off-by: Mariusz Skamra <mariusz.skamra@tieto.com>
2016-02-05 20:24:51 -05:00
Arkadiusz Lichwa 375d8e4377 Bluetooth: BR/EDR: Supplement conn object with link type
Adds support to connection object allowing to set the link type.
At the moment only LE link is used since LE connection handling
is implemented when BR/EDR support is enabled.

Change-Id: I5204a93670308b0151deaa98106a1551b9b39493
Signed-off-by: Arkadiusz Lichwa <arkadiusz.lichwa@tieto.com>
2016-02-05 20:24:51 -05:00
Arkadiusz Lichwa 17fcf67422 Bluetooth: BR/EDR: Initialize ACL Tx semaphore
Defines dedicated semaphore for sync ACL packets out.

Change-Id: I114daad24cd75fa4165128eab697af382ea10c3a
Signed-off-by: Arkadiusz Lichwa <arkadiusz.lichwa@tieto.com>
2016-02-05 20:24:51 -05:00
Grzegorz Kolodziejczyk dc82c46ea8 Bluetooth: Fix checking response len in read by type
Error should be responded if no previous attribute of the same type was
read (added to response buffer). In case if previous attributes were
added to buffer no error should be responded and read initiator should
perform read by type with increased start handle.

Change-Id: I31c4469e172a496890f049d9304a03673506c5f3
Signed-off-by: Grzegorz Kolodziejczyk <grzegorz.kolodziejczyk@tieto.com>
2016-02-05 20:24:51 -05:00
Grzegorz Kolodziejczyk 559f7a07f3 Bluetooth: Add handling connect command for tester
This patch adds support for handling connect command in tester
application.

Change-Id: Ia35bcb33caf59b8df4a3cdc01c12d58fdeeecfe9
Signed-off-by: Grzegorz Kolodziejczyk <grzegorz.kolodziejczyk@tieto.com>
2016-02-05 20:24:51 -05:00
Mariusz Skamra 50a13c5fc1 Bluetooth: tester: Handle Set Encryption Key Size command
This patch adds a command to the tester application that sets the
required encryption key size to access characteristic value or
descriptor.

> ACL Data RX: Handle 64 flags 0x02 dlen 8    [hci0] 16139.016504
      ATT: Write Request (0x12) len 3
        Handle: 0x0004
          Data: be
< ACL Data TX: Handle 64 flags 0x00 dlen 9    [hci0] 16139.024052
      ATT: Error Response (0x01) len 4
        Write Request (0x12)
        Handle: 0x0004
        Error: Insufficient Encryption Key Size (0x0c)

Change-Id: Ida8b0fdaffe2b1a941a0b87c8a11395a8b63ccd0
Signed-off-by: Mariusz Skamra <mariusz.skamra@tieto.com>
2016-02-05 20:24:51 -05:00
Szymon Janc 71fe9c1994 Bluetooth: Allow to require FIPS security level for connection
If local IO capabilities allow MITM and LE SC is enabled then
FIPS level is reachable.

Change-Id: Icfb32fbffa0355117b6723d641a6d3db38feb87d
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
2016-02-05 20:24:51 -05:00
Szymon Janc cd1ed791b4 Bluetooth: Set correct security level for LE SC
If P256 key is present then authenticated link has FIPS security level.

Change-Id: Iaf50b83ac6973bbd40e5ef57bf1e6375eedf6b12
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
2016-02-05 20:24:51 -05:00
Szymon Janc ab81fe9d45 Bluetooth: SMP: Add LE SC smp_g6 init test
This runs smp_g2 function with test vectors from Core
Specification 4.2.

Change-Id: I96ef51e9133182a38c3fd007764bdd633d8f9e3f
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
2016-02-05 20:24:51 -05:00
Szymon Janc 16e7c44fb2 Bluetooth: Add support for passkey confirmation in btshell
This allows to display passkey and confirm if it matches remote
device.

Change-Id: I22f706b6441210ef426702ec290a05112e06a4e2
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
2016-02-05 20:24:51 -05:00
Szymon Janc 5720958d97 Bluetooth: SMP: Add support for passkey confirmation from user
This patch allows user to confirm or reject passkey. If passkey was
confirmed we proceed with pairing (depending on SMP state). If
passkey isn't confirmed pairing is cancelled.

Change-Id: I7a286b51957bee1064342625f2bc3f04124a82de
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
2016-02-05 20:24:51 -05:00
Szymon Janc f342a9af34 Bluetooth: SMP: Add initial support for Passkey Confirmation
This add support for generating Passkey for confirmation.

Change-Id: I3b66675a5410292ebe05c66d77e7b4c7a95a2896
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
2016-02-05 20:24:51 -05:00
Szymon Janc 48249bf34a Bluetooth: Add public API for passkey confirmation
This allows to request user to confirm displayed passkey with remote
device. This allows to have authenticated LE SC link resulting in FIPS
security level.

Change-Id: I5b6c1666e3d1687cc04c5d66529372db090dd000
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
2016-02-05 20:24:51 -05:00
Mariusz Skamra 9fecda938a Bluetooth: gatt: Add missing error handling
The attribute protocol Read By Type is used to perform
Read Using Characteristic UUID procedure. This procedure
is used to read characteristic value if Characteristic Value UUID
is known, while handle is not known.
Errors received from application like Insufficient Encryption
Key Size must be send as a response to Read By Type Request

> ACL Data RX: Handle 64 flags 0x02 dlen 11                                                                                                                          [hci0] 94382.244804
      ATT: Read By Type Request (0x08) len 6
        Handle range: 0x0003-0x0003
        Attribute type: Unknown (0xaa51)
< ACL Data TX: Handle 64 flags 0x00 dlen 9                                                                                                                           [hci0] 94382.255987
      ATT: Error Response (0x01) len 4
        Read By Type Request (0x08)
        Handle: 0x0003
        Error: Insufficient Encryption Key Size (0x0c)

With this patch we can pass TC_GAR_SR_BI_11_C test.

Change-Id: Id47109f673cb725b2edd9cc0e154cc055fc8d0ef
Signed-off-by: Mariusz Skamra <mariusz.skamra@tieto.com>
2016-02-05 20:24:51 -05:00
Szymon Janc 5872a2094e Bluetooth: SMP: Fix remote DHKey check calculation
In smp_f6 local and remote random was in wrong order in
bt_smp_dhkey_ready.

Change-Id: Iba6ee6595c1d8e873d72571d1e4fb3d0c0b9717e
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
2016-02-05 20:24:51 -05:00
Grzegorz Kolodziejczyk 04c03c1a92 Bluetooth: Fix read by type request attr permissions handling
This patch fixes checking permissions and sending response to read by
type request. If multiple (or if one is found) attributess are found
within handle range and first of them don't have read permission,
error should be send. If any of attribute don't have read permission
but isn't first in set, the attributes before this attribute should
be returned.

Change-Id: I532a8701521505c02845de5db62c94f7edc9d567
Signed-off-by: Grzegorz Kolodziejczyk <grzegorz.kolodziejczyk@tieto.com>
2016-02-05 20:24:51 -05:00
Jukka Rissanen 36c372d8cd net: 802.15.4: Loopback test app needs bigger TX fiber stack
Because of the way the loopback tester works, it needs much
bigger stack when sending packets in TX fiber.

Change-Id: I360f0cf1f35e654cb139565f19f24628fb5ab5ee
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:24:51 -05:00
Jukka Rissanen 9a2927ac57 net: contiki: Handle 802.15.4 retransmissions properly
When the 802.15.4 radio driver tells there was a TX collision,
we must resend the frame. The resent and failed network packets
were not freed properly which eventually eat all memory reserved
for this purpose. Now the resent frames are discarded after
resending has failed couple of times.

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