Commit graph

1992 commits

Author SHA1 Message Date
Szymon Janc
aa6a9b0066 Bluetooth: SMP: Remove unused static const
This is no longer used and can produce warning on some GCC versions.

Change-Id: Ib19903ea41d6446983a738ea99912dc5ba9b88f8
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
2016-10-04 08:12:14 +03:00
Luiz Augusto von Dentz
6877651a30 Bluetooth: GATT: Fix locking RX fiber
If an indication is received while there is an outstanding request the
code will attempt to get a buffer from req_pool to confirm which may
block causing the RX fiber to lock and probably crash as the request
won't release the buffer until it gets a response or timeout.

JIRA: ZEP-940

Change-Id: I3df30db473a0c6c6c3e63b1d0b410a50bdd3accf
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
2016-10-04 08:12:14 +03:00
Itankar, Piyush T
acb8c75648 Bluetooth: A2DP: Initialization of A2DP
A2DP Initialization, registers callback functions with AVDTP.

Change-Id: I6b24ca5e7906c08774a173f35da28b1711f34577
Signed-off-by: Itankar, Piyush T <piyush.t.itankar@intel.com>
2016-10-04 08:12:14 +03:00
Luiz Augusto von Dentz
52efcf8acd Bluetooth: AVDTP: Add missing BLUETOOTH_DEBUG_AVDTP
Change-Id: Ib2243f85bb06df9d98d258bce11d4e7ac87f212d
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
2016-10-04 08:12:14 +03:00
Arun Jagadish
3afc05d816 Bluetooth: AVDTP: Module Initialization
- Data Structure Definition
- Registration and Initialization

Change-Id: Icca95ccbd2692a7d41fd41ef2c99e34761e864b3
Signed-off-by: Arun Jagadish <arun.jagadish@intel.com>
2016-10-04 08:12:14 +03:00
Johan Hedberg
27fc467e74 net: buf: Allow NULL head pointer when inserting to frag list
To avoid extra logic in code that creates net_buf fragment lists, make
it possible to pass a NULL pointer as the head net_buf when there are
no previous buffers. Before this change the code would look like this:

	if (head) {
		net_buf_frag_add(head, buf);
	} else {
		head = net_buf_ref(buf);
	}

After the patch the code can simply do:

	head = net_buf_frag_add(head, buf);

This will then do the right thing regardless if head is NULL or
non-NULL.

Change-Id: I300394242e2e243ed3839b25629ec816dd98c148
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
2016-09-30 15:07:32 +00:00
Johan Hedberg
8afb6fc229 net: buf: Allow head deletion with net_buf_frag_del()
Extend the net_buf_frag_del() API to be usable for deleting the head
of a fragment chain. This is useful when parsing a stream-based
protocol encoded into a fragment chain, making code such as the
following possible:

	...parse data from 'head' buffer...

	/* If current buffer is empty, move to the next one */
	if (!head->len) {
		head = net_buf_frag_del(NULL, head);
	}

Change-Id: I65794bd7fab4e6dadfd2d6b2fa367f9424fd1bde
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
2016-09-30 15:07:32 +00:00
Paul Sokolovsky
dbb9094b8a net: Set uIP context on newly allocated buffers immediately.
This context must be set for TX buffers, and there's no better place to
set it than at the allocation time. If not set, it may end up NULL,
causing adverse effects (one seen by few parties is dereferencing random
memory locations to get (random again) MSS values). For RX buffers, uIP
context is set elsewhere too, but anyway, common sense says that if a
buffer is allocated for network context X, and that context uses uIP
connection Y, the a buffer should be just cross-linked with Y during
allocation time, not somewhere later.

Change-Id: Icdb3cd724802ca263c1cd0e3909be811e53822ba
Signed-off-by: Paul Sokolovsky <paul.sokolovsky@linaro.org>
2016-09-22 12:00:24 +00:00
Luiz Augusto von Dentz
eeccdaca05 Bluetooth: HCI: Fix updating RPA too early
Checking work pending flag does not account the delay before the work is
submitted so this make use a flag to track when the RPA is valid.

