Commit graph

41120 commits

Author SHA1 Message Date
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
Jukka Rissanen
bdc14da01a net: Timer fiber stack increased to 1536 bytes
The earlier 1kb stack was too small.

Change-Id: Iaa0b6e375cc79a7066bee9ec3a114246fb2ed377
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:24:50 -05:00
Jukka Rissanen
99a9a55aee net: Fix timer fiber that was missing events
We run event timers (etimers) checker every two ticks in order
not to loose events that are scheduled in very short intervals.
These events can come for example when network driver wants
to resend network packets.

Change-Id: Id48977f4de66583351551b5bf403d6e230d189c0
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:24:50 -05:00
Jukka Rissanen
53c43ebe45 net: Initialize the callback timers
The ctimers are not run without this. Callback timers are
used for example when retransmitting network packets.

Change-Id: Iae55848e615814d89573df326a2c20bb8ca88230
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:24:50 -05:00
Jukka Rissanen
9026763fab net: 802.15.4: Decreasing transmit stack to 1536 bytes
The 4kb stack was too big so setting the stack to 1536 bytes.

Change-Id: I648d826225dd6312bba15100acf79e3783609d7a
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:24:50 -05:00
Jukka Rissanen
9e675cf7c6 net: contiki: export ctimer_process so it can be called
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>
2016-02-05 20:24:50 -05:00
Jukka Rissanen
b148130cdb net: contiki: Add clock function to busy wait a timeout
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>
2016-02-05 20:24:50 -05:00
Ravi kumar Veeramally
845dd9614a net: apps: Remove testcase.ini temporarily
Remove testcase.ini from net/test/test_15_4 from microkernel
version temporarily.

Change-Id: I1ee5d80142c6b2210629842e5e8d83370299657d
Signed-off-by: Ravi kumar Veeramally <ravikumar.veeramally@linux.intel.com>
2016-02-05 20:24:50 -05:00
Grzegorz Kolodziejczyk
d475229b4d Bluetooth: Refactor disconnect command
This patch adds missing connection unref in disconnect command. Also
lightly status setting was refactored.

Change-Id: Ic2502d8df15e45c4aea25632642af3d8a4fb23cc
Signed-off-by: Grzegorz Kolodziejczyk <grzegorz.kolodziejczyk@tieto.com>
2016-02-05 20:24:50 -05:00
Grzegorz Kolodziejczyk
b11d431d98 Bluetooth: Add missing packed attribute to cmd/ev structs
This patch adds missing packed attribute to structures.

Change-Id: I9bcc8a677ae296e41eebb530584977660df52ebf
Signed-off-by: Grzegorz Kolodziejczyk <grzegorz.kolodziejczyk@tieto.com>
2016-02-05 20:24:50 -05:00
Szymon Janc
e50e874ee4 Bluetooth: SMP: Fix missing timer restart on sending DHKey check
SMP timer should be restarted every time SMP PDU is send. To avoid
such issues in new code provide smp_send() helper that will always
restart timer. Only exceptions are Security Request and Pairing Failed
commands as those don't restart timer.

Change-Id: I96a7cd72b2249d25d1c3f9e8b3fbf1e74dc76222
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
2016-02-05 20:24:50 -05:00
Szymon Janc
0480ecf7c4 Bluetooth: SMP: Always send error if DHKey generation failed
There is no point in going with pairing any further regardless of when
bt_smp_dhkey_ready was  called.

Change-Id: I0e0c71e91ecf36f74b429d9455a2f21161939069
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
2016-02-05 20:24:50 -05:00
Szymon Janc
f2c4f06b15 Bluetooth: SMP: Refactor Pairing Failed sending
smp_reset is always called after Pairing Failed was sent so just
move it inside this function. This makes sure that new code won't
be missing reset after error. Also rename send_err_rsp to smp_error
as it now accept smp context instead of conn.

Change-Id: I25cdca066817f79f6c2f83d9f9bd0876b7909085
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
2016-02-05 20:24:50 -05:00
Szymon Janc
7955cf9911 Bluetooth: SMP: Fix not reseting context after pairing failed
If Pairing Failed was send we should reset SMP context to be able to
restart pairing if needed.

