OSDN Git Service

A work around fix for incorrect controller response.
authoranitha3x <anithax.h.chandrasekar@intel.com>
Tue, 16 Oct 2018 08:52:07 +0000 (14:22 +0530)
committerChih-Wei Huang <cwhuang@linux.org.tw>
Thu, 14 Nov 2019 04:21:27 +0000 (12:21 +0800)
Reason: The controller did not send correct response
for read remote extended features for "page 1" request.
Since lmp extended features ssp was not true, the sm4
was not enabled. Therefore host did not initiate
authentication request. When L2CAP AVDTP connection
was established, the controller returned disconnect
complete with authentication failed reason.

Fix: Provided a retry of read remote extended features
request from host, when response for 'page 1' was
incorrect. This enabled authentication from host and
hence L2CAP AVDTP connection was successful.
Revert the changes, once contoller fix is available

Tracked-On: OAM-69566

Signed-off-by: anitha3x <anithax.h.chandrasekar@intel.com>
stack/btm/btm_acl.cc

index ee2530a..c59ec2b 100644 (file)
@@ -936,9 +936,16 @@ void btm_process_remote_ext_features(tACL_CONN* p_acl_cb,
       BTM_TRACE_ERROR("%s: page=%d unexpected", __func__, page_idx);
       break;
     }
-    memcpy(p_dev_rec->feature_pages[page_idx],
-           p_acl_cb->peer_lmp_feature_pages[page_idx],
-           HCI_FEATURE_BYTES_PER_PAGE);
+    if ((page_idx == 1) && !HCI_SSP_HOST_SUPPORTED(
+        p_acl_cb->peer_lmp_feature_pages[page_idx])) {
+      BTM_TRACE_ERROR("Not received response for Page 1, retry");
+      btm_read_remote_ext_features(handle, page_idx);
+      return;
+    } else {
+      memcpy(p_dev_rec->feature_pages[page_idx],
+             p_acl_cb->peer_lmp_feature_pages[page_idx],
+             HCI_FEATURE_BYTES_PER_PAGE);
+    }
   }
 
   if (!(p_dev_rec->sec_flags & BTM_SEC_NAME_KNOWN) ||