Change-Id: I2d858e5163455ce90eb6273c6a8824c5c6d44ae1
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
2016-09-15 14:36:09 +00:00
Szymon Janc
c320abc72c Bluetooth: SMP: Factor out BR/EDR encryption check to helper
This make it easier to follow code flow in #ifdefs blocks.

Change-Id: I06941b9db2a76ea587bae02a3bfbc40abf7f2779
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
2016-09-14 11:26:05 +02:00
Szymon Janc
e45d08ef2d Bluetooth: SMP: Add helper for reporting BR/EDR pairing complete
Put code for completing pairing (success or failure) into common
helper.

Jira: ZEP-605

Change-Id: If24328cf421f970f87a0dc6729a6fea83fb83489
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
2016-09-14 06:02:39 +00:00
Szymon Janc
fd8d725283 Bluetooth: SMP: Add support for Signing Information over BR/EDR
This allows to handle CSRK distributed by remote device.

> ACL Data RX: Handle 11 flags 0x02 dlen 21
      BR/EDR SMP: Signing Information (0x0a) len 16
        Signature key: 32b6247f80dc172be6198649a6322532

Jira: ZEP-605

Change-Id: I01ca67e134d7d8068d0336567a3fa9b9fdafc001
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
2016-09-14 06:02:34 +00:00
Szymon Janc
f711962344 Bluetooth: SMP: Add support for Identity Information over BR/EDR
Allow to handle IRK distributed by remote device.

> ACL Data RX: Handle 11 flags 0x02 dlen 21
      BR/EDR SMP: Identity Information (0x08) len 16
        Identity resolving key: 286f917356baf6aa27f169fe30030c88
> ACL Data RX: Handle 11 flags 0x02 dlen 12
      BR/EDR SMP: Identity Address Information (0x09) len 7
        Address type: Public (0x00)
        Address: 20:68:9D:60:A1:E4

Jira: ZEP-605

Change-Id: I3c7d32cc6e4cf4d8690edb92089bd433e06f1b4d
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
2016-09-14 06:02:29 +00:00
Szymon Janc
777d2f5f30 Bluetooth: SMP: Add support for sending Pairing Request over BR/EDR
This allows to send Pairing Request.

Jira: ZEP-605

Change-Id: I0ec2989e4dedb25a51e73b27689f0fd1893ceab8
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
2016-09-14 06:02:22 +00:00
Szymon Janc
68592f06f6 Bluetooth: SMP: Add support for LTK derivation from LinkKey
This allows to derive LTK from Link Key using H6 function.

Jira: ZEP-625

Change-Id: Ife1e0d770f196174b6d7fc5e8074d76af49934cb
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
2016-09-14 06:02:15 +00:00
Szymon Janc
790a28ccf4 Bluetooth: SMP: Allow to force BR/EDR without SC support
This option allows to register BR/EDR SMP channel without required
Secure Connections support in controller. This is solely for testing
and should never be enabled in production.

Jira: ZEP-605

Change-Id: I1909c900e323f61acef9fa2b46f22e853beeda75
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
2016-09-14 06:02:10 +00:00
Szymon Janc
756ac5f63c Bluetooth: SMP: Support Pairing Response over BR/EDR
Handle Pairing Response and distribute keys if required.

Jira: ZEP-605

Change-Id: I2014d38896f9f67095228cb09dab017040570448
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
2016-09-14 06:02:05 +00:00
Szymon Janc
1d06d941da Bluetooth: SMP: Fix encryption key size check in BR/EDR pairing req
Encryption key size for derived LTK should match one used for BR/EDR
encryption.

Change-Id: Ibcb1c3320cd191ce0d2fda8f5cacaf1ee295fcc4
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
2016-09-14 06:02:00 +00:00
Szymon Janc
85195d2d2e Bluetooth: Add support for reading encryption key size for BR/EDR
Make use of "Read Encryption Key Size" HCI command to read real
encryption key size for BR/EDR connection instead of assuming 16
bytes key size.

