static void read_encryption_key_size_complete_after_key_refresh(
uint8_t status, uint16_t handle, uint8_t key_size) {
+ if (status == HCI_ERR_INSUFFCIENT_SECURITY) {
+ /* If remote device stop the encryption before we call "Read Encryption Key
+ * Size", we might receive Insufficient Security, which means that link is
+ * no longer encrypted. */
+ HCI_TRACE_WARNING("%s encryption stopped on link: 0x%02x", __func__,
+ handle);
+ return;
+ }
+
if (status != HCI_SUCCESS) {
HCI_TRACE_WARNING("%s: disconnecting, status: 0x%02x", __func__, status);
btsnd_hcic_disconnect(handle, HCI_ERR_PEER_USER);
static void read_encryption_key_size_complete_after_encryption_change(
uint8_t status, uint16_t handle, uint8_t key_size) {
+ if (status == HCI_ERR_INSUFFCIENT_SECURITY) {
+ /* If remote device stop the encryption before we call "Read Encryption Key
+ * Size", we might receive Insufficient Security, which means that link is
+ * no longer encrypted. */
+ HCI_TRACE_WARNING("%s encryption stopped on link: 0x%02x", __func__,
+ handle);
+ return;
+ }
+
if (status != HCI_SUCCESS) {
HCI_TRACE_WARNING("%s: disconnecting, status: 0x%02x", __func__, status);
btsnd_hcic_disconnect(handle, HCI_ERR_PEER_USER);