Received: by 2002:a05:7412:b995:b0:f9:9502:5bb8 with SMTP id it21csp6722976rdb; Tue, 2 Jan 2024 11:00:53 -0800 (PST) X-Google-Smtp-Source: AGHT+IGs00FW4gUcby3yH2t1uGpZCzui81G0WonPMnCOzQMrqMFL2iNYK7I5zxkF9OZhlpltFC2q X-Received: by 2002:a17:902:d2cc:b0:1cf:f868:5b8c with SMTP id n12-20020a170902d2cc00b001cff8685b8cmr22480225plc.8.1704222052819; Tue, 02 Jan 2024 11:00:52 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1704222052; cv=none; d=google.com; s=arc-20160816; b=ggsiLd64ExsrDxCRj0AodQFrtW60sY8m9qYSZcn949+JgEqXCPTWeY1wptKsew5+7g uOfGJCQ9B8g2UFEzAOKEalTnzq+lgDGAmKtTESxuhK5dgfrNj1Ur8HzT+pBE6n89r205 FfktE/NDHXM9mICvPLgvQjMcU1NHlYocCFEVEZoEFBHQfNW3MLmsNh5Xk9jc534yAfQk o6pab5cUcjK9P/wXYcAKFIZ/SAzEKmT6S6DmQLF8q8K4d0GxbRgdnAf8Eb/E1+SEC+Md wSY9RluAMiNX+51QT/wP+O02w3lq6/kWd3Ej7CZQg3feDsOspoeZXqEVwHpfJeZHugOE SCsQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from; bh=gooZhh7JPQWGYYCXVr4EkSSJBp4Ez14i+QXmjsCifbA=; fh=3AqDzvZy8BuFcn015+g5AB3sGQnZc/edyFwniXfpO+U=; b=mfp0wm8DVue+i2bz9lbg8A9oi5jJZd2LM1vWsGuVj32BoLTSnc3y1YPNpLy8DurHPN w/Z9SSU6z5pz+oPcvNB/IFp55Jb6104sEWdKx+FLuHgLDty6UauaxhjjX9sybHKQhRXW bRVezAjRAidPARNTVRDCnyXGkv5C1PBjIwVpQI3gVuCBzxUz65xigA9MKMzXqQ8Zu4UP wXE6jjvioRuIAQ3pODRVCEVyUvQOD7/mZeKs0Yu2XU8F3/KYDBxiathKvd2tbh5qUFUS LaKkI1Oi+baBDuM2VzM6fMMhd+880d/ZOgSCotJc5/6ZBPoP7EHmoBiuuF3KrvZ7FQt0 aNTA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-bluetooth+bounces-830-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="linux-bluetooth+bounces-830-linux.lists.archive=gmail.com@vger.kernel.org" Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [2604:1380:45e3:2400::1]) by mx.google.com with ESMTPS id l17-20020a170902f69100b001d3e44faf1bsi20692787plg.242.2024.01.02.11.00.52 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jan 2024 11:00:52 -0800 (PST) Received-SPF: pass (google.com: domain of linux-bluetooth+bounces-830-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) client-ip=2604:1380:45e3:2400::1; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-bluetooth+bounces-830-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="linux-bluetooth+bounces-830-linux.lists.archive=gmail.com@vger.kernel.org" Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sv.mirrors.kernel.org (Postfix) with ESMTPS id 76324281594 for ; Tue, 2 Jan 2024 19:00:52 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 46863168A6; Tue, 2 Jan 2024 18:59:46 +0000 (UTC) X-Original-To: linux-bluetooth@vger.kernel.org Received: from mout-p-101.mailbox.org (mout-p-101.mailbox.org [80.241.56.151]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5A3F516415; Tue, 2 Jan 2024 18:59:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=v0yd.nl Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=v0yd.nl Received: from smtp1.mailbox.org (smtp1.mailbox.org [IPv6:2001:67c:2050:b231:465::1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mout-p-101.mailbox.org (Postfix) with ESMTPS id 4T4Mbc4QNnz9sQb; Tue, 2 Jan 2024 19:59:40 +0100 (CET) From: =?UTF-8?q?Jonas=20Dre=C3=9Fler?= To: Marcel Holtmann , Johan Hedberg , Luiz Augusto von Dentz Cc: =?UTF-8?q?Jonas=20Dre=C3=9Fler?= , linux-bluetooth@vger.kernel.org, linux-kernel@vger.kernel.org, netdev@vger.kernel.org Subject: [PATCH 3/5] Bluetooth: hci_event: Remove limit of 2 reconnection attempts Date: Tue, 2 Jan 2024 19:59:30 +0100 Message-ID: <20240102185933.64179-4-verdre@v0yd.nl> In-Reply-To: <20240102185933.64179-1-verdre@v0yd.nl> References: <20240102185933.64179-1-verdre@v0yd.nl> Precedence: bulk X-Mailing-List: linux-bluetooth@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Rspamd-Queue-Id: 4T4Mbc4QNnz9sQb Since commit 4c67bc74f016b0d360b8573e18969c0ff7926974, we retry connecting later when we get a "Command Disallowed" error returned by "Create Connection". In this commit the intention was to retry only once, and give up if we see "Command Disallowed" again on the second try. This made sense back then when the retry was initiated *only* from the "Connect Complete" event. If we received that event, we knew that now the card now must have a "free slot" for a new connection request again. These days we call hci_conn_check_pending() from a few more places though, and in these places we can't really be sure that there's a "free slot" on the card, so the second try to "Create Connection" might fail again. Deal with this by being less strict about these retries and try again every time we get "Command Disallowed" errors, removing the limitation to only two attempts. Since this can potentially cause us to enter an endless cycle of reconnection attempts, we'll add some guarding against that with the next commit. Signed-off-by: Jonas Dreßler --- net/bluetooth/hci_event.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c index e8b4a0126..e1f5b6f90 100644 --- a/net/bluetooth/hci_event.c +++ b/net/bluetooth/hci_event.c @@ -2323,12 +2323,13 @@ static void hci_cs_create_conn(struct hci_dev *hdev, __u8 status) if (status) { if (conn && conn->state == BT_CONNECT) { - if (status != HCI_ERROR_COMMAND_DISALLOWED || conn->attempt > 2) { + if (status == HCI_ERROR_COMMAND_DISALLOWED) { + conn->state = BT_CONNECT2; + } else { conn->state = BT_CLOSED; hci_connect_cfm(conn, status); hci_conn_del(conn); - } else - conn->state = BT_CONNECT2; + } } } else { if (!conn) { -- 2.43.0