Commit graph

1279 commits

Author SHA1 Message Date
Arkadiusz Lichwa
847a1f6628 Bluetooth: BR/EDR: Add initial SSP Complete
Adds HCI protocol type for Secure Simple Pair Complete event and enables the
event in controller.
Then implements the initial SSP Complete event handler with catching
the status of SSP process.

Change-Id: Ic7cc5b4cab8a1b4120285815c24eeb6483d748df
Signed-off-by: Arkadiusz Lichwa <arkadiusz.lichwa@tieto.com>
2016-02-26 08:43:31 +00:00
Arkadiusz Lichwa
2697d4fd5e Bluetooth: BR/EDR: Initial IO Capability reply to remote
Enables IO Capability Request event in controller.
Adds handler to react on controller's IO Capability Request event during
incoming pairing.
As a initial case respond to the request with negative reply setting
reason as 'pairing not allowed'.

Change-Id: I161c7ab7f1031a78cfa50444f41624232e5c5146
Signed-off-by: Arkadiusz Lichwa <arkadiusz.lichwa@tieto.com>
2016-02-26 08:42:57 +00:00
Mariusz Skamra
a7ad7dcf16 Bluetooth: SMP: Clear keys on SMP Timeout and Pairing Failed
Those two indicate SMP failure, so while in keys distribution phase,
if we receive Pairing Failed, or there is SMP Timeout, the keys
distributed so far shall considered as invalid and cleared.
Another flag SMP_FLAG_KEYS_DISTRO is needed to save the old keys
if this failure appears before distribution of new keys.

Change-Id: I9a917740c02955aa149170b84ae547f5c8c4b7ad
Signed-off-by: Mariusz Skamra <mariusz.skamra@tieto.com>
2016-02-26 06:54:40 +00:00
Arkadiusz Lichwa
dd8bf892f3 Bluetooth: BR/EDR: Handle IO Capability Response event
Enables IO Capability Response event in controller and adds remote IO Capability
and authentication fields to connection object.
Initializes them using IO exchange values delivered in SSP IO Capability
Response event data set representing remote as a part of incoming pairing
process.

Change-Id: Ia73a912f6fb633d1d1bb086ef3af9a280ac5a864
Signed-off-by: Arkadiusz Lichwa <arkadiusz.lichwa@tieto.com>
2016-02-26 06:22:54 +00:00
Arkadiusz Lichwa
73e201cbce Bluetooth: BR/EDR: Enable SSP mode in controller
Turns on Secure Simple Pairing mode in controller. Since there's a prerequisite
the controller is 4.0+, turning the mode is unconditional.

Change-Id: Id4a10ccf8892a430b0daaa6750835516b17b7e8a
Signed-off-by: Arkadiusz Lichwa <arkadiusz.lichwa@tieto.com>
2016-02-26 06:05:31 +00:00
Tomasz Bursztyka
ee587244f4 net: ip: Enable Kconfig based debug options for the IP stack
It will be possible to enable/disable debug messages from IP stack from
make menuconfig, instead of modifying the relevant files to do so.

Change-Id: I065f10bcc2bc3579081b2fcdb1c47e12d148e2f1
Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
2016-02-25 11:03:55 +00:00
Arkadiusz Lichwa
0abd5dd7d5 Bluetooth: BR/EDR: Rename local variable
Changes the local netbuff name to be more generic and to be used later in code
initializing BR/EDR stack.

Change-Id: Iae177237c813a46cbd10720a7af3474632154678
Signed-off-by: Arkadiusz Lichwa <arkadiusz.lichwa@tieto.com>
2016-02-25 10:37:55 +00:00
Luiz Augusto von Dentz
2f8a5967a8 net: Kconfig: Auto select mandatory features for Bluetooth
This makes sure NETWORKING_WITH_6LOWPAN and 6LOWPAN_COMPRESSION_IPHC are
selected properly and update IPSP sample to only include the minimal
config options so it can test if this is working properly.