Change-Id: Iea524ccf841ceba8a1194d94ead9c7256331ad14
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
2016-02-05 20:24:50 -05:00
Szymon Janc
531e594217 Bluetooth: SMP: Correct comment for SMP_FLAG_DHKEY_SEND
This flag means that DHKey check should be generated and send on
next event.

Change-Id: I0dc9aa3713ad17ceabc4f5f890afa32f538f714f
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
2016-02-05 20:24:50 -05:00
Arkadiusz Lichwa
0394ec6730 Bluetooth: ATT: Fix error handling on prepare write response
Don't generate error response for invalid offset or invalid
attribute value during queued write requests.
According to BT SIG specification such response needs to be done when
execute write request is performed.

Change-Id: If480228dc98f5713891b45b3f5ca31990cf5c633
Signed-off-by: Arkadiusz Lichwa <arkadiusz.lichwa@tieto.com>
2016-02-05 20:24:50 -05:00
Szymon Janc
744cb36d79 Bluetooth: SMP: Fix setting pairing method for LE SC
request_tk is called only for legacy pairing. Due to this pairing
method must be selected in pairing request or response handler to
cover LE SC case. But it must be selected only after it is known if
pairing is legacy or LE SC.

Change-Id: I0418a679b73c199acff12795157389d5969adb05
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
2016-02-05 20:24:50 -05:00
Szymon Janc
747a672d56 Bluetooth: SMP: Fix LE SC pairing method lookup
If both sides have KeyboardDisplay capabilities Passkey Confirmation
should be used.

Change-Id: I69d0909831cab0340ecbb418f035414b18e8c0c0
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
2016-02-05 20:24:50 -05:00
Johan Hedberg
70742bdda8 Bluetooth: Perform check for BR/EDR support in a common place
Both of the br_init() functions should be checking for BR/EDR support
before issuing the commands. To not have to code the check twice, do
it in hci_init() before calling br_init().

Change-Id: I2de3aa3c2e85322257b27b1c716b37c326d5bae7
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
2016-02-05 20:24:50 -05:00
Mariusz Skamra
5b58da915e Bluetooth: Extend BTP specification to cover GATT Client tests
This patch extends Bluetooth Testing Protocol with commands used
while testing IUT as GATT client.

Commands are mapped to the procedures from Core Specification to make
use of Read Supported Commands command. Based on the response to this
command tester can determine which PTS test cases should be enabled.
If the IUT don't support eg. Reliable Writes, this command won't be
set in Read Supported Commands response, so that test cases that
test this functionality won't be executed.

Change-Id: I204a295698d4b69f73d0556b172770c4fd018009
Signed-off-by: Mariusz Skamra <mariusz.skamra@tieto.com>
2016-02-05 20:24:50 -05:00
Arkadiusz Lichwa
ffda52a7cd Bluetooth: BR/EDR: Get max ACL packet length
Uses dedicated initializing routine to start getting controller's
internal buffer capabilities. At first initialize ACL packet length
(MTU) with max value controller can accept.

Change-Id: If90dd16ebb5c0751fb65555b06c9fb18ed394a54
Signed-off-by: Arkadiusz Lichwa <arkadiusz.lichwa@tieto.com>
2016-02-05 20:24:50 -05:00
Arkadiusz Lichwa
0c3c6ddd90 Bluetooth: BR/EDR: Make room for controller internals
Defines instance for controller specific information.
Prepare room for max ACL packet length controller can get.

Change-Id: I5fb5f83b3f7383337b6b86683dff05b675815b98
Signed-off-by: Arkadiusz Lichwa <arkadiusz.lichwa@tieto.com>
2016-02-05 20:24:50 -05:00
Arkadiusz Lichwa
a34d114085 Bluetooth: Refactor init LE ACL Tx semaphore
Moves initialization of bt_dev.le.pkts_sem object to handlers reading
controller buffer capabilities. Therefore no need to keep anymore
bt_dev.le.pkts member.

Change-Id: I126cb1d9ad9feed9c11f35b26c44055075734685
Signed-off-by: Arkadiusz Lichwa <arkadiusz.lichwa@tieto.com>
2016-02-05 20:24:50 -05:00
Mariusz Skamra
05426296ee Bluetooth: tester: Fix invalid type of buffer length
Buffer size is 512, so uint16 type shall be used to store it's length.

