Re: Help needed to setup 6loble using IPSP sample


Vakul Garg <vakul.garg@...>
 

Hi Johan

-----Original Message-----
From: Johan Hedberg [mailto:johan.hedberg@intel.com]
Sent: Tuesday, November 21, 2017 1:56 PM
To: Vakul Garg <vakul.garg@nxp.com>
Cc: zephyr-users@lists.zephyrproject.org
Subject: Re: [Zephyr-users] Help needed to setup 6loble using IPSP sample

Hi Vakul,

On Tue, Nov 21, 2017, Vakul Garg wrote:
Have you verified that the handle value 32 is valid, i.e. the
controller gave that in a prior LE Connection Complete event?
The linux console shows up connection handle 32 has been connected.
The connection handle is completely local to the device, so what you have on
the Linux side has no relevance to Zephyr (i.e. the handles can, and often will
be different).

[bt] [ERR] le_remote_feat_complete: Unable to lookup conn for handle
32 [bt] [ERR] hci_acl: Unable to find conn for handle 32 [bt] [ERR]
le_data_len_change: Unable to lookup conn for handle 32
I don't see any connection complete event in the logs prior to this. So it's not a
surprise that the host complains of an unknown handle value, i.e. this looks
like some kind of misbehavior by the controller.
My BLE controller firmware experts told me that privacy feature has some errata on my hardware.
I encountered the error even when zephyr was compiled without CONFIG_BT_PRIVACY=y.
So, I patched the hci_core.c code like this to make it work.
Can you please comment?

diff --git a/subsys/bluetooth/host/hci_core.c b/subsys/bluetooth/host/hci_core.c
index e02d5ff6a..e00ad5f37 100644
--- a/subsys/bluetooth/host/hci_core.c
+++ b/subsys/bluetooth/host/hci_core.c
@@ -3532,7 +3532,8 @@ static int le_set_event_mask(void)
mask |= BT_EVT_MASK_LE_ADVERTISING_REPORT;

if (IS_ENABLED(CONFIG_BT_CONN)) {
- if (BT_FEAT_LE_PRIVACY(bt_dev.le.features)) {
+ if (IS_ENABLED(CONFIG_BT_PRIVACY) &&
+ BT_FEAT_LE_PRIVACY(bt_dev.le.features)) {
mask |= BT_EVT_MASK_LE_ENH_CONN_COMPLETE;
} else {
mask |= BT_EVT_MASK_LE_CONN_COMPLETE;
@@ -3673,7 +3674,8 @@ static int le_init(void)
}

#if defined(CONFIG_BT_SMP)
- if (BT_FEAT_LE_PRIVACY(bt_dev.le.features)) {
+ if (IS_ENABLED(CONFIG_BT_PRIVACY) &&
+ BT_FEAT_LE_PRIVACY(bt_dev.le.features)) {
struct bt_hci_rp_le_read_rl_size *rp;
struct net_buf *rsp;




Johan

Join users@lists.zephyrproject.org to automatically receive all group messages.