Change-Id: I2565cbd4f79d91eaba348d43933aa893c6dc6ace
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
2016-02-25 10:36:33 +00:00
Jukka Rissanen
791e6f2708 net: contiki: Original copyright notice was missing
Original copyright notice was lost when the file was copied
from Contiki.

Change-Id: I5e008b92cb3898255a7940dc2c61320014222610
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-24 09:50:50 +02:00
Jukka Rissanen
5562a9a811 net: contiki: Fix the description of 6lowpan files
The file names and types were incorrectly described in comments
in net/ip/contiki/sicslowpan/ directory.

Change-Id: Id6aba238a08ec603a57f9a438dbf6fab202220f8
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-24 09:48:44 +02:00
Peter Mitsis
06e2b4e129 nanokernel: Change fiber_delayed_start() return type
Instead of returning a 'void *', the nanokernel fiber_delayed_start()
family of routines now return a handle of type nano_thread_id_t.

Consequently, the nanokernel fiber_delayed_start_cancel() family of
routines now accept a parameter of type nano_thread_id_t instead of
'void *'.

The complete list of affected nanokernel routines is:
    fiber_delayed_start()        fiber_delayed_start_cancel()
    fiber_fiber_delayed_start()  fiber_fiber_delayed_start_cancel()
    task_fiber_delayed_start()   task_fiber_delayed_start_cancel()

Change-Id: Ibd4658df3ef07e79a81b7643a8be9ea5ffe08ba0
Signed-off-by: Peter Mitsis <peter.mitsis@windriver.com>
2016-02-23 10:48:54 -05:00
Jukka Rissanen
884061bbd9 net: Selecting Bluetooth IP networking selects BT support
It is more intuitive for the end user to enable IPSP by
selecting the BT network driver which then automatically
enables relevant Bluetooth options. The earlier way
required user to select L2CAP dynamic channel support
first before he could activate IPSP and this is not very
logical and user friendly.

Change-Id: Idde0da80a2a19670e217ae9a9a4717e8399559e7
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-22 09:59:50 +00:00
Johan Hedberg
bab3b49fdb Bluetooth: Change GATT callback return values to ssize_t
Since the return value of these callbacks is a number of bytes ssize_t
is more appropriate than int.

Change-Id: I3406fb382975d62f51e7a195666d0ae88364fd2c
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
2016-02-20 15:39:33 +00:00
Jukka Rissanen
3c44f7e0bc net: contiki: Enable packet queueing
Currently the packet is dropped if some other packet needs to
be sent instead. This does not make much sense in Zephyr so
activate packet queueing where the saved packet is sent later.
The queueing can happen e.g., with neighbor discovery where
the packet to be sent requires ND to be done before the actual
application packet is being sent.

Change-Id: Ia321d641eec5acfbc9f8f581de712801a483e32d
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-19 12:38:04 +00:00
Tomasz Bursztyka
050ec13556 net: ip: Make sure CONFIG_NETWORKING_WITH_LOGGING is properly handled
If the user unsets CONFIG_NETWORKING_WITH_LOGGING, it will mean he
really doesn't want to get any network stack logging output.

Change-Id: I0629a045adbf8916327a8a9ba69b6e6e9ee2e7d9
Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
2016-02-19 12:33:45 +00:00
Tomasz Bursztyka
8a826102e0 net: ip: Fix a build issue when CONFIG_NETWORKING_WITH_LOGGING=n
Fixing this issue:
net/ip/l2_buf.c:81:31: note: in expansion of macro 'NULL'
 #define inc_free_l2_bufs_func NULL
                               ^
net/ip/l2_buf.c:88:2:
 note: in expansion of macro
 'inc_free_l2_bufs_func'
 inc_free_l2_bufs_func(buf);
 ^

Change-Id: Ie58f23af479ec4f2dd625b1f0f36720bbe54f928
Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
2016-02-19 12:33:19 +00:00
Johan Hedberg
6b7ecc47c4 Bluetooth: GATT: Fix error response to bt_gatt_attr_read()
Change-Id: Ic5ab95d2c5ff62975f59239fd79068025ec5c54f
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
2016-02-19 12:52:32 +02:00
Johan Hedberg
dfaafb204f Bluetooth: Use BIT() macro wherever possible
Instead of manually creating bit shifts for individual bits use the
BIT() macro that exists for this purpose.