Change-Id: I5abaf7d783032ff41819f7b838d4016932dece20
Signed-off-by: Mariusz Skamra <mariusz.skamra@tieto.com>
2016-02-05 20:24:50 -05:00
Mariusz Skamra
f47b828be7 Bluetooth: tester: Factor out helper for converting uuid to bt_uuid
This patch separates helper for converting uuid received from btp
command to bt_uuid.

Change-Id: If7f5423a839379763928ba5e87678697b1721d83
Signed-off-by: Mariusz Skamra <mariusz.skamra@tieto.com>
2016-02-05 20:24:50 -05:00
Szymon Janc
a204dd7bc3 Bluetooth: SMP: Reduce stack usage of cmac_subkey
This removes extra zero buffer and reuses l as initial zero buffer.
This reduces stack usage from:
rx stack (real size 1024):      unused 96     usage 896 / 992 (90 %)
to
rx stack (real size 1024):      unused 112    usage 880 / 992 (88 %)
when using LE SC.

Change-Id: I961e4270f7b86b6d2615e23d6ace9cc81026eaf7
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
2016-02-05 20:24:50 -05:00
Szymon Janc
1e67671152 Bluetooth: SMP: Reduce rx fiber stack usage
Mark constants used in crypto as static const. This reduced stack
usage from:
rx stack (real size 1024):      unused 20     usage 972 / 992 (97 %)
to
rx stack (real size 1024):      unused 96     usage 896 / 992 (90 %)
when using LE SC.

Change-Id: Iac39ccb91cc94508fa36243d477f6df787250527
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
2016-02-05 20:24:50 -05:00
Szymon Janc
33530ad054 Bluetooth: SMP: Make order of swap_buf parameters natural
Follow unix convention of foo(dst, src, len). This makes code
easier to read.

Change-Id: I1f8a2638e87d060dcf84f5a7074e0b734d4ea4f0
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
2016-02-05 20:24:50 -05:00
Szymon Janc
d6894af702 Bluetooth: Allow to re-encrypt link with LE SC key
If P256 key is present use it to start encryption instead of starting
new pairing.

Change-Id: I7c8541359a785e6e22e63cdab5a92a402db83db3
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
2016-02-05 20:24:49 -05:00
Szymon Janc
b036f916ce Bluetooth: Add LE SC keys support to LTK request event
If LE SC P256 key is available use it to encrypt link.

Change-Id: I21790d6641748f34aba4058beb424bd56793713c
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
2016-02-05 20:24:49 -05:00
Szymon Janc
1ec6ba6d83 Bluetooth: SMP: Add LE SC smp_f6 init test
This run smp_f6 function with test vectors from Core Specification 4.2.

Change-Id: I6a29be3c8f90ca787d90c957cb6667853e823002
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
2016-02-05 20:24:49 -05:00
Szymon Janc
f0c84eb756 Bluetooth: SMP: Add support for DHKey check
This implements LE SC f6 function use to calculate DH Key checks
values. Calculated value is compared to value received from remote
party and if match encryption is enabled.

Change-Id: Iee66cbd19c0aa6d83edc6482dfb87943e4e45069
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
2016-02-05 20:24:49 -05:00
Szymon Janc
176ea6af6b Bluetooth: SMP: Generate DHKey on remote public key reception
When remote Public Key is received issue HCI command to calculate
DH Key.

Change-Id: I46ce03d6a8aafebaad2656ccf66cbb636ceb748a
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
2016-02-05 20:24:49 -05:00
Szymon Janc
b1a1197d8c Bluetooth: SMP: Add LE SC smp_f5 init test
This run smp_f5 function with test vectors from Core Specification 4.2.

Change-Id: I1ef0ddf54c058bd7a9b7cc635fd785267a1bafd8
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
2016-02-05 20:24:49 -05:00
Szymon Janc
5c97a0678c Bluetooth: SMP: Calculate LTK and MacKey for LE SC
This implementes f5 function and use it to generate LTK and
MacKey.

Change-Id: I86d9a958d5009796ea04f2447e1bad9eb63981ce
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
2016-02-05 20:24:49 -05:00
Szymon Janc
41187cee88 Bluetooth: SMP: Add random PDU handling in LE SC
Allows to verify remote confirmation number.

