From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (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 BC85B35C193 for ; Sun, 2 Aug 2026 06:32:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785652332; cv=none; b=kImLagjKgwtFxMw5ocMPk6Zwd6ShlIcFpMmMMxXwcLo2sucXRejYcm3yGgmCGgrmyAE3YrYBxiJaJz5ioWaeWccyYny0mqFlGKIpcQdrepzdkeSzcmsuSJCeoRN1AQPzX94m+jDavG3Nad7bwXWhp7Ph50fzfSwtOqWEjBETLqo= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785652332; c=relaxed/simple; bh=U+YLom3K9hCI3E9+sFHDKiYNaT8iae2wgJ/r3dITca4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=AM4wACz8ZpX6GyifvVnlMGL5Msxel2dWg5SSA1a5Y43op5lL+NLzQIilmS/B0IZXtAk9PGVIR3HSBrid5j0ZMhPG5x1TTA36lq2Nus313g0Z1ZgQ8HZMHcmehzKcTj3BLdW6XW+Uj25tgTJm5Ap41E1PCJBnaxI24rZfFmCEMeM= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=eqIU4yy6; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=Kh1uguU7; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="eqIU4yy6"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="Kh1uguU7" Received: from pps.filterd (m0279872.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 6724aaav529708 for ; Sun, 2 Aug 2026 06:32:02 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= FzjwE2JNUjZJG7GNM9lIOzvEvbIfawSlgTzlRj2Bsco=; b=eqIU4yy6V61bTyag XwzNMgpzgJyvjc+Aoy56vO3mJzQPP0HVB7U8u/q+BBu2G64IxaKif4tIKmKsTeAl RxmzRtYwLe2WmEz1+rJ+4yBB6KeF9zsWbVb7bIDSXbpdGHrPHLcvIoczc1J9Nfoc kkOGTNBSP6RFm7OZJn0uTY2OZI8IC1cQ8B4cKW6MhPSSFh9WM4eRGt7fl6WWO/A6 OTbx3LsBmV8wfBAGF22eZmcaIq5pm7CVEg0om9+9K9I2aqR7bnng6NkqbVjF1jRr b9t7HrQzNN1njsGhgVgYZEdZz4WoIc54Vy7WEW0mPptVsnC+AJ8ro2cmMdVQ2DtE nCcHOA== Received: from mail-pl1-f200.google.com (mail-pl1-f200.google.com [209.85.214.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fs966aaqc-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Sun, 02 Aug 2026 06:32:02 +0000 (GMT) Received: by mail-pl1-f200.google.com with SMTP id d9443c01a7336-2ce756aa72eso8016325ad.1 for ; Sat, 01 Aug 2026 23:32:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1785652321; x=1786257121; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=FzjwE2JNUjZJG7GNM9lIOzvEvbIfawSlgTzlRj2Bsco=; b=Kh1uguU7haXneDHAEyYpUnbfdJ+RGnl4QHUrp2U/7TTHHm+huBNidY77oUX9exGCtp 0PZ2v3RHasn9X2P4mIvhXlxXy0PinCcm3x9aR/vAD0WNjQF96RZXtYhhRbJ420F7Aqcs 8tlwKuvv6+1rxWvibLVoro9Dgp+Kx3lP4X7rCDAz8zdhK/O3J+PmkoFIWb9IWrow2uHy AHGOI8Y2swQ9bAJNjeZfr5RKSatv59JU6r20hKbtTrsFOe6/Uk2xYJCmLliZO+OsFnio 24TDl+jq393InLQsnVelQyEmxp6kxEjIPuRS5iuQCcfjwszyCuMeTwbO1slPT0I9mf1E l3Ow== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1785652321; x=1786257121; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=FzjwE2JNUjZJG7GNM9lIOzvEvbIfawSlgTzlRj2Bsco=; b=O6V6dO1WGNNxGsybBovz/mZIBI6JnwqZ704atER0x14yAtPVncduB8yuHrtAlTr9kK SiyBMihw9sO4cAaHCoL8kik8cDH8BPqUZXc00YYfB6ApvucL+vlpW3XRx0m1lsw0cGsM +HKRj5B/3y+EAmTkJmi6KlNcJD/t2mzywUCLgotDVWcmwBR0Zzv5z78LUPT85YGW7pm1 R1XN0UiavNZSwTncTmJuplweyAfFff1xcGiYleiHTAyprQwcfdbHGQnC4M2l/TibTGXq O8Gt4rTRu1dNccBgi2VUr+AlkIx/3/g8jZGdR6gNhwhpoUkS/Dr5PEgTdNfOE3RYqrnT RFQA== X-Forwarded-Encrypted: i=1; AHgh+RqKAVYpaRy//NlpMwq7dcJ0tyROd3aJYK6ZhUGa42BX6xI3M95rpACOV/aTXjDUV/qHyYFQj0uS+Cp5BwE=@vger.kernel.org X-Gm-Message-State: AOJu0Yxpz8zpgD+/CrafOGTiOZ+Ofrt/A12qU9edrCQeDUED5cR7Dav2 HhwQ7WcSZhvSsgYxn5iAfkozfSVAWXNzagjg+a2WYGPwoxT1Mb/c7I16ll6peOgJe8XnHt4mGqr 9XTF4dQ4968+I2Q+Xu04ztizkCUUPpDAMnwwZ0j83oGzFYixr44D38CU/WtH2wyeH3RQ= X-Gm-Gg: AR+sD11or5AJbZVh60iKnvnjJ+s9yjRFjoml5NlRvbpzGgmBRgiHveUHQnJsyWf4uXL LzUS//GZcIdRZfDoM1suXgE7Ythqz6k6U+hBG66Io9b5WBKxT0SPl4p7Ns8L/dllgsLSQ2PXBEb u7nZyPIg82nP91yypOx8RELTm+tGHzoRHfdHmGcyyfs7rjT7dez8c+nmsh4Rbh3x4hSa+g0g4kD WHu6G6IjdlY094B6Ss5mOeIVbemtDGOIEbohY8jpOg1G9S65rsGScJumZJNL1oEZ3+LwT4T3+4x UZyNW4fxc3NTTUPDA9Zg5QnGoLjlaVOQ4lCy8VFt9ati74C1MsCT9fY30iJvdwlV9E+uHBlb5ed 4QDJAFgQh+5yCy/eSoRx1JNmh7+PXzGklfCjmpzWtul3koCo= X-Received: by 2002:a17:903:2443:b0:2cf:9e90:8be with SMTP id d9443c01a7336-2d0524799d8mr76560195ad.4.1785652321474; Sat, 01 Aug 2026 23:32:01 -0700 (PDT) X-Received: by 2002:a17:903:2443:b0:2cf:9e90:8be with SMTP id d9443c01a7336-2d0524799d8mr76559865ad.4.1785652321023; Sat, 01 Aug 2026 23:32:01 -0700 (PDT) Received: from hu-zijuhu-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3153dd9c93dsm24233304eec.8.2026.08.01.23.32.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 01 Aug 2026 23:32:00 -0700 (PDT) From: Zijun Hu Date: Sat, 01 Aug 2026 23:31:39 -0700 Subject: [PATCH v3 4/7] Bluetooth: hci_core: Introduce __hci_reset_dev() with a hardware error code Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20260801-generic_fix-v3-4-efdd8dcf3430@oss.qualcomm.com> References: <20260801-generic_fix-v3-0-efdd8dcf3430@oss.qualcomm.com> In-Reply-To: <20260801-generic_fix-v3-0-efdd8dcf3430@oss.qualcomm.com> To: Marcel Holtmann , Luiz Augusto von Dentz , Abhishek Pandit-Subedi , Manish Mandlik , Chethan Tumkur Narayan , Amitkumar Karwar , Neeraj Kale Cc: Zijun Hu , Luiz Augusto von Dentz , linux-bluetooth@vger.kernel.org, linux-kernel@vger.kernel.org, Zijun Hu X-Mailer: b4 0.15.2 X-Proofpoint-ORIG-GUID: Yw5jzjmtdFvlRY00orunUNHtcYk7eu16 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODAyMDA1MCBTYWx0ZWRfX+ZtZ+nDZzpwe zORQKVdYbTNwHpcf67OPlFpzYU7NBVqskMt3eJl6ZNgKC2QJENCuNq08PWaIGIm1yyseGHwsEFo eMhXROEOav9JQBJykXF0wq+mNCxwNx5QgpdLR7ku31tGVkV4nUQ59bms73rzXs7dFxBmKV85zJF cSRMOHcTZ4xPC0JAQuxwwO/z2AMi+2WpwNhZidj3Im3+/04GlY7Fw/4l4rMnpqY8w/2W/HvIySi mIWB8cziiha1lHJ0agI7vKOsh9QC4n0mrYLAMWWulOXTi2lkhj65MgR0TjeToujnoCksVg+cH67 rvuHBOPXJ5xvpXFcnnNyof8n1jE4vE7CYXnWIY/YyK5jq74Y0mHOncf5VnI2cMYjBeejy8yOj2n vUv8JJfcEnNzMZqs+oLtUOVYG378N1+gGY/NCIWMzxbg1/S9+HMMiVoNfBgwOt0OSAqx9K9iye/ uqfhcAt6AIdV43EAxbQ== X-Authority-Analysis: v=2.4 cv=TpfWQjXh c=1 sm=1 tr=0 ts=6a6ee462 cx=c_pps a=IZJwPbhc+fLeJZngyXXI0A==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yx91gb_oNiZeI1HMLzn7:22 a=EUspDBNiAAAA:8 a=kDlZC9PIADDXUGC2KDAA:9 a=QEXdDO2ut3YA:10 a=uG9DUKGECoFWVXl0Dc02:22 X-Proofpoint-GUID: Yw5jzjmtdFvlRY00orunUNHtcYk7eu16 X-Proofpoint-Spam-Info: AW1haW4tMjYwODAyMDA1MCBTYWx0ZWRfXye/iwYao/S3d 8UWn+ocUYC3c+ECZRsU413JzNlMR8S8wGaZJ0X/6KJkl8e5LQa9pqk4SuA/HeEC2ZemkxO9HkvL jaBhX0dGilRBZZWtAT+wUmLMtpIPxD8= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-02_02,2026-07-30_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 impostorscore=0 phishscore=0 spamscore=0 clxscore=1015 suspectscore=0 malwarescore=0 adultscore=0 bulkscore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608020050 hci_reset_dev() injects a constant hardware error code 0x00 to restart the device. But a transport driver may need a different error code. Fix by introducing __hci_reset_dev(hdev, hw_err_code), which will be used by a follow-up patch. Signed-off-by: Zijun Hu --- include/net/bluetooth/hci_core.h | 8 +++++++- net/bluetooth/hci_core.c | 6 +++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/include/net/bluetooth/hci_core.h b/include/net/bluetooth/hci_core.h index 01b938c4b24a..b7e71733f360 100644 --- a/include/net/bluetooth/hci_core.h +++ b/include/net/bluetooth/hci_core.h @@ -1780,17 +1780,23 @@ static inline struct hci_dev *hci_alloc_dev(void) void hci_free_dev(struct hci_dev *hdev); int hci_register_dev(struct hci_dev *hdev); void hci_unregister_dev(struct hci_dev *hdev); void hci_release_dev(struct hci_dev *hdev); int hci_register_suspend_notifier(struct hci_dev *hdev); int hci_unregister_suspend_notifier(struct hci_dev *hdev); int hci_suspend_dev(struct hci_dev *hdev); int hci_resume_dev(struct hci_dev *hdev); -int hci_reset_dev(struct hci_dev *hdev); +int __hci_reset_dev(struct hci_dev *hdev, u8 hw_err_code); + +static inline int hci_reset_dev(struct hci_dev *hdev) +{ + return __hci_reset_dev(hdev, 0); +} + int hci_recv_frame(struct hci_dev *hdev, struct sk_buff *skb); int hci_recv_diag(struct hci_dev *hdev, struct sk_buff *skb); __printf(2, 3) void hci_set_hw_info(struct hci_dev *hdev, const char *fmt, ...); __printf(2, 3) void hci_set_fw_info(struct hci_dev *hdev, const char *fmt, ...); static inline void hci_set_msft_opcode(struct hci_dev *hdev, __u16 opcode) { #if IS_ENABLED(CONFIG_BT_MSFTEXT) diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c index 9d5adf882509..509c820a693d 100644 --- a/net/bluetooth/hci_core.c +++ b/net/bluetooth/hci_core.c @@ -2847,34 +2847,34 @@ int hci_resume_dev(struct hci_dev *hdev) hdev->wake_addr_type); hci_sock_dev_event(hdev, HCI_DEV_RESUME); return ret; } EXPORT_SYMBOL(hci_resume_dev); /* Reset HCI device */ -int hci_reset_dev(struct hci_dev *hdev) +int __hci_reset_dev(struct hci_dev *hdev, u8 hw_err_code) { - static const u8 hw_err[] = { HCI_EV_HARDWARE_ERROR, 0x01, 0x00 }; + const u8 hw_err[] = { HCI_EV_HARDWARE_ERROR, 0x01, hw_err_code }; struct sk_buff *skb; skb = bt_skb_alloc(3, GFP_ATOMIC); if (!skb) return -ENOMEM; hci_skb_pkt_type(skb) = HCI_EVENT_PKT; skb_put_data(skb, hw_err, 3); bt_dev_err(hdev, "Injecting HCI hardware error event"); /* Send Hardware Error to upper stack */ return hci_recv_frame(hdev, skb); } -EXPORT_SYMBOL(hci_reset_dev); +EXPORT_SYMBOL(__hci_reset_dev); static u8 hci_dev_classify_pkt_type(struct hci_dev *hdev, struct sk_buff *skb) { if (hdev->classify_pkt_type) return hdev->classify_pkt_type(hdev, skb); return hci_skb_pkt_type(skb); } -- 2.34.1