Change-Id: I599ecc16b3a2cffe8a355e19816c405e51937e91
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
2016-02-19 10:47:29 +02:00
Iván Briano
f24a02445e net: Include only the necessary headers
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>
2016-02-19 07:41:01 +00:00
Szymon Janc
c1c21965d6 Bluetooth: GATT: Fix check if device is bonded
Keys storage is present also for non bonded devices. Add helper
that checks for actual keys being present in storage that may be
used inline.

Change-Id: Icfc758e3ac89e88ca48948e5193878cf5689611a
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
2016-02-18 16:36:12 +01:00
Szymon Janc
194f9d9c89 Bluetooth: SMP: Add support for no bond pairing
If remote device indicates no bond pairing there is no point in
storing any keys. If no keys are stored key storage is freed on
disconnection. Keeping key storage around while device is connected
is important for GATT being able to check encryption key size also
for paired but not bonded devices.

Change-Id: If80e9d4c6da02e73c8730972a7a388b0b7d14ba6
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
2016-02-18 14:54:29 +00:00
Luiz Augusto von Dentz
c22f551940 Bluetooth: L2CAP: Log an error if data cannot be sent
This add an error to the output which helps detects failures in case
debug is not enabled.

Change-Id: I2f4ed357ccf288c15b231d637bf1986af9ecbf37
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
2016-02-18 10:01:05 +00:00
Johan Hedberg
a72d967d33 Bluetooth: GATT: Expose ATT error codes to application callbacks
Introduce BT_GATT_ERR macro to make it possible for application
callbacks to return exact ATT error codes.

Change-Id: I971536508e75036fbddc40b3f33e5201e11940bc
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
2016-02-17 15:05:34 +00:00
Johan Hedberg
96f9831304 Bluetooth: Add public att.h header file
For now this only exposes the various ATT error codes.

Change-Id: If568782e90dca22871681d2d3b2d81ae4cb8e5e4
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
2016-02-17 15:05:08 +00:00
Johan Hedberg
2f9ff6f11b Bluetooth: Rename att.h to att_internal.h
In preparation of creating a public att.h rename the existing internal
header appropriately.

Change-Id: I8588712bc5aa57d391c5ce0886c99692e5a2823e
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
2016-02-17 16:15:56 +02:00
Szymon Janc
b7b0a16a07 Bluetooth: Fix tracking of advertising state
This fix not being able to stop advertising while connected due to
invalid use of BT_DEV_ADVERTISING flag.

Change-Id: If5578fa2c69dd18d6623d05ae44d4710cce9a9e5
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
2016-02-17 13:15:08 +00:00
Szymon Janc
4dfb50e514 Bluetooth: Fix not calling connected callback on connect failed
If LE Create Connection fails notify application that connection
failed.

Change-Id: I3993bcb1bf3f8bd8fc08546e1fe683326b47db5b
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
2016-02-17 13:07:46 +00:00
Luiz Augusto von Dentz
12a092757f Bluetooth: L2CAP: Fix use of '/n' with BT_DBG
BT_DBG already add a new line so that '/n' is not necessary.

Change-Id: I7b25470386e2a7228a684665301d2d28d1360808
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
2016-02-17 11:50:12 +02:00
Luiz Augusto von Dentz
ca90ac5e62 net: Select NETWORKING_IPV6_NO_ND in case of NETWORKING_WITH_BT
Bluetooth links are point to point so it shouldn't be necessary to do
neighbor discovery, futhermore it blocks transmission if the remote
doesn't respond which seems to be the case with Linux.

Change-Id: Ic8997f9c5bc832ba71f71e20e6317ee0c79d250d
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
2016-02-16 15:44:26 +00:00
Szymon Janc
c80cf24e03 Bluetooth: GATT: Fix possible bt_conn leak
If other peers were present but not in CONNECTED state temporary
connection reference was leaked.