Change-Id: I964533ce29e3a2862361642d43ee9dee4b204b11
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
2016-02-05 20:24:49 -05:00
Szymon Janc
ce246c1289 Bluetooth: SMP: Add LE SC smp_f4 init test
This run smp_f4 function with test vectors from Core Specification 4.2.

Change-Id: If083d8c9c81b98af97ed900db2004482b3e886e3
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
2016-02-05 20:24:49 -05:00
Szymon Janc
2eada0eb3c Bluetooth: SMP: Add initial bits of LE SC support
This adds initial pieces for LE SC support including pairing method
selection, authentication field updates, confirmation generation and
public key sending.

Change-Id: I91dcd0058c8f45ea19df89c2336142d927b08235
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
2016-02-05 20:24:49 -05:00
Szymon Janc
c09e3123d7 Bluetooth: SMP: Move bt_smp_aes_cmac code up
This will be used for LE SC support.

Change-Id: I43aff863bb3ffe1d326858011f471b1c781859f7
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
2016-02-05 20:24:49 -05:00
Szymon Janc
7426de527f Bluetooth: Read LE Local P-256 Public Key on init
This is needed for LE Secure Connection when tinycrypt is not used.

Change-Id: Ia0419da882d48d9d298b6674803b2e4987e6aa0c
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
2016-02-05 20:24:49 -05:00
Johan Hedberg
463dba22f3 Bluetooth: Kconfig: Be consistent with terminology
We don't use "Bluetooth Smart" anywhere, so we shouldn't use
"Bluetooth Classic" either. Instead, stick to the more technical "LE"
and "BR/EDR" terms.

Change-Id: Iadfc1c090205e0f417081d63ebe43172c5708a18
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
2016-02-05 20:24:49 -05:00
Mariusz Skamra
8dc991855e Bluetooth: tester: Response with error while writting with invalid offset
IUT shall response with Invalid Offset ATT error code, if it exceeds
value length.

Change-Id: I5c7148c96324482f198332d475742bfb44274957
Signed-off-by: Mariusz Skamra <mariusz.skamra@tieto.com>
2016-02-05 20:24:49 -05:00
Arkadiusz Lichwa
e2f04214b5 Bluetooth: Kconfig: Make BLUETOOTH_DEBUG as common for LE & BR/EDR
Indicate to the user that the debug support is no longer LE-specific
but generic for Bluetooth subsystem.

Change-Id: I1a1c39fd03bf857ba673fbb5d15fa50ffba02afa
Signed-off-by: Arkadiusz Lichwa <arkadiusz.lichwa@tieto.com>
2016-02-05 20:24:49 -05:00
Szymon Janc
ea8654d956 Bluetooth: Add support for LE Secure Connections LTK
This allows to store LE SC keys. Since LE SC and legacy
pairing are mutually exlusive there is no need for additional
storage space as keys.ltk can be used for it.

Change-Id: I784e670684e9047b4b90b8cb8505d9b581c47b50
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
2016-02-05 20:24:49 -05:00
Szymon Janc
057f069734 Bluetooth: SMP: Add defines for LE Secure Connections
Change-Id: I94c31bc4656bc261892dbac4341f13a706594c2f
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
2016-02-05 20:24:49 -05:00
Ruslan Mstoi
36b02569e3 Bluetooth: Remove wrong information about the LSB of opcode
The least significant bit of opcode is not used to distinguish between
command/response or events.

Change-Id: Icaa1b6d87968e095a7f231d43e74257f5acca379
Signed-off-by: Ruslan Mstoi <ruslan.mstoi@intel.com>
2016-02-05 20:24:49 -05:00
Mariusz Skamra
93adf39864 Bluetooth: tester: Remove not needed status variable
Change-Id: I3f91f5f5bd40912fee2095af340303203807cc11
Signed-off-by: Mariusz Skamra <mariusz.skamra@tieto.com>
2016-02-05 20:24:49 -05:00
Anas Nashif
0c22192c3f quark se: add sensor subsystem platform to sanity
Run sanity for this platform

Change-Id: Ic317c63d720a420d3d02e382e17742dec8d08e07
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2016-02-05 20:24:49 -05:00