< HCI Command: Read Encryption Key Size (0x05|0x0008) plen 2
        Handle: 11
> HCI Event: Command Complete (0x0e) plen 7
      Read Encryption Key Size (0x05|0x0008) ncmd 1
        Status: Success (0x00)
        Handle: 11
        Key size: 16

Change-Id: I372028ce73115d34aedbb6b5ce420144844cfce0
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
2016-09-14 06:01:55 +00:00
Johan Hedberg
37d204e03d Bluetooth: Fix giving back pkts semaphore when disconnecting
The TX fiber might be blocked waiting for the num_pkts semaphore when
a disconnection occurs. If we only give back the semaphore once
exiting the while-loop we may end up in a deadlock. Giving back the
semaphore in the connection disconnect handler solves this.

An additional fix this patch does is to ensure that we don't perform
integer underflow because of the last iteration.

Change-Id: Ia67dc506885d0c2bad25c598ea349f1fd251218b
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
2016-09-14 08:45:45 +03:00
Szymon Janc
c31fcf4e5a Bluetooth: SMP: Distribute local keys over BR/EDR
< ACL Data TX: Handle 11 flags 0x00 dlen 21
      BR/EDR SMP: Identity Information (0x08) len 16
        Identity resolving key: 732bf430116b328587de5fda0a4b8c80
< ACL Data TX: Handle 11 flags 0x00 dlen 12
      BR/EDR SMP: Identity Address Information (0x09) len 7
        Address type: Public (0x00)
        Address: 00:02:72:33:45:88

Jira: ZEP-605

Change-Id: I6ba203ea4bbd64c0f05150d3865e6c3bb630b41d
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
2016-09-14 08:45:45 +03:00
Szymon Janc
8f9eccac25 Bluetooth: SMP: Support Pairing Failed over BR/EDR
Invalidate received keys on Pairing Failed.

Jira: ZEP-605

Change-Id: I4eec85233ed27312b9f61d89d71329cc665b382b
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
2016-09-14 08:45:45 +03:00
Szymon Janc
2cac219a36 Bluetooth: SMP: Support Pairing Request over BR/EDR
This allows to handle Pairing Request and reply with Pairing Response.

> ACL Data RX: Handle 11 flags 0x02 dlen 11
      BR/EDR SMP: Pairing Request (0x01) len 6
        IO capability: DisplayOnly (0x00)
        OOB data: Authentication data not present (0x00)
        Authentication requirement: No bonding, No MITM, Legacy,
                                    No Keypresses (0x00)
        Max encryption key size: 16
        Initiator key distribution: IdKey (0x02)
        Responder key distribution: IdKey (0x02)
< ACL Data TX: Handle 11 flags 0x00 dlen 11
      BR/EDR SMP: Pairing Response (0x02) len 6
        IO capability: DisplayOnly (0x00)
        OOB data: Authentication data not present (0x00)
        Authentication requirement: No bonding, No MITM, Legacy,
                                    No Keypresses (0x00)
        Max encryption key size: 16
        Initiator key distribution: IdKey (0x02)
        Responder key distribution: IdKey (0x02)

Jira: ZEP-605

Change-Id: I886c8d345b87dafae93d692ab39b7f1214bff733
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
2016-09-14 08:45:45 +03:00
Szymon Janc
355ef5a5a0 Bluetooth: SMP: Clear keys on timeout when running over BR/EDR
If SMP Timeout occured pairing failed and any keys distributed should
be invalidated.

Jira: ZEP-605

Change-Id: Ibdb9d61c720f9da10232c9bc6148d9ff73ccfa6c
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
2016-09-14 08:45:45 +03:00
Johan Hedberg
3a3238d1b0 Bluetooth: GATT: Fix potential bt_conn reference leak
There was a missing bt_conn_unref() when bt_conn_lookup_addr_le()
returns a connection that's not in BT_CONN_CONNECTED state.