Change-Id: Icc32bfe1a86f92a9d8472991476ebfd26c889d84
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
2016-02-16 15:03:50 +00:00
Szymon Janc
7dc9210939 Bluetooth: ATT: Fix notifying GATT on disconnection
Channel context was cleared before calling bt_gatt_disconnected
which resulted in passing NULL conn to it.

Change-Id: I486d1cf6662716584c2c973366a9c9654f499802
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
2016-02-16 14:25:34 +00:00
Arkadiusz Lichwa
1246df3c98 Bluetooth: BR/EDR: Validate security on encryption key refresh evt
During endup pairing as acceptor update security level on encryption key
refresh complete event.

Change-Id: Id1d252bfa5a7f6c69d52b3f6b23907025e711fb2
Signed-off-by: Arkadiusz Lichwa <arkadiusz.lichwa@tieto.com>
2016-02-16 06:51:31 +00:00
Arkadiusz Lichwa
9c88e66935 Bluetooth: BR/EDR: Validate security on encryption change evt
During endup pairing as acceptor update security level on encryption change
event.

Change-Id: Icddedc09f70093cc05ac99d04053b3bd3ef22555
Signed-off-by: Arkadiusz Lichwa <arkadiusz.lichwa@tieto.com>
2016-02-16 06:51:10 +00:00
Arkadiusz Lichwa
bd81052d41 Bluetooth: BR/EDR: Validate security on connection complete evt
During endup pairing as acceptor update security level and link encryption
state on connection complete event.

Change-Id: I6189a3c6675c080e3ab2610c81b617294dbd98d5
Signed-off-by: Arkadiusz Lichwa <arkadiusz.lichwa@tieto.com>
2016-02-15 20:46:19 +00:00
Arkadiusz Lichwa
ac7e560ba9 Bluetooth: BR/EDR: Move part of BR/EDR core code up
To skip around forward declaration in next security update patch,
move up part of strictly BR/EDR related code.

Change-Id: Id44fc831f629e66660edbc43c187cbf9a88b771d
Signed-off-by: Arkadiusz Lichwa <arkadiusz.lichwa@tieto.com>
2016-02-15 19:52:46 +00:00
Arkadiusz Lichwa
f670d06643 Bluetooth: BR/EDR: Add user I/O context during pairing
When during legacy incoming pairing (as acceptor) the runtime is passed to user
to enter a PIN, mark such interaction and keep it valid until proper
authentication reply API handlers are called.

Change-Id: If63015f5beb256873925602adc6a8e5ff9d3b00f
Signed-off-by: Arkadiusz Lichwa <arkadiusz.lichwa@tieto.com>
2016-02-15 17:20:20 +00:00
Arkadiusz Lichwa
998d72a986 Bluetooth: BR/EDR: Track 16 digits PIN code
As a pairing acceptor starts tracking 16 octets PIN entered by user
when pairing devices working in Security Mode 3. Based on PIN tracker
state, the generated link key is saved in keys database as combination of
un/authenticated and legacy key type.

Change-Id: I4cbb20942fb38697d952971df807aec8b16c74e4
Signed-off-by: Arkadiusz Lichwa <arkadiusz.lichwa@tieto.com>
2016-02-15 17:19:40 +00:00
Jukka Rissanen
e11295ebe4 net: contiki: If outgoing packet is dropped then print more info
Change-Id: Ibac9592f9af5bd5ad2b984752bd8e3a0542d00b5
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-15 15:00:00 +00:00
Andrei Emeltchenko
d650bc298e Bluetooth: Add missing print format specifier
Change-Id: Ia4a3e70a990da69bc5be22f693081f0dd6b6a5e1
Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
2016-02-12 16:57:30 +00:00
Andrei Emeltchenko
6e9de099d5 Bluetooth: Fix checking wrong variable
Check server instead of psm after lookup.

Change-Id: I80fe916432b69b376f04083980f1208aa7befbb1
Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
2016-02-12 16:25:20 +00:00
Johan Hedberg
1bc6597d4d Bluetooth: Take advantage of the new net_buf_pull_u8() helper
Change-Id: I41ac2bc721b916f6d939f23be293750a83d21523
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
2016-02-12 16:03:43 +00:00
Johan Hedberg
9d6aaa1cc7 net: buf: Add net_buf_pull_u8() helper API
A helper for the (fairly common) task of decoding individual 8-bit
values.

