Received: by 2002:a05:7412:3b8b:b0:fc:a2b0:25d7 with SMTP id nd11csp979007rdb; Fri, 9 Feb 2024 06:59:29 -0800 (PST) X-Forwarded-Encrypted: i=3; AJvYcCVo+AGCkjqj1Z9QnIsvXHIGbCt4n1tqXxTx4SKV3qiXRXfNsPRXaPJ+hHq7tzjXC6SrTB8TWs8PRr/4ITWVt74ivRZ9O4WbAuKNgPFsig== X-Google-Smtp-Source: AGHT+IGHoR9yJISH43ZGAdbLbrSsIYRdVOdK3Cl6+2NdC4TXTbCBzpF3bugJB3oMyD6QoxXQqKIS X-Received: by 2002:aa7:c6d8:0:b0:560:3bcc:a5c0 with SMTP id b24-20020aa7c6d8000000b005603bcca5c0mr1612690eds.4.1707490769378; Fri, 09 Feb 2024 06:59:29 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1707490769; cv=pass; d=google.com; s=arc-20160816; b=v8gKtSMh3JonZoG1tDvIkHOZozgFHmmcK4nldg6zvJw6ORfKZQtdDvO71pzATUKsYp ZbtpkIHg93RE3z+6Idd3TdAk4Ewnz1RqFS/OnPsKSQlM5I4oUgerztZ/qEVh+6qF/UmR q2NxOgT2amU6shFWR5sQEt4x/9dY19q3J6m/KFc8tddkrF5yeo4LfBPf6cGR8RkGwxZ+ mlzN+5TeeVACFWalJdUo6OzEs4vRR2xltPM4d0WFTUUb+p2hNSBSludN5KxSOKb+xXVX DIdTOZAfO0Tyx7lmAxBqFrwHdOq4cKv25j8SkF1uiw+/KKzU9azCth32+pgrSfgdqv5e tSBw== ARC-Message-Signature: i=2; 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:message-id:date:subject:to:from :dkim-signature; bh=c2q7tQ1TG4hNxpIKUh7oxpZsvECnxvXqaKYzpr2ZN7o=; fh=NCivv8LEitRBsFK78RVInmYgs8x+n7qPEF2ZhxNol9g=; b=Jr1/yw1Zc/2LkO9MTOhtyf8qlUPp4BKSF60xuKv5WOgczE4GG/zLAW0Pb7MwxA2iWj 7iZZANLFMGGP/M5d9vMTrnuo8HzjkTSYbsvn8E4NAaXjcjadSA/zYOSf2ynUA9omy7B2 Msq+cfcyUcmIq1+mfRb0v9Fhq/EeFsLxDuXXCtATIcKC86Y/cWjWvrQMx18WZZU78yQ+ 580IYnJ/oZwXjnbyJ+ytiKOcD/hbLasHb6WP2gwUae/Zo9iynxzxccBVuSncN6UILZTQ QOUBAQ60c7wpsu7auHGRj+aoInRHo8hAOVmfbP3bIInCMlz3v70i8LJYMHRVbhVq0Y5T LPug==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=Mf1LjGuZ; arc=pass (i=1 spf=pass spfdomain=gmail.com dkim=pass dkdomain=gmail.com dmarc=pass fromdomain=gmail.com); spf=pass (google.com: domain of linux-bluetooth+bounces-1712-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) smtp.mailfrom="linux-bluetooth+bounces-1712-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com X-Forwarded-Encrypted: i=2; AJvYcCUaQtZXHFkMJ0LD9VKO6ejezz+hxnXD59Utzgr/hfFaqUqBWRN2/zYTHZDA9UAbbFhj8C6uwjSQRu1IfJfdQ/erps84E8HI2TJcFZob5Q== Return-Path: Received: from am.mirrors.kernel.org (am.mirrors.kernel.org. [2604:1380:4601:e00::3]) by mx.google.com with ESMTPS id b70-20020a509f4c000000b0056017efdbecsi969555edf.515.2024.02.09.06.59.29 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 09 Feb 2024 06:59:29 -0800 (PST) Received-SPF: pass (google.com: domain of linux-bluetooth+bounces-1712-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) client-ip=2604:1380:4601:e00::3; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=Mf1LjGuZ; arc=pass (i=1 spf=pass spfdomain=gmail.com dkim=pass dkdomain=gmail.com dmarc=pass fromdomain=gmail.com); spf=pass (google.com: domain of linux-bluetooth+bounces-1712-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) smtp.mailfrom="linux-bluetooth+bounces-1712-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com 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 am.mirrors.kernel.org (Postfix) with ESMTPS id 25E261F26FD6 for ; Fri, 9 Feb 2024 14:59:29 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 4CCA36D1BA; Fri, 9 Feb 2024 14:59:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Mf1LjGuZ" X-Original-To: linux-bluetooth@vger.kernel.org Received: from mail-ua1-f49.google.com (mail-ua1-f49.google.com [209.85.222.49]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4C1B336AE7 for ; Fri, 9 Feb 2024 14:59:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.222.49 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707490762; cv=none; b=py8IwvP11wRoWgKAyO03LXW4A0XMgUxfzarWQOV7SM88IX0K/6mEIsOdSRlarcNSPkg0/z8Qns/QBQMmeLQQX0ZsgmL9lb6xWTmnddc8vM41cL5Bwr5C7isCycAbDohYTbiRwVtnUgjLDa/vBf/Q0VoRDyPqGSnm4NVVbujwlFs= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707490762; c=relaxed/simple; bh=RoATdOmJbDk9lrGtQq/f7oUJyMn08wYFoa+EP3m5fKc=; h=From:To:Subject:Date:Message-ID:MIME-Version; b=ZCJfGS4z1+bbHJ7a29AeAZsRPynvsbj1cFLp5ZqaoiQKnTq8ExXA9AEUUGppaMMdiMOwNZhE6sl6/4r1mrwsOkE84Q+wIkLk++suYlyjWRhYkUt0NnDjhEFJfkvxH4P0j5riGsEFB0xYNgN6X/Aplsd2nlaf7Qe37VhLU7RuEfw= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=Mf1LjGuZ; arc=none smtp.client-ip=209.85.222.49 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-ua1-f49.google.com with SMTP id a1e0cc1a2514c-7d60ee03b54so360041241.2 for ; Fri, 09 Feb 2024 06:59:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1707490759; x=1708095559; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:from:to:cc:subject:date:message-id:reply-to; bh=c2q7tQ1TG4hNxpIKUh7oxpZsvECnxvXqaKYzpr2ZN7o=; b=Mf1LjGuZ3TSG0JQVAllWQ9I1mRpq0cSSE2aXsYMf/F5YC+n2vdpxdxuxYa1jIS0KYU 3jUXo88SVkn+M+LBOrRQL52ZJO17rO2kZ52PpxscqDFU/40Zq6yN5Wh/KZL6wfL62ppl q6SUrwRbb7jU/Am3edNcuZCaVST49Op5KI+q8WSns7FkXQ9hU4G/LbU4Cp8R31I42FdB 6t0SKYt9S+myhobunCvbTS/z7lj5JccX863ZNzdtkSTfhZSsmzRqIkq18gHKZT9QTWik WjJM2MqC/LlSW3Zk9jH2AhbsfmTsLYnbnyxV1deHI+AmYBz7QZmSOzSNNFjwkBddWu4q CqjQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1707490759; x=1708095559; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=c2q7tQ1TG4hNxpIKUh7oxpZsvECnxvXqaKYzpr2ZN7o=; b=BWeV0IkJengXzmXx0KoAz7DWteuzcOZzmPyb/aK21nmYrIVu8F5435511kgvvEwIvM W6HIKfVL5bT8nOO/lxYafh0ypdD3CtPbt0w5/P7GyhonP4GFF+HCYA98yg5N6LzAT8k5 iX2S2Ic/osji6LwKDJhziOyZIGL43ISDSat4mHYko5jQO6s+BAmbJlV8rgra2tOLSU6q UbsoYM38a6oB12aCy3My0RJdI3WccXcnVQcQ6Hjcb1tJ9sRdUfdL2xAHRvBlUnLBN3Ll X/R97z2y4JXBSEza2rdPXA0JIGoqHvhCQPpHbfu61zfitmqNF8PrN7eB0B7zXD7MpLqM RjvQ== X-Gm-Message-State: AOJu0YwmqFqsCo2L8BuKc5OYtuCtSrCJPm+3xu7AUntG9Wu5BalXiu7K 0PLiRBD63K1cjiuRcZTA06ZmYA3S7o3N4UPj4oUYfi/QDP9bbP6D17Ms5x/q X-Received: by 2002:a05:6102:1607:b0:46c:b7a8:4b59 with SMTP id cu7-20020a056102160700b0046cb7a84b59mr1905606vsb.23.1707490759388; Fri, 09 Feb 2024 06:59:19 -0800 (PST) Received: from lvondent-mobl4.. (071-047-239-151.res.spectrum.com. [71.47.239.151]) by smtp.gmail.com with ESMTPSA id fv8-20020a0561301a8800b007d51ebf573csm68510uab.7.2024.02.09.06.59.18 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 09 Feb 2024 06:59:18 -0800 (PST) From: Luiz Augusto von Dentz To: linux-bluetooth@vger.kernel.org Subject: [PATCH BlueZ v1] hog-lib: Don't destroy UHID device on detach Date: Fri, 9 Feb 2024 09:59:17 -0500 Message-ID: <20240209145917.3583663-1-luiz.dentz@gmail.com> X-Mailer: git-send-email 2.43.0 Precedence: bulk X-Mailing-List: linux-bluetooth@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit From: Luiz Augusto von Dentz This makes bt_hog_detach not to destroy UHID device which means the device node don't need to be recreated in case of reconnections which speeds up the process. Fixes: https://github.com/bluez/bluez/issues/737 --- profiles/input/hog-lib.c | 48 ++++++++++++++++++++-------------------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/profiles/input/hog-lib.c b/profiles/input/hog-lib.c index 7ff1ede3db35..67492a63eca3 100644 --- a/profiles/input/hog-lib.c +++ b/profiles/input/hog-lib.c @@ -1309,11 +1309,35 @@ static bool cancel_gatt_req(const void *data, const void *user_data) return g_attrib_cancel(hog->attrib, req->id); } +static void uhid_destroy(struct bt_hog *hog) +{ + int err; + struct uhid_event ev; + + if (!hog->uhid_created) + return; + + bt_uhid_unregister_all(hog->uhid); + + memset(&ev, 0, sizeof(ev)); + ev.type = UHID_DESTROY; + + err = bt_uhid_send(hog->uhid, &ev); + + if (err < 0) { + error("bt_uhid_send: %s", strerror(-err)); + return; + } + + hog->uhid_created = false; +} + static void hog_free(void *data) { struct bt_hog *hog = data; bt_hog_detach(hog); + uhid_destroy(hog); queue_destroy(hog->input, free); queue_destroy(hog->bas, (void *) bt_bas_unref); @@ -1823,29 +1847,6 @@ bool bt_hog_attach(struct bt_hog *hog, void *gatt) return true; } -static void uhid_destroy(struct bt_hog *hog) -{ - int err; - struct uhid_event ev; - - if (!hog->uhid_created) - return; - - bt_uhid_unregister_all(hog->uhid); - - memset(&ev, 0, sizeof(ev)); - ev.type = UHID_DESTROY; - - err = bt_uhid_send(hog->uhid, &ev); - - if (err < 0) { - error("bt_uhid_send: %s", strerror(-err)); - return; - } - - hog->uhid_created = false; -} - void bt_hog_detach(struct bt_hog *hog) { GSList *l; @@ -1879,7 +1880,6 @@ void bt_hog_detach(struct bt_hog *hog) queue_remove_all(hog->gatt_op, cancel_gatt_req, hog, destroy_gatt_req); g_attrib_unref(hog->attrib); hog->attrib = NULL; - uhid_destroy(hog); } int bt_hog_set_control_point(struct bt_hog *hog, bool suspend) -- 2.43.0