Received: by 2002:a05:6a10:f347:0:0:0:0 with SMTP id d7csp158747pxu; Wed, 25 Nov 2020 16:10:47 -0800 (PST) X-Google-Smtp-Source: ABdhPJySssS7Cx8Oe0LQdEzyGeSvzjZXPriW3Vtd9kybYSlZfz68R4gE7Y+FycMPPRjr7kLwTPKO X-Received: by 2002:a50:8ada:: with SMTP id k26mr135097edk.281.1606349447697; Wed, 25 Nov 2020 16:10:47 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1606349447; cv=none; d=google.com; s=arc-20160816; b=eZgVP95dRqVJp6hetLnY9P3zDToYHRNG+bIPawMaGl9kDTXtPTN/bEO7mgmhepDeac 2aXBVpsyLnPDM1MBivODutZaNyVNVN+iQMZYJ1VY+2d4Oqgc40+5OOJPHo7ICst0tnFQ remYcVi3pO6PuTVqa9pIYU14gRi5tr4DT9RKhtuJGGJ9moxaiTgbN1JsGBBjLa3OqAeL //yJVgaXqz1Z/d+TYtosDTXBmhcaW07H9kk2Nv3csD2VKsW77TcJeCL/9NA6MFDBuZ3H +cV0EoGcaxFy7JTKDAjX7Tq2z5UcyTwi/LIE4+rWepGLSl/+HuNQgUiZz7Gxnv2b6ipX 7qgQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=cp3XtvMYP1ONxD1/gH7wPTDyUI7+riu9vnsjYjRg5ws=; b=jr+aXEoJ7xJNf9kzLctSdSIebdPj1aj8u1JYEvPYGEmDraqzS1F4qHhfgBT4znzhAM ie8lVlKJUWx3LZL2NMkJeOxILCkOgqG3l2FNfMA7cdKrqxLLshe073aHkEYaAGcApBkP 8VALYDbbZX91c60sHRvHLwKJF9+erKH6hPHKN9LnJ24M51WMsK2qGFy2UVmOUncOfoEd moObFaAGlQvRs8W52Rs2cC57hf2gsuC38qWgVlqgoPqtn35ZPqBpyiC8igu33oT+vyoC Q6ghQEAKaHCjvgLXDyxORnsWWjLjyXT7iHSnmYkkfifAhWwpCVBt05yW/5UwGfVB0+Zm zJ1g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=IkVo0vBI; spf=pass (google.com: domain of linux-bluetooth-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-bluetooth-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id rl11si2310111ejb.348.2020.11.25.16.10.10; Wed, 25 Nov 2020 16:10:47 -0800 (PST) Received-SPF: pass (google.com: domain of linux-bluetooth-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=IkVo0vBI; spf=pass (google.com: domain of linux-bluetooth-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-bluetooth-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728249AbgKZAAX (ORCPT + 99 others); Wed, 25 Nov 2020 19:00:23 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44460 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728243AbgKZAAX (ORCPT ); Wed, 25 Nov 2020 19:00:23 -0500 Received: from mail-ej1-x643.google.com (mail-ej1-x643.google.com [IPv6:2a00:1450:4864:20::643]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 217BAC0613D4 for ; Wed, 25 Nov 2020 16:00:23 -0800 (PST) Received: by mail-ej1-x643.google.com with SMTP id hb22so34921ejb.12 for ; Wed, 25 Nov 2020 16:00:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=cp3XtvMYP1ONxD1/gH7wPTDyUI7+riu9vnsjYjRg5ws=; b=IkVo0vBIiiWyfSkA/G5uKhHL2J9yjsRyR8ISwvcjhrASZ9PZhL8bAhoX8nnyz95/xw YemSKdjwZa8tqbdyG+/GOwtHtFsrTiz+NRXpBiKNVYm612k0smKaSUQNBv0FqTKTr1Pa FkbSQ1+miZ71XOdnhS1d9FvZFfOB/n4uW4nK4= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=cp3XtvMYP1ONxD1/gH7wPTDyUI7+riu9vnsjYjRg5ws=; b=Z+30elR4gyFRR4gjMTngmNINJk1CW3ocKkUqQfCz1gbWte9ZUMV3tBkj5WiuVchVAm gCB6jdSRuTxRnAJ2DWJgmmeTlJSdelzFqDw61slL/o9K1rnn478c3rvBI0+H7rdaRM8y j4zwt5L4irjTm7CaOTM98vswhBc6I3QJjyBo7vXEbVymU0ZgLo3TPfjKYt4vSTFQZP7z 8LNq/DIKlwcdXySIEXpPLHebCGhnSXnFe5S6pzax6jZA1N7p0I63e76ABmoRiUdlmWEq X1EihNsCFIjcWMPExoqpYTVhxQM349OL1ntmDT5azn1OG907hUoIMAniWxR9DX6aCv0F xmUg== X-Gm-Message-State: AOAM530St+dhbMAx4NWtChZJmVt1LtohZha+qoCOVxYCaVSyZ7np39xG InAXTPPLMgMa4kF77otRCal6XTu/z/1+0g== X-Received: by 2002:a17:906:ae8d:: with SMTP id md13mr405321ejb.300.1606348821255; Wed, 25 Nov 2020 16:00:21 -0800 (PST) Received: from mail-wr1-f50.google.com (mail-wr1-f50.google.com. [209.85.221.50]) by smtp.gmail.com with ESMTPSA id a10sm2181168edn.77.2020.11.25.16.00.19 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 25 Nov 2020 16:00:20 -0800 (PST) Received: by mail-wr1-f50.google.com with SMTP id 23so185319wrc.8 for ; Wed, 25 Nov 2020 16:00:19 -0800 (PST) X-Received: by 2002:adf:a451:: with SMTP id e17mr376051wra.99.1606348819469; Wed, 25 Nov 2020 16:00:19 -0800 (PST) MIME-Version: 1.0 References: <20201124010906.340433-1-sonnysasaka@chromium.org> <92C0EFAB-EDF1-4EDB-ADE7-FF734928C8AE@holtmann.org> In-Reply-To: <92C0EFAB-EDF1-4EDB-ADE7-FF734928C8AE@holtmann.org> From: Sonny Sasaka Date: Wed, 25 Nov 2020 16:00:07 -0800 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH] Bluetooth: Cancel Inquiry before Create Connection To: Marcel Holtmann Cc: BlueZ development , Abhishek Pandit-Subedi Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-bluetooth@vger.kernel.org Hi Marcel, On Wed, Nov 25, 2020 at 6:43 AM Marcel Holtmann wrote: > > Hi Sonny, > > > Many controllers do not allow HCI Create Connection while it is doing > > Inquiry. This patch adds Inquiry Cancel before Create Connection in this > > case to allow the controller to do Create Connection. User space will be > > aware of this Inquiry cancellation and they may issue another discovery > > request afterwards. > > > > Sample Command Disallowed response of HCI Create Connection: > > < HCI Command: Inquiry (0x01|0x0001) plen 5 > > Access code: 0x9e8b33 (General Inquiry) > > Length: 10.24s (0x08) > > Num responses: 0 > >> HCI Event: Command Status (0x0f) plen 4 > > Inquiry (0x01|0x0001) ncmd 2 > > Status: Success (0x00) > > < HCI Command: Create Connection (0x01|0x0005) plen 13 > > Address: XX:XX:XX:XX:XX:XX > > Packet type: 0xcc18 > > Page scan repetition mode: R2 (0x02) > > Page scan mode: Mandatory (0x00) > > Clock offset: 0x0000 > > Role switch: Allow slave (0x01) > >> HCI Event: Command Status (0x0f) plen 4 > > Create Connection (0x01|0x0005) ncmd 1 > > Status: Success (0x00) > >> HCI Event: Connect Complete (0x03) plen 11 > > Status: Command Disallowed (0x0c) > > Handle: 65535 > > Address: XX:XX:XX:XX:XX:XX > > Link type: ACL (0x01) > > Encryption: Disabled (0x00) > > > > Reviewed-by: Abhishek Pandit-Subedi > > Signed-off-by: Sonny Sasaka > > > > --- > > net/bluetooth/hci_conn.c | 11 +++++++++++ > > 1 file changed, 11 insertions(+) > > > > diff --git a/net/bluetooth/hci_conn.c b/net/bluetooth/hci_conn.c > > index 4f1cd8063e720..b41ad08f8d411 100644 > > --- a/net/bluetooth/hci_conn.c > > +++ b/net/bluetooth/hci_conn.c > > @@ -233,6 +233,17 @@ static void hci_acl_create_connection(struct hci_conn *conn) > > else > > cp.role_switch = 0x00; > > > > + /* Many controllers disallow HCI Create Connection while it is doing > > + * HCI Inquiry. So we cancel the Inquiry first before issuing HCI Create > > + * Connection. This may cause the MGMT discovering state to become false > > + * without user space's request but it is okay since the MGMT Discovery > > + * APIs do not promise that discovery should be done forever. Instead, > > + * the user space monitors the status of MGMT discovering and it may > > + * request for discovery again when this flag becomes false. > > + */ > > + if (test_bit(HCI_INQUIRY, &hdev->flags)) > > + hci_send_cmd(hdev, HCI_OP_INQUIRY_CANCEL, 0, NULL); > > + > > while this seems acceptable, what happens when we have interleaved discovery where we toggle between BR/EDR inquiry and LE scanning. Are you sure we not better cancel the mgmt discovery completely. Only Inquiry is preventing Create Connection, so we don't need to overcomplicate it by stopping the mgmt discovery completely. In the case of interleaved discovery, the LE discovery will linger for a little bit before eventually being disabled and the situation restarts at a good state. Not perfect but simple, clean, and fixes the issue. > > Regards > > Marcel >