Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp2571918imu; Thu, 24 Jan 2019 15:31:25 -0800 (PST) X-Google-Smtp-Source: ALg8bN4/dNbipxMDYF/7XPtsd1BfQyzWivpxyW2nY9PTRSvTYC8grIdb/BxiRSofA7v/SlkD3EuH X-Received: by 2002:a63:d047:: with SMTP id s7mr7735535pgi.311.1548372685621; Thu, 24 Jan 2019 15:31:25 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1548372685; cv=none; d=google.com; s=arc-20160816; b=p9WpBSvJIp7C93r1ZBGQ+71So+ya5q2QHMiWs5jbuw5ao8IrR5JvxpWhMTmEksleRZ g4O1MwzgMeBy/miyTc4rFH9sWq10Xz8cCLoqNLKbgGSpEiTfVhoQdrHM2331V/xXvdkg kbhl5B0OZU2DBNEEcIhVMsl+acr0XmTJP6RHgL7P2CZhYpwdc4svbvmpjdexbdSIn0j2 B2tn3kpnrZ13ieL+6GjvCjsv+kkfAkMPvqNQ7oT4fuPRt/f8QLFXZua1xIKDZmf+p2Mf LHi0WTc6ffcDxwGKXX/GQyNOOWr4+WuByRNdKfVpUaFXJGNh83EfK5R4EztV6AjWTAI8 +WzQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:from:subject:references :mime-version:message-id:in-reply-to:date:dkim-signature; bh=dEGzE6ZUNinj7i2O6gc8hdUlWcvJ+gY38NNifJVHTbc=; b=lPDU0aTcdB9h3KpVDhmYLvwYu5OZI8LQ5i+zrww7QoRSqv3DQSf7HhM8qG6/ZgNSdX QgOhWWg//rhfdHSLeBYdLsd1Pdj9UVN1i1GXmqFgx1J7EhM23LE2xN3j3+9YQPx8WRL9 NY1kS/Apcj/l+gwe/AXf58HngPkx/mE4+0tFltsRr2TgkGUHbPHF89P2lg06C2QUslJO zYpbHpUIrNAecOt0tQ60+l+/nGdkd0kwRxfYIP7Vt7JyW9GPG2JmKo3HuxHGkk+aC+jV 8ipYVQaVsi5irESw3IeC+801KJMdXwdb7mm0x3A6DDWc6IsZDQKHWjwwBQK0FEnurjra HT/A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=shmD9xAr; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id bc3si22693011plb.130.2019.01.24.15.31.09; Thu, 24 Jan 2019 15:31:25 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=shmD9xAr; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728508AbfAXX2n (ORCPT + 99 others); Thu, 24 Jan 2019 18:28:43 -0500 Received: from mail-io1-f74.google.com ([209.85.166.74]:42943 "EHLO mail-io1-f74.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728367AbfAXX21 (ORCPT ); Thu, 24 Jan 2019 18:28:27 -0500 Received: by mail-io1-f74.google.com with SMTP id a2so6169155ioq.9 for ; Thu, 24 Jan 2019 15:28:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=date:in-reply-to:message-id:mime-version:references:subject:from:to :cc; bh=dEGzE6ZUNinj7i2O6gc8hdUlWcvJ+gY38NNifJVHTbc=; b=shmD9xArlr1UCRljf6+W6ekzQnCm+lB7FPZ0c4aeyUDCITlowJhhtTz6eCuBoU58BW /LhQ1Yx9V3rSxr5pXrSn4KWRMrPhc8IO79HCmP/hCJT+Ao6X7wrWiB01S18Ni8dWOKPO +oIqSGruvfSXvFCNTu1nEh3nzVzSgarN2U0lzo2tktLxvAQ+h/T6i9KUcoXXzV68/vgx uhT2aPvFiV16Zh6lCEvKmmtozPbIHnizRqOxMGhgY9kmmH/Fv+uFcYFbWI68NvbB0c/2 a1e9RfY2Y1bkGho3o+38osjpE/N+zsL9y1t1tEODqKSeyeJWxnYPOLPu0O6H7RUTbANF YbMg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:in-reply-to:message-id:mime-version :references:subject:from:to:cc; bh=dEGzE6ZUNinj7i2O6gc8hdUlWcvJ+gY38NNifJVHTbc=; b=YiejWd0jqCw3lAXiI2yyN02uE0uDKng8LodYUJW1yLEutm1SXYIqaJhsLCbop2OXUT oSbGlSSwBfIHHxBSgRcrPn0qL3bib3MeqkvWmhn0uCMalG0+0OpAyELthYhdbYkyDGyy Rw4GjU2cvtM1127yFYnJC+aypw/tbsqEV3Cx7OoU3z0Pm49kHCpWqQ/vrKsnGLTntXSz YZSwOqKYJTsf/ooE748l92ZXmZnuvQIc35GlOIGPYVMEnw+oPw63sDDzVvIVlWvrw4xK VXjP/xAG2PUJHd/IUP+dgTwMqBGHNxsWxyF4d9rWgbuMRkuyHTrBVTtrop0DXE2NGDPB hLGg== X-Gm-Message-State: AJcUukdJXhcstG/4+4VamQfMFpgwNbGElTe1JuAYnBpmBwtCciaPX+sI aSn3Z/CeP/rEG+oC4OwJ+rg5IWG9rlmJ X-Received: by 2002:a24:2951:: with SMTP id p78mr3654125itp.28.1548372506346; Thu, 24 Jan 2019 15:28:26 -0800 (PST) Date: Thu, 24 Jan 2019 15:28:13 -0800 In-Reply-To: <20190124232814.252661-1-rajatja@google.com> Message-Id: <20190124232814.252661-3-rajatja@google.com> Mime-Version: 1.0 References: <20181117010748.24347-1-rajatja@google.com> <20190124232814.252661-1-rajatja@google.com> X-Mailer: git-send-email 2.20.1.321.g9e740568ce-goog Subject: [PATCH v6 3/4] Bluetooth: Allow driver specific cmd timeout handling From: Rajat Jain To: Marcel Holtmann , Johan Hedberg , Greg Kroah-Hartman , "David S. Miller" , Dmitry Torokhov , Rajat Jain , Alex Hung , linux-bluetooth@vger.kernel.org, linux-kernel@vger.kernel.org, linux-usb@vger.kernel.org, netdev@vger.kernel.org Cc: rajatxjain@gmail.com, dtor@google.com, raghuram.hegde@intel.com, chethan.tumkur.narayan@intel.com, sukumar.ghorai@intel.com Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Add a hook to allow the BT driver to do device or command specific handling in case of timeouts. This is to be used by Intel driver to reset the device after certain number of timeouts. Signed-off-by: Rajat Jain --- v6: Dropped the "sent command" parameter from cmd_timeout() v5: Drop the quirk, and rename the hook function to cmd_timeout() v4: same as v1 v3: same as v1 v2: same as v1 include/net/bluetooth/hci_core.h | 1 + net/bluetooth/hci_core.c | 3 +++ 2 files changed, 4 insertions(+) diff --git a/include/net/bluetooth/hci_core.h b/include/net/bluetooth/hci_core.h index e5ea633ea368..094e61e07030 100644 --- a/include/net/bluetooth/hci_core.h +++ b/include/net/bluetooth/hci_core.h @@ -437,6 +437,7 @@ struct hci_dev { int (*post_init)(struct hci_dev *hdev); int (*set_diag)(struct hci_dev *hdev, bool enable); int (*set_bdaddr)(struct hci_dev *hdev, const bdaddr_t *bdaddr); + void (*cmd_timeout)(struct hci_dev *hdev); }; #define HCI_PHY_HANDLE(handle) (handle & 0xff) diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c index 7352fe85674b..75793265ba9e 100644 --- a/net/bluetooth/hci_core.c +++ b/net/bluetooth/hci_core.c @@ -2578,6 +2578,9 @@ static void hci_cmd_timeout(struct work_struct *work) bt_dev_err(hdev, "command tx timeout"); } + if (hdev->cmd_timeout) + hdev->cmd_timeout(hdev); + atomic_set(&hdev->cmd_cnt, 1); queue_work(hdev->workqueue, &hdev->cmd_work); } -- 2.20.1.321.g9e740568ce-goog