Change-Id: I4c6271d5bf596ea4d9b899e99ce1c7b7c8693f5e
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
2016-09-14 08:45:45 +03:00
Szymon Janc
d27447c674 Bluetooth: SMP: Add initial code for BR/EDR support
This allows to register SMP over BR/EDR fixed channel is Secure
Connections are supported by controller.

Change-Id: I681bc1cc789ae30a115594c1143485e8a7a8acb3
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
2016-09-14 08:45:45 +03:00
Szymon Janc
fa726a8d99 Bluetooth: SMP: Move smp_create_pdu function up in a file
This is in prepartion for BR/EDR support.

Change-Id: Ie9e8f6368b74e6e9768e775d6ccf718fb6927e3a
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
2016-09-14 08:45:45 +03:00
Sathish Narasimman
9738e83285 Bluetooth: HFP HF: Initialize Handsfree profile
Initialize Handsfree profile for HF Role and register RFCOMM server
channel number to the RFCOMM. And also exposes some basic callbacks
which is required for the application.

Change-Id: Ic79cbd66ef9529c4eb134cc21efcdbc388bb707d
Signed-off-by: Sathish Narasimman <sathish.narasimman@intel.com>
2016-09-14 08:45:45 +03:00
Jaganath Kanakkassery
d73814a1d5 Bluetooth: RFCOMM: Implement RX flow control
RX credits is defined based on the number of acl buffers and
it will be updated to remote if it goes beyond the defined
threshold. Controller to host flow control will take care if
acl buffers are not free wrt outstanding RX credits.

Change-Id: Ie597513bda07f39b6934a704f6db6dad14e323d5
Signed-off-by: Jaganath Kanakkassery <jaganathx.kanakkassery@intel.com>
2016-09-14 08:45:45 +03:00
Luiz Augusto von Dentz
c5dc094f7e Bluetooth: ATT: Fix not handling error response properly
The code should check if there is an existing buffer to match with the
response code.

Change-Id: I08546fdf416884560cf497a34cc4eee95079a589
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
2016-09-14 08:45:45 +03:00
Vinayak Chettimada
190ac96fad Bluetooth: ATT: Remove unnecessary call to BT_ASSERT
Change-id: Ic8038392e540445b718beb05a3375aaa6a50ad61
Signed-off-by: Vinayak Chettimada <vinayak.kariappa.chettimada@nordicsemi.no>
2016-09-14 08:45:45 +03:00
Carles Cufi
80d1fba9e9 Bluetooth: HCI: Fix the length of supported commands
The length of the commands array in the return parameters of
the HCI Read Local Supported Commands event is 64 bytes
according to the spec. This was mistakenly set as 36 bytes due
to the fact that only 36 out of the 64 bytes currently contain
meaningful data. The actual array as received from the driver
will always be 64 bytes however, and is therefore sized
accordingly.

Change-Id: Iee7f1fc18045dff96efcc808fd81661eced37b03
Signed-off-by: Carles Cufi <carles.cufi@nordicsemi.no>
2016-09-14 08:45:45 +03:00
Genaro Saucedo Tejada
4dc8078435 fix: net samples no longer include unneeded 802.15.4 files
Some samples were including nullsec.c, simplerdc.c and
framer-nullmac.c, those files are not needed but introduce some
symbol dependencies, causing link to fail when optimization is not
-Os, e.g. when compiling with CONFIG_DEBUG.

Change-Id: Id227470a4517e8e2c3b9af942b0893783075cd40
Signed-off-by: Genaro Saucedo Tejada <genaro.saucedo.tejada@intel.com>
2016-09-12 12:29:09 +00:00
Jukka Rissanen
33d92af1cf net: Initial trickle algorithm support for legacy IP stack
This commit only provides the Trickle algorithm support.
Some other entity must call its functions in order to be
useful.