Change-Id: Id7e97df152232d5dd9861cf1e107877f1b8febaa
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
2016-02-12 15:10:20 +00:00
Johan Hedberg
984c7a6945 Bluetooth: Kconfig: Introduce BLUETOOTH_RX_STACK_SIZE
Applications may want to fine-tune the stack size of the fiber that's
used to make callbacks into the application.

Change-Id: I2cd3e79283fe85359389528e84d9bcc21e3e19f6
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
2016-02-12 13:01:13 +02:00
Szymon Janc
ab013794a5 Bluetooth: Kconfig: Move TinyCrypt ECDH under SMP
This is used only for LE SC.

Change-Id: I60e5ac391fec1cf1f8648f16021a2956072f2d50
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
2016-02-11 20:45:03 +00:00
Szymon Janc
7f9696c182 Bluetooth: SMP: Fix compilation with SC Only mode enabled
legacy_pairing_rsp is used only for legacy pairing. Fix following
with CONFIG_BLUETOOTH_SMP_SC_ONLY set.

  CC      net/bluetooth/smp.o
net/bluetooth/smp.c: In function 'legacy_pairing_rsp':
net/bluetooth/smp.c:1207:16: warning: implicit declaration of function
    'legacy_get_pair_method' [-Wimplicit-function-declaration]
  smp->method = legacy_get_pair_method(smp, remote_io);
                ^
net/bluetooth/smp.c:1209:8: warning: implicit declaration of function
    'legacy_request_tk' [-Wimplicit-function-declaration]
  ret = legacy_request_tk(smp);
        ^
net/bluetooth/smp.c:1216:10: warning: implicit declaration of function
    'legacy_send_pairing_confirm' [-Wimplicit-function-declaration]
   return legacy_send_pairing_confirm(smp);
          ^
net/bluetooth/smp.c: At top level:
net/bluetooth/smp.c:1201:16: warning: 'legacy_pairing_rsp' defined but not
    used [-Wunused-function]
 static uint8_t legacy_pairing_rsp(struct bt_smp *smp, uint8_t remote_io)
                ^
Change-Id: I0d65efa71859c23cf5b6f0bfa3386a23543bf907
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
2016-02-11 20:44:58 +00:00
Szymon Janc
dee44dee7c Bluetooth: Kconfig: Clarify BLUETOOTH_TINYCRYPT_ECC help message
If controller based ECC is to be used and it is not supported
LE SC are disabled.

Change-Id: I4cf48152fe28cb5678434925de63caaaba493d68
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
2016-02-11 20:44:52 +00:00
Szymon Janc
8dbd8dcc5b Bluetooth: Remove dead code
Since now TinyCrypt is always enabled there is no need for HCI
backup code.

Change-Id: I6cf9c2bd15dc9a6c0dd98cd7aff0ea137eb0be8b
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
2016-02-11 20:44:44 +00:00
Szymon Janc
3ed1a37a41 Bluetooth: SMP: Use TinyCrypt for AES CMAC
TinyCrypt provides implementation of AES CMAC so there is not need
for internal implementation in SMP code.

Change-Id: I15fe0daf8fca8c44b002636983b46502419c57a5
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
2016-02-11 20:44:28 +00:00
Johan Hedberg
4c11dda411 Bluetooth: Take advantage of the new net_buf_add_u8() helper
Change-Id: Id062d4f68be1960006926ddf463c2c7ecf42d31a
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
2016-02-11 14:48:03 +02:00
Johan Hedberg
500513b5f0 Bluetooth: Add connection role to bt_conn_info
This can be useful for both LE and BR/EDR connections so it sits
outside of those specific structs. The values are intentionally
matching the HCI values so for the HCI case we can just do a direct
assignment.

Change-Id: Id78d304bb61e5fd941f2c35351758c1eecc6ab6a
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
2016-02-11 14:48:03 +02:00