Fixes: ZEP-627

Change-Id: Ice1fcfe9c57269309eeab06eab000622662e2929
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-09-12 02:00:12 +00:00
Vinicius Costa Gomes
f0882c2c80 net/buf: Add missing line break in debug statement
Without this line break, when CONFIG_NET_BUF_DEBUG is enabled, the
output may get confusing.

Change-Id: Ic467511f1dbbd283710f51ef14f94e0269c7c0ea
Signed-off-by: Vinicius Costa Gomes <vinicius.gomes@intel.com>
2016-09-08 11:29:29 +00:00
Jaganath Kanakkassery
028bf3fb88 Bluetooth: RFCOMM: Modify bt_rfcomm_dlc() to return dlc
Currently bt_rfcomm_dlc() is returning error code and dlc is returned
as output param. Since caller does not need to check error, it can
return NULL if some error happens

Change-Id: I86e85b67545edb960b4b745267e6645017373bf6
Signed-off-by: Jaganath Kanakkassery <jaganathx.kanakkassery@intel.com>
2016-09-07 07:22:38 +00:00
Jaganath Kanakkassery
2df4bf6237 Bluetooth: RFCOMM: Implement TX flow control
Data sent by user will be queued in a FIFO. A TX fiber will be
started for each DLC which process this FIFO and write to L2CAP.
Fiber will sleep in two scenarios - no buffer in FIFO, no TX
credit. Credit is handled using semaphore. So if credit is 0
then fiber will wait on semaphore and will be scheduled when
it receives credit.

Change-Id: Id6e796eed594b28d6fb6e4259d3ed52634db9335
Signed-off-by: Jaganath Kanakkassery <jaganathx.kanakkassery@intel.com>
2016-09-07 07:22:32 +00:00
Vinayak Chettimada
d72b06da56 Bluetooth: GATT: Fix ccc cfg leak
ccc cfg is allocated when a peer updates a ccc value. This
fix will retain a cfg only if the new value is not default.

Change-id: I586082818145e43c771a6fccdb0bf2b3cecdd30c
Signed-off-by: Vinayak Chettimada <vinayak.kariappa.chettimada@nordicsemi.no>
2016-09-07 05:19:45 +00:00
Vinayak Chettimada
73808e25d6 Bluetooth: GAP: Support multiple peripheral role connections
Fix the use of BT_DEV_KEEP_ADVERTISING and BT_DEV_ADVERTISING
so as to permit multiple peripheral role connections if the
controller supports Bluetooth Spec. v4.2 LE Topology.

Change-Id: Ia363181754cb788c13e9050e5fe5416201593c07
Signed-off-by: Vinayak Chettimada <vinayak.kariappa.chettimada@nordicsemi.no>
2016-09-07 08:17:26 +03:00
Carles Cufi
49583b10d0 Bluetooth: HCI: Rename cmd complete struct
For consistency, add the bt_ prefix to
hci_evt_cmd_complete.

Jira: ZEP-726

Change-Id: I0deb9f12913991bf52ccffc8c85b86c83da1c045
Signed-off-by: Carles Cufi <carles.cufi@nordicsemi.no>
2016-09-07 08:17:26 +03:00
Luiz Augusto von Dentz
4f418a6b42 Bluetooth: GATT: Fix unaligned accesses
Use net_buf helper whenever accessing data by reference.

Change-Id: I3c7eb3af33a3d22741f73c094fb4a39e3e3d3440
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
2016-09-07 08:17:26 +03:00
Kaustav Dey Biswas
68e58af67e Bluetooth: UUID: Add 32bit UUID support
This adds helper support for handling 32bit UUIDs

Change-Id: I4874b5f092bdbe30039b8031485bf856e4268f2a
Signed-off-by: Kaustav Dey Biswas <kaustav.d.biswas@intel.com>
2016-09-07 08:17:26 +03:00
Johan Hedberg
3b61beca20 Bluetooth: GATT: Fix unaligned access to CCC value
The CCC value behind the 'buf' pointer in bt_gatt_attr_write_ccc() may
not be appropriately aligned. It should therefore be accessed with
sys_get_le16() instead of sys_le16_to_cpu(). This also eliminates the
need of a separate uint16_t helper variable in the function.

Change-Id: I93d50f894e877f25ec6ed2f576cf6bf6d440190b
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
2016-09-07 08:17:26 +03:00
Vinayak Chettimada
1553ccc492 Bluetooth: Add LE read supported states
To fully support BT Spec. v4.2 LE Topology use LE read supported
states HCI command to find the supported states in the
controller.

Change-id: I6b4cf4cbefdff44e51bb0a4242e0aef3755f43db
Signed-off-by: Vinayak Chettimada <vinayak.kariappa.chettimada@nordicsemi.no>
2016-09-07 08:17:26 +03:00
Jaganath Kanakkassery
ca938e0dcd Bluetooth: RFCOMM: Fix BT_RFCOMM_BUF_SIZE to include FCS and len
Profiles uses this helper to allocate net buf, so it should include
2 byte length in RFCOMM header and FCS which will be appended in the
tail by RFCOMM.

Change-Id: I0118eb9b0e0ab1daa9267c165af62bb50f1575d9
Signed-off-by: Jaganath Kanakkassery <jaganathx.kanakkassery@intel.com>
2016-09-07 08:17:26 +03:00
Jaganath Kanakkassery
6ffbf795ce Bluetooth: RFCOMM: Introduce Kconfig for max L2CAP MTU
Intorduces CONFIG_BLUETOOTH_RFCOMM_L2CAP_MTU which sets default as
CONFIG_BLUETOOTH_L2CAP_IN_MTU since it will make sure that RFCOMM
frames can be fit in ACL buffer to avoid fragmentation and at the
same time profiles can utilize the size of ACL buffer while configuring
RFCOMM MTU.

Once fragementation is handled, this can be configured to higher values
based on the profiles supported and its L2CAP PDU size requirement.

The maximum value possible is 32676 which is max RFCOMM frame size
given in the spec.

Change-Id: I57e178ea4da846243067c3e072d1f4c5536a3ee3
Signed-off-by: Jaganath Kanakkassery <jaganathx.kanakkassery@intel.com>
2016-09-07 08:17:26 +03:00
Szymon Janc
68adceed5e Bluetooth: Move reading extended features to BR/EDR section of init
Those are needed only for BR/EDR and in fact was read was never issued
on LE only system due to pages count being 1 in such case.

Change-Id: I8facb77edb9cd03b392034423d8bb261f685b725
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
2016-09-07 08:17:26 +03:00
Jaganath Kanakkassery
6198f07637 Bluetooth: RFCOMM: Introduce helper to create rfcomm pdu
Profiles can use this helper to create buffer which reserves the
headroom for rfcomm, l2cap and acl headers

Change-Id: I22f97b54423d66fe0c133a8e9903b652fb6a6854
Signed-off-by: Jaganath Kanakkassery <jaganathx.kanakkassery@intel.com>
2016-09-07 08:17:26 +03:00
Vinayak Chettimada
f77d06ae09 Bluetooth: GATT: Fix notifications to non-bonded peers
GATT implementation fixed so that two or more non-bonded peers
can now independently enable/disable notification and/or
indications; and subsequently receive them too.

Change-id: Ifae78297b6ba13f8ea3db58694302bb7f3449e97
Signed-off-by: Vinayak Chettimada <vinayak.kariappa.chettimada@nordicsemi.no>
2016-09-07 08:17:26 +03:00
Johan Hedberg
91c7d938e3 Bluetooth: Kconfig: Be consistent with the use of tabs vs spaces
The most common convention is a space between "config" and the
variable name.

Change-Id: I0f97d5fee56b7db1808dcf07f21016b11f821fa3
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
2016-09-07 08:17:26 +03:00