From nobody Sat Sep 26 07:17:03 2026 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 CEB9B4BB5D9 for ; Thu, 3 Sep 2026 14:47:39 +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=1788446861; cv=none; b=cBGTn0wKGH2wyDh5AbPUauv4biHxmPWs55h0qSwJAGYJSpQtkcNuK1UVmF5p2C4+z08ygOFHQ70/fCH0chocsIK35X3ZzuX0ZBEU6jXlLTAWtMrw3gLVq46qHp8gEzFtDsWTjGAxTVBNaOUbuOoeUiO7nMpA6PegBK4BqifdvdQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788446861; c=relaxed/simple; bh=nGZreA1amTgzCPBA3pk9j3iYkm570B956O1G7sPHObE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=mWBxQs3gX468dK1j9TGXc0R9nrDE8UhmyFg5V3mHlZT9/0NXEOKo/FZ6GtjIk0IHN9BCIVWxW+o1T5Bg9FOuUzJVvLqR4bJdaFjW7oxTOOaxN5yFUDvkrbaZ7rn/VZ/rvRvQmmLw05bKPuKBXeK/x95KodM/YM3scyqIBaZ1kTY= 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=UH/o7e8T; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=eIeI5AfD; 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="UH/o7e8T"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="eIeI5AfD" 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 683DAc2O4158148 for ; Thu, 3 Sep 2026 14:47:38 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= KgjPny+eSGIgNXcSG5I6onSrjp3K5wwDfeW3fNEHLX0=; b=UH/o7e8TT7WSEeBu yXxd7Qwik4TQOL7RkBwiEfoZ1A6pauzmnQ0TfC9iGM59oDf9vSH1kqV2Woi9vUz0 QSB5kjHdAIYSri/hvfYGUQQkwaBuwfJr7j7ogH+MDJM2mlTOI1675Ps3PMkvKdrB 2DKDuve2U4rzP8I0VX6nAN5WiN4ktex8L2kgBUr8TbinBuFFs3hfByFLqMbWSi/W Wfr1NKIXmPEkuLAQIhzY6cIdbRSB1Mq61oXQntn2T+BOMRJiusDawa6zZxoID8we TOmxepY8bmgjqHJI0VPT3/rljhjMocISD7Qt/vYyAkaTnUlyL+jZNWlZBhpiG9ct fNk5FA== Received: from mail-pj1-f71.google.com (mail-pj1-f71.google.com [209.85.216.71]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4gf5pdse3g-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 03 Sep 2026 14:47:38 +0000 (GMT) Received: by mail-pj1-f71.google.com with SMTP id 98e67ed59e1d1-39af306c795so338779a91.3 for ; Thu, 03 Sep 2026 07:47:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1788446858; x=1789051658; 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=KgjPny+eSGIgNXcSG5I6onSrjp3K5wwDfeW3fNEHLX0=; b=eIeI5AfDPef50j+uqSbr689abAm6SI3SZ+iUidOp/1RJZb6QHcxL1Y0gUlZSxiTvYQ pyur+Yp/eBz8beNqdMNk9CpFthsOj0Opy2c9ejxAsQBbqbGAQ1nnfSRUOA4qvRTgtGCH K8yhAHBrLM1Pl9Xy2AFbhOSVa9huSd6g6k5tQr6WkonIqnXW9VFLjX95Gj5rMVGSOLfh IiVwfNpbghNRPEW14fRj+I5G8O6ELuqLW6U11n9O82jHV8hhcZ23riNXYtqMPd+dV6EL lfiWioqMQkI7Be5Kw6racXEjHXaWDm/MMnTohYdSDBurCPX2x2tqgnwoE5QB/Vw1y1nf G67Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788446858; x=1789051658; 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=KgjPny+eSGIgNXcSG5I6onSrjp3K5wwDfeW3fNEHLX0=; b=Y7HkI6Op67e5liGhMDEeODCI6arfC7WVZP24mt/bQK9GG5VnUbj0EW6XW+YOVtdXl8 kFzZjIkf7wS7U2uJoZiQybdb/uX7je5fJcg8cLPv0J42FxJAaoK+3zNU54WbHRuLBqm3 uIYl827A9MgoQznzgMY0R31l1zrcsU0BpOBLU/GhQsKxN5aoaW4hY8fGYRI16z+U8/zj BFFuBPtD2yKymI3GqmUIBkhOjqnfcgq/UKYknWblSlfsM6dzh2ZH0XNrCwQJGjm4HgNj MG8qPIpPXXRhnDqooSXOSGDw0F5Ws4yWa5MIeOaAKD70QVOyaTGEGsY9Qy0ku40ZVStn 0w3g== X-Forwarded-Encrypted: i=1; AKwUvBzZh+N/0dmnVmf1cMDKri/kWqktfFPnHViHrk/AvedfQeERWZk7fSptBJ5/nYpjZMAnJ8+mARsRcwqNEOk=@vger.kernel.org X-Gm-Message-State: AFuF++keaRObjzbJYm8jXLWqUByyF7tB0e04yTw2cBUh6uGuNznqwr3f ruLchpSo9ZKlGQoWlAOdoib9r8ofWHxrDVSmvsMusg0MbJT8PKtKp38BBKScXaCEw9/o9yZ5fVd wX1srqP+JZGA6lgQFckImfDaeyphHPsisvY/geD/ztrTcRvbO6I+eD5/BvBs89AAbaHp2L8sNyB s= X-Gm-Gg: AYBFou0ltXIKaMsRnyVEwRGCO7eXl6rcewpzt7HmSc86GDAOWz+5Ehle18KPfYq7e5w wUmVmxtRqbp9/ljOTk6078KVW28ie0VXyQUv1K6EdAqaPtrVPTi+O3Yp55VJ/Spg74zvOEuNvF4 ldHFL7NaJKEPtKKtZ4hnPpK7DgM4uqP8a4+Fcnpy/XScDjTxJropnYCnr3xAXiszohHGKJsMvPD ew5+jq/l5eVMmxAgWhR5G+gEJ3mf92JdMIAYEQNJGTjOkA+xwI7mZtLAXrmfYNj/nBnwHxq6iOD 7G9rlVnAlLipoPQEZKdhXhQSb5a+Po8Kancb51TNg8w75Xa9WpxOtvxzAB2aCM4HlVj6W45nCjS V8X4IkTrEk81g/Obk0siUiQ9twIJUeUfT9NzqdreESAQp5Ns= X-Received: by 2002:a17:90b:4b8b:b0:38e:76f8:fcbb with SMTP id 98e67ed59e1d1-39aee1c6d08mr11873144a91.4.1788446857033; Thu, 03 Sep 2026 07:47:37 -0700 (PDT) X-Received: by 2002:a17:90b:4b8b:b0:38e:76f8:fcbb with SMTP id 98e67ed59e1d1-39aee1c6d08mr11873100a91.4.1788446856524; Thu, 03 Sep 2026 07:47:36 -0700 (PDT) Received: from hu-zijuhu-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-143243bfbe3sm25794c88.11.2026.09.03.07.47.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Sep 2026 07:47:35 -0700 (PDT) From: Zijun Hu Date: Thu, 03 Sep 2026 07:47:13 -0700 Subject: [PATCH BlueZ v3 1/4] doc/hci-protocol: Fix missing & on mtu argument in BT_RCVMTU example 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: quoted-printable Message-Id: <20260903-vendor_hci-v3-1-015d62a57c91@oss.qualcomm.com> References: <20260903-vendor_hci-v3-0-015d62a57c91@oss.qualcomm.com> In-Reply-To: <20260903-vendor_hci-v3-0-015d62a57c91@oss.qualcomm.com> To: Marcel Holtmann , Luiz Augusto von Dentz Cc: Zijun Hu , linux-bluetooth@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.15.2 X-Proofpoint-Spam-Info: AW1haW4tMjYwOTAzMDEyOCBTYWx0ZWRfX/5gglC8gVZc9 K3V0Z6zxbpy8oXMDfFalWrDOO1fXOgQ6wpN/T3qRonqsau/8uP4zUQzAWonTBhXI3GcS4foX8v7 h2jj6sQ7CspH6f0HWF8xTadDSL0lviU= X-Proofpoint-ORIG-GUID: l2mfAwFuwh6VMnwS1L8awysHwLwkzADb X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTAzMDEyOCBTYWx0ZWRfX1DftJplpkhDe r/3HXpgScoamQHOkE4zmiF+Zrq6M6O9x4zQckVomzSEmP/cJNplNlWnUAKwwhWsfcIc6DKnfmgl AMbyxbe8CLU2h33OPpVynvlSoim5YSLj56QrWPrlkESBTjeFi19LNnNJ56y1/biF7AV7mYDbfZg 2cBDzp+iyBUXE/uLegBs8a4W1RdWJ0zvx6uf6uKGcmon/8yxKOn21q/aPJz2aJKtpmGPstyYo7z +sl6Ht/HvOPK4wRj37Kp5xC7eEPg0q9vy69O48Dh/fueRir7qa/ehJhMLAsuul3t/eobk+Ao7Wh wWgzTqiBVN8BlzDb5EBMo/oztKENhnTWX4CFdb4Ajxdhin8tZtHNORepKDs2tb4MdLfzS2KRqIV FYbadtMKqOr+2FIhDK10lMjv7SlahXVJZpcXjK+PVBt7y7gEfoAlrFyEp5CCFs1+czdCYREaAs9 gvIdo5i9ojQHeFngC2A== X-Authority-Analysis: v=2.4 cv=RsL16imK c=1 sm=1 tr=0 ts=6a99888a cx=c_pps a=UNFcQwm+pnOIJct1K4W+Mw==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yx91gb_oNiZeI1HMLzn7:22 a=wa7QpaTpAAAA:8 a=zpTOe8WlNf4vmfFp-y0A:9 a=QEXdDO2ut3YA:10 a=uKXjsCUrEbL0IQVhDsJ9:22 a=ehqneT2-Ts4HTEaPPMaO:22 X-Proofpoint-GUID: l2mfAwFuwh6VMnwS1L8awysHwLwkzADb X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-03_04,2026-09-03_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 phishscore=0 priorityscore=1501 suspectscore=0 clxscore=1015 lowpriorityscore=0 adultscore=0 bulkscore=0 malwarescore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609030128 getsockopt() requires a pointer argument, but mtu was passed by value. Fix by using &mtu instead of mtu. --- doc/hci-protocol.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/hci-protocol.rst b/doc/hci-protocol.rst index f28684655842..db10b35df736 100644 --- a/doc/hci-protocol.rst +++ b/doc/hci-protocol.rst @@ -129,17 +129,17 @@ Example: =20 .. code-block:: =20 uint16_t mtu; socklen_t len; int err; =20 len =3D sizeof(mtu); - err =3D getsockopt(sock, SOL_BLUETOOTH, BT_RCVMTU, mtu, &len); + err =3D getsockopt(sock, SOL_BLUETOOTH, BT_RCVMTU, &mtu, &len); =20 RESOURCES =3D=3D=3D=3D=3D=3D=3D=3D=3D =20 http://www.bluez.org =20 REPORTING BUGS =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --=20 2.34.1 From nobody Sat Sep 26 07:17:03 2026 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 60E914C042E for ; Thu, 3 Sep 2026 14:47:43 +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=1788446865; cv=none; b=qN+64AIkSvg9cGvcTr1+YFjcKu6rWKYGHkhAZay41veRXU914vUW6KJtcDkIVA+hD/9DE4gGnBuSTsw9DlsWC/WWFlXjoaskF8mw+RykgDRq9lVvCMcTI9NVZL7oT0XctMGxUZ5GNRKGr7amDd6B6wmnGdBT/oTUNrr1lRO4dW0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788446865; c=relaxed/simple; bh=toVV0s12AE7l1RntzRNusz8dCXyI+H129Nhu7e/SZcY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=uCqxWM767y35ZHPSS/vQt4RYaf43YwWS0ePHmuvkmZiDsavHFyadFg4GjEz600MUEklFCfdAFz8XtpRw0mY0SsZUvBghpNDppM7/sSQnMQE4NDH6ecrAAIUGY72LuuSKSxsYFaVzpYtjcLRcDzom2CRGzKSgUwpRoFngHwB5EPI= 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=fReohphr; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=WzlIAifR; 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="fReohphr"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="WzlIAifR" 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 683DAe6W4158196 for ; Thu, 3 Sep 2026 14:47:42 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= jvUgfLyif69KGNn8gPHcB9wxKtWJyCmN10y1kpRbBUA=; b=fReohphrXU32NPnX drQarxMmDwDyJm5Y9xSB8mIxO1VhRP6YvP1zkwegtwWLVkcHMY63x4LeQxlev7rA fNueo0yygf++d7gpN0E2Y+AbkrKeFVWfccPPJDfVGFYKlAjDx6G7Q19hgB17HsnG YWHmh+0JM0My+ilkcUX+UYt2tlbjuwF5RO4SJl0j/V6con6MjK+5hNqBSpZ/9N5t dykj+4YvO7fMLwgAJlvTVKhacL6jcYrp6K1ygxUaskItOVjayrKVH+ETaBC7TtTS KOy5XdpU7xbBG4Arfzyf0YP41N1PHf+Lefv2GaFpfKNFpPszEOeGWfmFM0Kvk9pu NtNw9A== Received: from mail-pf1-f200.google.com (mail-pf1-f200.google.com [209.85.210.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4gf5pdse3m-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 03 Sep 2026 14:47:41 +0000 (GMT) Received: by mail-pf1-f200.google.com with SMTP id d2e1a72fcca58-8562ee6d9e1so460043b3a.2 for ; Thu, 03 Sep 2026 07:47:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1788446861; x=1789051661; 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=jvUgfLyif69KGNn8gPHcB9wxKtWJyCmN10y1kpRbBUA=; b=WzlIAifR4EGUa/hz6jclRq1xUizumpWgIhIgESe5B/oskl7K4diLpktPv92Mcss2OW YEGWWHvM/dch3caIxbAWotxM5Wti8fVfWYoU6ySY4G0b6a7pMS0SttmgAgAfIqhIdC9R qGhHLiOKAf5updTGLtTrzsICofAuqaZ8P7HawI0ti2ch6N9kIHTE4iz4HAwWRVIfwBjQ jZIzm3SjmzOFlkrsyXWJKUxLUCOZM7pInhdT9aSAEbyrpW+7u+yxfym9SDfKPh/DLGsT 3C37Elye8xp67u/XRj4iTb4diw9MGLHKz3rTAHii+xoKmQhkxnL8yrGeEgR/Ii5JsUI7 OfXQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788446861; x=1789051661; 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=jvUgfLyif69KGNn8gPHcB9wxKtWJyCmN10y1kpRbBUA=; b=MwhbuZ5zvN9mpGsWJYRf0czGWHS8ROY03r96dGaeCd0x5oXvAUPYGJIUOq7oz8dO49 NJQEEdwB3jKt/kD/LjsJU2sbk5DVdbcEjkwYbHAzpkScRVl0JyQcc3SkqOe1GL2sCj6v vtRTdDBEgnLvANAkceRxZmbKEywvk5TU61lZdvQRY3J7fH5aeuTZmgF14QnhL+7wvcz7 BEtksGfAmYgArZJMEjLOXGoTMmoTL/gxUH+OqZMOiTXjpD7gf/cgLDSgppBUd5+1MkO4 Kg7OQr2dafWe/ikKM3bJKetWYlsysi5JTYRRcAhOdN4lpLr8AiF/gvAxLPN9FkHHbqQU yVJw== X-Forwarded-Encrypted: i=1; AKwUvBzKqXFkPgPWydmFuv1dLJrh2Q0EIqUFCLgrrfofIh3kbJJ9Qdn+BfZQDT2g2cLkla9AYx+3oSho/MPkLJE=@vger.kernel.org X-Gm-Message-State: AFuF++kR7+X9LYB5cNHb8Bb9lZ34EZ7UVhISsVVY+429jwDDZ3wS6+BA Iz1IT2mepzU8xlH7mZOPX1YEid2nK17Po/ENdltQBpG+kfz6utg+e0UGMZiftIQbL+r8ffHJXyt Qfyyu/ECmQpHp+M9VimECmeIDtQtlZVG6PZrGImdINDTCW/o5TuN9u/2hfF0WfjVXL6yTAM1N9v U= X-Gm-Gg: AYBFou2VAqwg8JXUcdNdqqjkV8TWvWEWcRTw5210VK+FKY/KhLJ05to11OQF/X9LU2/ hzdd318HZsL3hPRhEbertMmKissDjZqJfwYBuNghZJHuC2jW9k8lKPfmXCcpdi0MdPyzRFGlL1U bpMgney4IiEhNYfnpwwFQNei99qOGw/g1bEIaU6ecoUz0eN7AskRMG9VVhlknmZyFpk/3lOTYTX I/lWqARpIfU8dQM88sd6lj8aGoxtLMJfuSScsv7eTV9P35MunutIsdCSGE03VXeic3CzQnwGsWR i/yHLgnT7MNS1JtiuA4zJ7hupWOBuLtCPLu4lYiHQ7IYHwOHD/5wgSAMEGCYIIOAJbcU5uxeKme Gv2/rQYZHH88OtTvvvaoUI5u4BNUarMf09TGfHwpgtW0Y1NM= X-Received: by 2002:a17:90b:4cc4:b0:398:bada:838b with SMTP id 98e67ed59e1d1-39aee277bc5mr13207668a91.6.1788446860877; Thu, 03 Sep 2026 07:47:40 -0700 (PDT) X-Received: by 2002:a17:90b:4cc4:b0:398:bada:838b with SMTP id 98e67ed59e1d1-39aee277bc5mr13207594a91.6.1788446860211; Thu, 03 Sep 2026 07:47:40 -0700 (PDT) Received: from hu-zijuhu-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-143243bfbe3sm25794c88.11.2026.09.03.07.47.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Sep 2026 07:47:36 -0700 (PDT) From: Zijun Hu Date: Thu, 03 Sep 2026 07:47:14 -0700 Subject: [PATCH BlueZ v3 2/4] monitor: s/vendor_(evt|event)/\1_vendor/ 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: quoted-printable Message-Id: <20260903-vendor_hci-v3-2-015d62a57c91@oss.qualcomm.com> References: <20260903-vendor_hci-v3-0-015d62a57c91@oss.qualcomm.com> In-Reply-To: <20260903-vendor_hci-v3-0-015d62a57c91@oss.qualcomm.com> To: Marcel Holtmann , Luiz Augusto von Dentz Cc: Zijun Hu , linux-bluetooth@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.15.2 X-Proofpoint-Spam-Info: AW1haW4tMjYwOTAzMDEyOCBTYWx0ZWRfX1UkFN+jFe9d+ TS48YSS0fmEgiZXxyBJi8bRPiEbnu5UqN34aOZTi+Wyaxa0aWAcVLPX1M1QWBiJDo4v/4hn4exU 6c0rLmAhidCrJzTeS0RBaG0Unj7OxIg= X-Proofpoint-ORIG-GUID: NyZkvylQwPlAi1ap9y2sqxXmxBfYqmdP X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTAzMDEyOCBTYWx0ZWRfX/tVWr25x2Ktc pnn+kp8awxUvUV2j49uoj7UP72/4negrf24QNoh/TiulqzIxbPhFGuzDtzfXRfGvrkzD3YepKXv 6FRLDK8RcXCzr5WVntAHK6fSXtyI7IPDBeNeyFFMw4feZTKDgdmTxzw1l0ORkl/xbuoOu0LUDIT Aj8qKDZ8ta4KHCLcL+by18d9SNNWbroOukoZnc2FDes15Ty4WHQOK7IiTytp2w9m+p5z8Huo4aY OlLAt3bmqXvRiwPQQy41HXCa69Jvca73nI/mXur+J/29lXD6DcmEKFEc+/vCe/qtjG5h36jqa2A WGrrDYY4jHx1mTsxr1mo+aR7+2u6NbgkwyU3t4xh02vuusoGLKWF3IHa7q3hJOnDmX1tinsXa7V u04EGplg70JJ5QZ8K+xOB57o/00l6Sw60KIg6BHOhnHMUOeeDblpoBCu/Xfpo5/o14dk48bg8ra s7Go9+r3FxmHhf3bZ4g== X-Authority-Analysis: v=2.4 cv=RsL16imK c=1 sm=1 tr=0 ts=6a99888e cx=c_pps a=mDZGXZTwRPZaeRUbqKGCBw==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yx91gb_oNiZeI1HMLzn7:22 a=Dei6p5SHAAAA:8 a=7rLAfYvYRfl3bdLfV3sA:9 a=QEXdDO2ut3YA:10 a=zc0IvFSfCIW2DFIPzwfm:22 a=M-Yerj1wOn-OpK7r_3ei:22 X-Proofpoint-GUID: NyZkvylQwPlAi1ap9y2sqxXmxBfYqmdP X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-03_04,2026-09-03_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 phishscore=0 priorityscore=1501 suspectscore=0 clxscore=1015 lowpriorityscore=0 adultscore=0 bulkscore=0 malwarescore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609030128 Kernel include/net/bluetooth/hci.h defines: #define HCI_EVENT_PKT 0x04 #define HCI_VENDOR_PKT 0xff #define HCI_EV_VENDOR 0xff HCI_VENDOR_PKT and HCI_EV_VENDOR share the same value, but are very different, as the table below shows: +------------+-----------------------+---------------------------+ | | HCI_VENDOR_PKT | HCI_EV_VENDOR | +------------+-----------------------+---------------------------+ | Defined by | Vendor | BT SIG | +------------+-----------------------+---------------------------+ | Hierarchy | Parallel to | Nested inside | | | HCI_EVENT_PKT | HCI_EVENT_PKT | +------------+-----------------------+---------------------------+ | Direction | RX and TX | RX only | +------------+-----------------------+---------------------------+ | kernel <-> | HCI_VENDOR_PKT, ... | 0x04, HCI_EV_VENDOR, ... | | userspace | | | +------------+-----------------------+---------------------------+ | kernel <-> | RX: 23, vendor packet | RX: 3, HCI_EV_VENDOR, ... | | monitor | TX: 22, vendor packet | | +------------+-----------------------+---------------------------+ monitor is about to gain HCI_VENDOR_PKT support. To avoid confusing the two, rename what deals with HCI_EV_VENDOR to follow its pattern: s/vendor_(evt|event)/\1_vendor/ --- monitor/broadcom.c | 10 +++++----- monitor/broadcom.h | 4 ++-- monitor/intel.c | 16 ++++++++-------- monitor/intel.h | 4 ++-- monitor/msft.c | 6 +++--- monitor/msft.h | 4 ++-- monitor/packet.c | 20 ++++++++++---------- monitor/vendor.c | 2 +- monitor/vendor.h | 4 ++-- 9 files changed, 35 insertions(+), 35 deletions(-) diff --git a/monitor/broadcom.c b/monitor/broadcom.c index 80c95e91db0a..0dbc5eb39bb8 100644 --- a/monitor/broadcom.c +++ b/monitor/broadcom.c @@ -707,24 +707,24 @@ void broadcom_lm_diag(const void *data, uint8_t size) } =20 static void lm_diag_evt(struct timeval *tv, uint16_t index, const void *data, uint8_t size) { broadcom_lm_diag(data, 63); } =20 -static const struct vendor_evt vendor_evt_table[] =3D { +static const struct evt_vendor evt_vendor_table[] =3D { { 0xb4, "LM Diag", lm_diag_evt, 64, true }, { } }; =20 -const struct vendor_evt *broadcom_vendor_evt(uint8_t evt) +const struct evt_vendor *broadcom_evt_vendor(uint8_t evt) { int i; =20 - for (i =3D 0; vendor_evt_table[i].str; i++) { - if (vendor_evt_table[i].evt =3D=3D evt) - return &vendor_evt_table[i]; + for (i =3D 0; evt_vendor_table[i].str; i++) { + if (evt_vendor_table[i].evt =3D=3D evt) + return &evt_vendor_table[i]; } =20 return NULL; } diff --git a/monitor/broadcom.h b/monitor/broadcom.h index 5cb51d81dbb8..36492a4071a7 100644 --- a/monitor/broadcom.h +++ b/monitor/broadcom.h @@ -7,13 +7,13 @@ * Copyright (C) 2002-2010 Marcel Holtmann * * */ =20 #include =20 struct vendor_ocf; -struct vendor_evt; +struct evt_vendor; =20 const struct vendor_ocf *broadcom_vendor_ocf(uint16_t ocf); -const struct vendor_evt *broadcom_vendor_evt(uint8_t evt); +const struct evt_vendor *broadcom_evt_vendor(uint8_t evt); void broadcom_lm_diag(const void *data, uint8_t size); diff --git a/monitor/intel.c b/monitor/intel.c index 782fda675422..d52b2dc80e4c 100644 --- a/monitor/intel.c +++ b/monitor/intel.c @@ -1286,17 +1286,17 @@ static void system_exception_evt(struct timeval *tv= , uint16_t index, break; } =20 print_field("Type: %s (0x%2.2x)", str, type); =20 packet_hexdump(data + 1, size - 1); } =20 -static const struct vendor_evt vendor_evt_table[] =3D { +static const struct evt_vendor evt_vendor_table[] =3D { { 0x00, "Startup", startup_evt, 0, true }, { 0x01, "Fatal Exception", fatal_exception_evt, 4, true }, { 0x02, "Bootup", bootup_evt, 6, true }, { 0x05, "Default BD Data", default_bd_data_evt, 1, true }, @@ -1861,17 +1861,17 @@ static void intel_vendor_ext_evt(struct timeval *tv= , uint16_t index, tlv =3D process_ext_subevent(tlv, last_tlv); =20 /* If an error occurs in decoding the subevents, hexdump the packet. */ if (!tlv) packet_hexdump(data, size); } =20 /* Vendor extended events with a vendor prefix. */ -static const struct vendor_evt vendor_prefix_evt_table[] =3D { +static const struct evt_vendor vendor_prefix_evt_table[] =3D { { 0x03, "Extended Telemetry", intel_vendor_ext_evt }, { } }; =20 static const uint8_t intel_vendor_prefix[] =3D {0x87, 0x80}; #define INTEL_VENDOR_PREFIX_SIZE sizeof(intel_vendor_prefix) =20 /* @@ -1883,17 +1883,17 @@ static const uint8_t intel_vendor_prefix[] =3D {0x8= 7, 0x80}; * When =3D=3D 0x03, it is a telemetry event; and * is a number of tlv data. */ struct vendor_prefix_evt { uint8_t prefix_data[INTEL_VENDOR_PREFIX_SIZE]; uint8_t subopcode; }; =20 -static const struct vendor_evt *intel_vendor_prefix_evt(const void *data, +static const struct evt_vendor *intel_vendor_prefix_evt(const void *data, int *consumed_size) { unsigned int i; const struct vendor_prefix_evt *vnd =3D data; char prefix_string[INTEL_VENDOR_PREFIX_SIZE * 2 + 1] =3D { 0 }; =20 /* Check if the vendor prefix matches. */ for (i =3D 0; i < INTEL_VENDOR_PREFIX_SIZE; i++) { @@ -1914,29 +1914,29 @@ static const struct vendor_evt *intel_vendor_prefix= _evt(const void *data, *consumed_size =3D sizeof(struct vendor_prefix_evt); return &vendor_prefix_evt_table[i]; } } =20 return NULL; } =20 -const struct vendor_evt *intel_vendor_evt(const void *data, int *consumed_= size) +const struct evt_vendor *intel_evt_vendor(const void *data, int *consumed_= size) { uint8_t evt =3D *((const uint8_t *) data); int i; =20 /* * Handle the vendor event without a vendor prefix. * 0xff - * This loop checks whether the exists in the vendor_evt_table. + * This loop checks whether the exists in the evt_vendor_table. */ - for (i =3D 0; vendor_evt_table[i].str; i++) { - if (vendor_evt_table[i].evt =3D=3D evt) - return &vendor_evt_table[i]; + for (i =3D 0; evt_vendor_table[i].str; i++) { + if (evt_vendor_table[i].evt =3D=3D evt) + return &evt_vendor_table[i]; } =20 /* * It is not a regular event. Check whether it is a vendor extended * event that comes with a vendor prefix followed by a subopcode. */ return intel_vendor_prefix_evt(data, consumed_size); } diff --git a/monitor/intel.h b/monitor/intel.h index bfb04540c058..e218745a8712 100644 --- a/monitor/intel.h +++ b/monitor/intel.h @@ -7,12 +7,12 @@ * Copyright (C) 2002-2010 Marcel Holtmann * * */ =20 #include =20 struct vendor_ocf; -struct vendor_evt; +struct evt_vendor; =20 const struct vendor_ocf *intel_vendor_ocf(uint16_t ocf); -const struct vendor_evt *intel_vendor_evt(const void *data, int *consumed_= size); +const struct evt_vendor *intel_evt_vendor(const void *data, int *consumed_= size); diff --git a/monitor/msft.c b/monitor/msft.c index d41f10d68a96..1fd13cf88ea0 100644 --- a/monitor/msft.c +++ b/monitor/msft.c @@ -364,23 +364,23 @@ static void msft_evt(struct timeval *tv, uint16_t ind= ex, " (0x%2.2x)", code); =20 if (code_func) code_func(data, size); else packet_hexdump(data + 1, size - 1); } =20 -static const struct vendor_evt vendor_evt_entry =3D { +static const struct evt_vendor evt_vendor_entry =3D { 0x00, "Extension", msft_evt, 1, false }; =20 -const struct vendor_evt *msft_vendor_evt(void) +const struct evt_vendor *msft_evt_vendor(void) { - return &vendor_evt_entry; + return &evt_vendor_entry; } =20 bool msft_event_code_valid(uint8_t code) { int i; =20 for (i =3D 0; evt_table[i].str; i++) { if (evt_table[i].code =3D=3D code) diff --git a/monitor/msft.h b/monitor/msft.h index ff6c28011018..8ecc925add80 100644 --- a/monitor/msft.h +++ b/monitor/msft.h @@ -178,13 +178,13 @@ struct msft_evt_monitor_device { uint8_t subevt; uint8_t addr_type; uint8_t addr[6]; uint8_t handle; uint8_t state; } __attribute__((packed)); =20 struct vendor_ocf; -struct vendor_evt; +struct evt_vendor; =20 const struct vendor_ocf *msft_vendor_ocf(void); -const struct vendor_evt *msft_vendor_evt(void); +const struct evt_vendor *msft_evt_vendor(void); bool msft_event_code_valid(uint8_t code); diff --git a/monitor/packet.c b/monitor/packet.c index 0d3b23cc3fb7..08051f434ba2 100644 --- a/monitor/packet.c +++ b/monitor/packet.c @@ -11131,46 +11131,46 @@ static const struct vendor_ocf *current_vendor_oc= f(uint16_t ocf) return intel_vendor_ocf(ocf); case COMPANY_ID_BROADCOM: return broadcom_vendor_ocf(ocf); } =20 return NULL; } =20 -static const struct vendor_evt *current_vendor_evt(const void *data, +static const struct evt_vendor *current_evt_vendor(const void *data, uint8_t size, int *consumed_size) { uint16_t manufacturer; uint8_t evt =3D *((const uint8_t *) data); =20 if (msft_event_prefix_match(data, size)) { *consumed_size =3D index_list[index_current].msft_evt_len; - return msft_vendor_evt(); + return msft_evt_vendor(); } =20 /* A regular vendor event consumes 1 byte. */ *consumed_size =3D 1; =20 if (index_current < MAX_INDEX) manufacturer =3D index_list[index_current].manufacturer; else manufacturer =3D fallback_manufacturer; =20 switch (manufacturer) { case COMPANY_ID_INTEL: - return intel_vendor_evt(data, consumed_size); + return intel_evt_vendor(data, consumed_size); case COMPANY_ID_BROADCOM: - return broadcom_vendor_evt(evt); + return broadcom_evt_vendor(evt); } =20 return NULL; } =20 -static const char *current_vendor_evt_str(const void *data, uint8_t size) +static const char *current_evt_vendor_str(const void *data, uint8_t size) { uint16_t manufacturer; =20 if (msft_event_prefix_match(data, size)) return "Microsoft"; =20 if (index_current < MAX_INDEX) manufacturer =3D index_list[index_current].manufacturer; @@ -13791,27 +13791,27 @@ static void le_meta_event_evt(struct timeval *tv,= uint16_t index, subevent_data =3D &le_meta_event_table[i]; break; } } =20 print_subevent(tv, index, subevent_data, data + 1, size - 1); } =20 -static void vendor_evt(struct timeval *tv, uint16_t index, +static void evt_vendor(struct timeval *tv, uint16_t index, const void *data, uint8_t size) { struct subevent_data vendor_data; char vendor_str[150]; int consumed_size; - const struct vendor_evt *vnd =3D current_vendor_evt(data, size, + const struct evt_vendor *vnd =3D current_evt_vendor(data, size, &consumed_size); =20 if (vnd) { - const char *str =3D current_vendor_evt_str(data, size); + const char *str =3D current_evt_vendor_str(data, size); =20 if (str) { snprintf(vendor_str, sizeof(vendor_str), "%s %s", str, vnd->str); vendor_data.str =3D vendor_str; } else { vendor_data.str =3D vnd->str; } @@ -13826,17 +13826,17 @@ static void vendor_evt(struct timeval *tv, uint16= _t index, } else { uint16_t manufacturer; =20 if (index_current < MAX_INDEX) manufacturer =3D index_list[index_current].manufacturer; else manufacturer =3D fallback_manufacturer; =20 - vendor_event(manufacturer, data, size); + event_vendor(manufacturer, data, size); } } =20 struct event_data { uint8_t event; const char *str; void (*func) (struct timeval *tv, uint16_t index, const void *data, uint8_t size); @@ -13993,17 +13993,17 @@ static const struct event_data event_table[] =3D { { 0x56, "Inquiry Response Notification", inquiry_response_notify_evt, 4, true }, { 0x57, "Authenticated Payload Timeout Expired", auth_payload_timeout_expired_evt, 2, true }, { 0x58, "SAM Status Change" }, { 0x59, "Encryption Change v2", encrypt_change_evt_v2, 5, true }, { 0xfe, "Testing" }, - { 0xff, "Vendor", vendor_evt, 0, false }, + { 0xff, "Vendor", evt_vendor, 0, false }, { } }; =20 void packet_new_index(struct timeval *tv, uint16_t index, const char *labe= l, uint8_t type, uint8_t bus, const char *name) { char details[48]; =20 diff --git a/monitor/vendor.c b/monitor/vendor.c index ecbfcf2eb817..9942e3d735d8 100644 --- a/monitor/vendor.c +++ b/monitor/vendor.c @@ -12,12 +12,12 @@ #ifdef HAVE_CONFIG_H #include #endif =20 #define _GNU_SOURCE #include "packet.h" #include "vendor.h" =20 -void vendor_event(uint16_t manufacturer, const void *data, uint8_t size) +void event_vendor(uint16_t manufacturer, const void *data, uint8_t size) { packet_hexdump(data, size); } diff --git a/monitor/vendor.h b/monitor/vendor.h index 996ed44cb18e..1ce42a645096 100644 --- a/monitor/vendor.h +++ b/monitor/vendor.h @@ -17,18 +17,18 @@ struct vendor_ocf { void (*cmd_func) (uint16_t index, const void *data, uint8_t size); uint8_t cmd_size; bool cmd_fixed; void (*rsp_func) (uint16_t index, const void *data, uint8_t size); uint8_t rsp_size; bool rsp_fixed; }; =20 -struct vendor_evt { +struct evt_vendor { uint8_t evt; const char *str; void (*evt_func) (struct timeval *tv, uint16_t index, const void *data, uint8_t size); uint8_t evt_size; bool evt_fixed; }; =20 -void vendor_event(uint16_t manufacturer, const void *data, uint8_t size); +void event_vendor(uint16_t manufacturer, const void *data, uint8_t size); --=20 2.34.1 From nobody Sat Sep 26 07:17:03 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.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 460DD4C0423 for ; Thu, 3 Sep 2026 14:47:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788446865; cv=none; b=hLeebKa/ygJo0YSBvtNhfIiLnjgG2pfZRaNrcTTrPR9FnqnJkalYzVcBhFtHkOtko2dEpUuvCgtIfxkGy/gasA7iEqto9NG2NLEJcVF7ZvnWJW4IZry2lysv5rK7ATwdN0xK8p5SQ7ssT8m81uZfOUBaeai+4ceY6Ir+eLPE0AA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788446865; c=relaxed/simple; bh=rIj+rXMbNle9x/hv0I6GrGhaxrw73gzbPIHQlRRMxz4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=q0vHHW8soX3dBFZWZy7cpBGMXKsGY18iPjVrwAeJiFK1qUdfwKl8NkwV213sBMbaEroImSBhAn7E7kIJsx69Arv8t4cYt05VOtlrdGr9MmWhtA0sqvrN1jcRd+qKsROOeeUnMcYVhaMDwoDvaGoXOkKh11N8bxy5CRzxXdKNMxQ= 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=ntO0Qjza; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=FDhgnNoj; arc=none smtp.client-ip=205.220.168.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="ntO0Qjza"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="FDhgnNoj" Received: from pps.filterd (m0279864.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 683DB8K53580128 for ; Thu, 3 Sep 2026 14:47:43 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= JIUg5dqKmUx3gOnDsfnMRHvli1hg47iHrMdwpyv7Yns=; b=ntO0QjzaouxT57Fd w7THpr4Rvr2Qv1aXCDvt1OxE47qf/mdMfDHSXN2Uk+CGguqB5H8hXte3t0IfVNLc P5asGmZFaa50jBWk6nlmnd/Y7MZA9CIzY94GpUhgfvTLYqReDvesdYYU4IS/skiW FYIgaNUN6YjkluBFzdaxRZMQjtIudP/rNY124tqpbHjhP84YBOIRNKxqvlv0/ExX Yj6qOjxk0jdY7TXcpUlKvf8H5ggRrJ9EVhgRuqLEUGrPHd7szjDmoj+5TXDh2DjN OyWxHDNmt9BMUx/VD5fdUeBtQPhyFxkhO5WOaGK4cgTaqLjCXO4ClC40MBWMNDBm vU69fQ== Received: from mail-pj1-f70.google.com (mail-pj1-f70.google.com [209.85.216.70]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4gf5d11f85-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 03 Sep 2026 14:47:43 +0000 (GMT) Received: by mail-pj1-f70.google.com with SMTP id 98e67ed59e1d1-396e5cc1846so578355a91.0 for ; Thu, 03 Sep 2026 07:47:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1788446862; x=1789051662; 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=JIUg5dqKmUx3gOnDsfnMRHvli1hg47iHrMdwpyv7Yns=; b=FDhgnNoj5KdZe12AjMVCTcc6x5sQa2EzwQYF2yA2pBvHGyTdiNoOzen96SSw7ffOYy mCbpcqrRRhPsb0sIBoEsek77BY16xop8TMQgWS6WcecqCQThzm2qzQcWSeLKkytqtMss ZdPb5gbi8nOM2Atw85OXoMUgCV7dYNou2pPKFVnJs+S5wtOYFFEVf/VjaisowqqLJU9w TqBDPuTPu58CCGSGdprqTRJkCuk1xNcaYhQ0/iq/OFzmgqB+lw31xv1rvEmmJS9+MBMz tj30Xm8KxFxXhidIW+yS4BhafGh3Ncg/fU7W48nbvUmdmnBa57BLFoK2tQgHeIb8WDpI eEjg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788446862; x=1789051662; 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=JIUg5dqKmUx3gOnDsfnMRHvli1hg47iHrMdwpyv7Yns=; b=dWhk0XIvBxPcCodhXrWjMC6W7lbk5U/hrsg9OAjlgp7SiEJEf4C3Je0c8+lwR0Um7s peQuZyg+lGMqUN0Q7GrxZp45A9RliYghXjlMTde7UVgpoSE5/h3jWDa8tDwefzmzNWwm NQYkbygfak+LfcEr9THiZcDktqakVy2rWFmfJ/qCfJ10xLPbOUOGG7hQkv+MfglRu55B Tre21GXow1psc+FP3Tfa5ZfuPsN/EMxJoJnCqMCpcXZ6d9DEaQVjQ4tfk6CG8HAIP6lp yAJHuvOx9Z5fxO8XpN3O7LhDsO+4z4qaSWC8i6GKLxI3TaRTBI0K7xz+jx7NN6BcFdsh +9Hg== X-Forwarded-Encrypted: i=1; AKwUvBxRc1sRvOrOsHI+UV/R9TRmaVuqvyQIqONlgRZod9pD/5tJheulrMUtknB4Z660Es9lbZ4kl5u0/V8Jnhg=@vger.kernel.org X-Gm-Message-State: AFuF++kqk7bdJQopKtranDld/hBCnGRn08Oz0w0nquyYD4cbQLo8WTCS 4ppJYx7f9eYxPNq468+v18iRFyrly+9KaJW/ohe5XUibyDtbhGDMtA5nWybyQngiuo1nxoaOEhP KMNOcjwlBgQANGfdk0jHZodqCZN+4afa254jAfZAsAdmezLWIHGZ7c49T1NkiF3xwIjcDYsZJdO A= X-Gm-Gg: AYBFou2DEWNpV1dHyOzwLa5BsimZtYEQGt2uJ5XelWYkcBBxoyyQx04f5sft/FfMYNL Tabwtl5mV/DQTV0VQFWk1s/HoLfp5FmbKZ5/bRZjx+GhVCViE6AbjORMd4zmEzBGrRrQBIyViM+ 4vjj92Hye6mgNSi/LkV7FvM4eYrw511NU1CrFpa5iV/ja77bC092UI8a0T3qGn+jnkqmxliKwkG TvsQwssTmbMBKaWNjqsywTtnegWmPQ3HP1Mat8QjTTlADUPDwzexYDH0/IvrSOA5MM7dcCf6S/B GVxcJmAewrp+hcyVZW3p3Cl2+i+NTV26VX/cqIjCyp1e2tadrekhbCRmFDZSBE4uLnn0D74wug/ lsBsdEFgNR/5xwuiYMOw2009Hh1LAT77wd5/tV0fGRMA6zYc= X-Received: by 2002:a17:90b:5828:b0:390:af7c:fe5e with SMTP id 98e67ed59e1d1-39aedf2714amr12351081a91.2.1788446862415; Thu, 03 Sep 2026 07:47:42 -0700 (PDT) X-Received: by 2002:a17:90b:5828:b0:390:af7c:fe5e with SMTP id 98e67ed59e1d1-39aedf2714amr12351015a91.2.1788446861823; Thu, 03 Sep 2026 07:47:41 -0700 (PDT) Received: from hu-zijuhu-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-143243bfbe3sm25794c88.11.2026.09.03.07.47.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Sep 2026 07:47:40 -0700 (PDT) From: Zijun Hu Date: Thu, 03 Sep 2026 07:47:15 -0700 Subject: [PATCH BlueZ v3 3/4] doc/hci-protocol: Add BT_RECV_VENDOR_PKT socket option for HCI_CHANNEL_USER 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: quoted-printable Message-Id: <20260903-vendor_hci-v3-3-015d62a57c91@oss.qualcomm.com> References: <20260903-vendor_hci-v3-0-015d62a57c91@oss.qualcomm.com> In-Reply-To: <20260903-vendor_hci-v3-0-015d62a57c91@oss.qualcomm.com> To: Marcel Holtmann , Luiz Augusto von Dentz Cc: Zijun Hu , linux-bluetooth@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.15.2 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTAzMDEyOCBTYWx0ZWRfX5BuU5l8YtHNL uSkhU4P6IAfu8W/eRT6+CQZxiXdZrYbt8kjFrACs5e2X75VUKoTvrCZOQ1qC7dLKZNAUerUgt47 lRLAO+u9G+jXoP+O9EPgpkX2wzzHulZMQUlgDkUsUptJCNqSqdXATVyqOBUTbPd/0iOOsW5lSeZ s6OheuIAVZaDCmJhBs+dHmNQmc3Bd6M8KzcWRMNJK//GkGXus4ogsQdmM0ej/k1TCJhcTpU3SjV hQn5HJ6R8zN8Te9p1RIGhH8hkN34sliC7Lq5xnkCgMQWgE3dFikeCt+7BpewGFExw+9FYi3linr LYFwia45VYzO4q5o6oNE1Rs+DwSlftzoUTNh6E1DClC5yEG4WiHkaVpjzLGPIiKFNK2zdae4LnN M6k02W39UPuQ0zJIuTeeG3SkJHUFdeFfLObQzKoTr6qlEBm0i8T4AOZZZbEgPnz8OhsNqamuius S/tJOSTZXjmm+6GeZVg== X-Proofpoint-ORIG-GUID: IAs_KG8rDPKfRBZHLwsa-aADCfCJv3rM X-Proofpoint-Spam-Info: AW1haW4tMjYwOTAzMDEyOCBTYWx0ZWRfXyG+8fSpRa0ol EPqG3uwYYPL64Ur9v38eaMHuf3HBrPfHyivuFw+5YcNDkbmnVLWqapPOOjrP9mHqPm596dVNtON dwNQvv1/2rwO54LdhzT1f7aa2LUJbpw= X-Proofpoint-GUID: IAs_KG8rDPKfRBZHLwsa-aADCfCJv3rM X-Authority-Analysis: v=2.4 cv=J4GaKgnS c=1 sm=1 tr=0 ts=6a99888f cx=c_pps a=0uOsjrqzRL749jD1oC5vDA==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=DJpcGTmdVt4CTyJn9g5Z:22 a=wa7QpaTpAAAA:8 a=Ydnp389x0cl5jbVLM_IA:9 a=QEXdDO2ut3YA:10 a=mQ_c8vxmzFEMiUWkPHU9:22 a=ehqneT2-Ts4HTEaPPMaO:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-03_04,2026-09-03_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 bulkscore=0 suspectscore=0 phishscore=0 clxscore=1015 spamscore=0 lowpriorityscore=0 priorityscore=1501 adultscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609030128 BT_RECV_VENDOR_PKT controls receiving vendor packets over HCI_CHANNEL_USER. Disabled by default to avoid regressions for existing applications. --- doc/hci-protocol.rst | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/doc/hci-protocol.rst b/doc/hci-protocol.rst index db10b35df736..53734a0037a9 100644 --- a/doc/hci-protocol.rst +++ b/doc/hci-protocol.rst @@ -131,16 +131,34 @@ Example: =20 uint16_t mtu; socklen_t len; int err; =20 len =3D sizeof(mtu); err =3D getsockopt(sock, SOL_BLUETOOTH, BT_RCVMTU, &mtu, &len); =20 +BT_RECV_VENDOR_PKT (since Linux 7.3) +------------------------------------ + +Control receiving vendor packets, requires hci_channel to be set to +HCI_CHANNEL_USER. + +Default is disabled. + +Example: + +.. code-block:: + + uint32_t enable =3D 1; + int err; + + err =3D setsockopt(fd, SOL_BLUETOOTH, BT_RECV_VENDOR_PKT, &enable, + sizeof(enable)); + RESOURCES =3D=3D=3D=3D=3D=3D=3D=3D=3D =20 http://www.bluez.org =20 REPORTING BUGS =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =20 --=20 2.34.1 From nobody Sat Sep 26 07:17:03 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.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 E3AA74BB806 for ; Thu, 3 Sep 2026 14:47:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788446867; cv=none; b=qGMQrZ9ApcYgpj9zjkmkf8BkbYoj+hqUmMmjwfxNImrO5DffXC5BVN3H6LIRpjoLtuXz1qVkuYskpTG0esfYyE6POyQ4wY8IdEJ+6mGqYQam6ZBU+fiPUB8V8F84OAwcwLcBWG2qjtEOw6QubHfkYjxc5e3wtEqmAprY+lLRuto= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788446867; c=relaxed/simple; bh=RPfD4GIbVUivEF9PyW3zvOjxcjfO/rIEZB9BSNsUCbg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=cjecqRHVaMH5ZSutwbV3WyQdvZJo47NgpIXcksw50xm3tEKlNzlQl6NkbNXB/6DxUlm7SQ0ZWetN72jLVJTN8QA9xbnUQu+bxE6voXBfqrwaVWasbVfaTlx+zLoM4pjwEBMyNl+OqfytxLRaa7Asg0JAPmG9JjmyE+TlHSS3NkY= 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=eGjIpiQx; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=K03XKhqa; arc=none smtp.client-ip=205.220.168.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="eGjIpiQx"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="K03XKhqa" Received: from pps.filterd (m0279864.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 683DB74K3580114 for ; Thu, 3 Sep 2026 14:47:45 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= 8Ye/4ckphsVg1FGVjw8O+Cv8VOuLGvTGgJRSPfv4rc4=; b=eGjIpiQxqpBJsx7z snQgu5ga/rXciQTutVO9V3T9A9AZXe/Gz3ZkbIJ1xFLn3NLQ6ilZyKRLxN/OCkMZ jWJl2pwztLlpb4hEa7nOATYnBC9KNYwIlRlGUhrBnxP9pR0IiWr6kEq8qV1qb502 QzmzB6tt8wiUeHw+Ocy8giKjfSa2NQWWp6YH0yQ2uJn/wkArKMLCCVn8bda7I2VN khDIjcdr4zZGEXg58o5GwmWb28idKGDhtgo4oB+einV9kZYfFyn+URJm3bcYh3T8 lMSpwRe8CGEn2B/R2rZr0AsiLSykvrLeOwEhp33dyTKJEBZjQU9tp+giYDdGNKeU Bk9voA== Received: from mail-pj1-f71.google.com (mail-pj1-f71.google.com [209.85.216.71]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4gf5d11f8b-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 03 Sep 2026 14:47:45 +0000 (GMT) Received: by mail-pj1-f71.google.com with SMTP id 98e67ed59e1d1-39924189378so683933a91.1 for ; Thu, 03 Sep 2026 07:47:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1788446864; x=1789051664; 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=8Ye/4ckphsVg1FGVjw8O+Cv8VOuLGvTGgJRSPfv4rc4=; b=K03XKhqaiooL3nVxIfmasKel0HAQXpmQhe/sGnb3z8JpUsVSvRxd7Hs8rdeESsNKgn 39fDatiknEly7b5zvBRXElgzR6HANr4jKw7GWdvxQm+Nb0ppWwpMfsGnX7wPHwozU8Ny ZL2l/r1ObmuLf4rnDQR/iBDMYP6ly1vt7iSI4oJYmdUzUwHrSW5M8Pz81CIo9cjIdzKV bAKGeAT6GBTCf/JPBAiDxF87Y0oImUFqQxxZL8Nt2L80ug1QmQpTOqtDKZnEz1jV4LR9 MaRvFbDQtXcNDE56xLo2mPpf8rzLTtCR005ZWgLwjiSzO+ULXm9KKgfP9swm4n6Oh26t Dj2g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788446864; x=1789051664; 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=8Ye/4ckphsVg1FGVjw8O+Cv8VOuLGvTGgJRSPfv4rc4=; b=nmEGbKK5dqiJCKRfu2A0dJYCta++1sRfbxrIAePzbtzi+Z31vYKfUrCvSmSt8K6OeE 94bxGk3W0xcAF+dKOsx7zRq5H827qAQ/kilDp671/LCFYy29RYV6oxBj0EnZU/HSY09n YbtJCMr+dmTaC0rIPck/PcvRCqoeGcGAL8L10XR4XzGf5vT/PZArHKp2XZQOSemxp4cb JJLZkvYRoaaY80UV+fpzN0Ie5wHZvjRlDjaML3bYUuQlDJZNq0zmvj0Zb68m3tBRw0Ut rkrl2ImeWHm9ZatQ6eD9elFP91BGk7Wak6ja8Ud1NUXNL+iT0Z4wyGavk6lBps1QfLCC I2+A== X-Forwarded-Encrypted: i=1; AKwUvByf4f5tmZffVJ/PeRNbdCo05ONkN++i0HrgJIbeH8ksB5dBt9T5exYNCQ8lxDmXPDxjASX6m08MMRKUHeE=@vger.kernel.org X-Gm-Message-State: AFuF++nJbWaWGZplmkGkyn63uIP7DhAONt8J6LR+v2sWtNaGkKWocTR/ CNsaADc0NyHhQR+3NbpnrnF5Ls47aN9YzJM4nVB05DfrmeMgVmCH6THCXZaYsFVlHbkjNaTgyUE GDFXmVbdRNdiQ7osHDS+rvAy8p42aC5hgeHoMXpw0/c15Eq59mKqJVzS37M3Hgzl+mPoAAVmYtO s= X-Gm-Gg: AYBFou1GCXw30ZJ1gMZ47LEtYJ1whIt/g1PJqkVkW9fq+PD78BJQXHcjHZNiGy6qLZQ 1Uei5tTtFk582zQwhs5qdhknYKmnfJl84R9D+ZhUSLxeFr+VoPsY/ptnKM1L9kjI8tVfpWHwt7B aiIB56uUlGE1GkwMV/VXROVmwMAWAkXGqx7/VcQRaXrio4ogiemVnbGHEFAgBrpwffSkJwAmfi4 rQHCrXygvW5UnUQZHvggjuFKq3wc/Gl0Cn7Ece5f5PQZ2rrasctzvu3e7Twvh0/7NiXxMzylVyl E4cxJp5JielmEiNx/SzxlDeJKj1AiSzZl9xu7Z6GyUykVDO7y3x6Kmyd2zzbwJSvNeRqFsXZsAE iJu9HvwD3GKNDjzMhwUYiixESI1Pr031zaipzyfZMgxC+y+E= X-Received: by 2002:a17:90b:520f:b0:38e:ab3f:2c99 with SMTP id 98e67ed59e1d1-39aedf3afc9mr13187050a91.2.1788446864418; Thu, 03 Sep 2026 07:47:44 -0700 (PDT) X-Received: by 2002:a17:90b:520f:b0:38e:ab3f:2c99 with SMTP id 98e67ed59e1d1-39aedf3afc9mr13186989a91.2.1788446863881; Thu, 03 Sep 2026 07:47:43 -0700 (PDT) Received: from hu-zijuhu-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-143243bfbe3sm25794c88.11.2026.09.03.07.47.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Sep 2026 07:47:42 -0700 (PDT) From: Zijun Hu Date: Thu, 03 Sep 2026 07:47:16 -0700 Subject: [PATCH BlueZ v3 4/4] monitor: Support vendor packets 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: quoted-printable Message-Id: <20260903-vendor_hci-v3-4-015d62a57c91@oss.qualcomm.com> References: <20260903-vendor_hci-v3-0-015d62a57c91@oss.qualcomm.com> In-Reply-To: <20260903-vendor_hci-v3-0-015d62a57c91@oss.qualcomm.com> To: Marcel Holtmann , Luiz Augusto von Dentz Cc: Zijun Hu , linux-bluetooth@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.15.2 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTAzMDEyOCBTYWx0ZWRfX4uB3a8VqP2gD vRb95hBkeZOlojd5Nz/J8qrQJK1Moob6z0VizJnnV6cQo2kayJrdqV5rWz7s/JTNRtcg2H6c/g6 u1JgjHYrV0rne95sWvelGLRqFhajBkwD7w+iB73FgOGOpmuqpWP6OE8sThxBdDJTHjl0zs7iS3K YiWb/DJjN9PJnooqJutBH7puKEfOCQBpcoQty1Gs9s9jEIip7gHvME3/JRG3zgEK0IrK8J/DykK rV6vpSVZT187O3roHsKnON9bINRPIrDjgefnLNv7iwmyxJYe5HbtCO16RaYgbTW7h7ZYU9BxSBu tVLxKrmXWqP8w8bJ5evuqG27Yanc3l4+973izwswqp9yavNrA+kyq40d0NHO4nPY3+j4yxxe78h /yiOwzXmw/0FTAJt9LG6tWJkbPsVVEMHLsZg0v+IPRGyqf0EPINSdNLgmFU54S0laTyVvS2cA5U y1t1peeJgfyKGg/9ing== X-Proofpoint-ORIG-GUID: jr0p02MRNUTvA-4tGtkK6mBCzTcUPSSv X-Proofpoint-Spam-Info: AW1haW4tMjYwOTAzMDEyOCBTYWx0ZWRfX9HF340P4Ny92 TmL9kNtbz+GJ5wt1gdaSsEtrh8Na2zBnRksHu727D7wOtodCNGI82Ylqkj6kPCd5KB/EbFWIatm W7+3uHag1QC0wUu++fC4E7Eo6Is4da0= X-Proofpoint-GUID: jr0p02MRNUTvA-4tGtkK6mBCzTcUPSSv X-Authority-Analysis: v=2.4 cv=J4GaKgnS c=1 sm=1 tr=0 ts=6a998891 cx=c_pps a=UNFcQwm+pnOIJct1K4W+Mw==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=DJpcGTmdVt4CTyJn9g5Z:22 a=wKszYPmeBrtX0xbgVwQA:9 a=QEXdDO2ut3YA:10 a=uKXjsCUrEbL0IQVhDsJ9:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-03_04,2026-09-03_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 bulkscore=0 suspectscore=0 phishscore=0 clxscore=1015 spamscore=0 lowpriorityscore=0 priorityscore=1501 adultscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609030128 Kernel include/net/bluetooth/hci.h defines its packet type as: #define HCI_VENDOR_PKT 0xff - Defined by vendor - Bidirectional (RX and TX) - kernel <-> userspace: HCI_VENDOR_PKT followed by vendor packet - kernel <-> monitor: vendor packet has TX opcode (22) or RX opcode (23) Support them in tool btmon. --- doc/btsnoop-protocol.rst | 8 ++++++++ monitor/analyze.c | 23 +++++++++++++++++++++++ monitor/packet.c | 26 ++++++++++++++++++++++++++ monitor/packet.h | 2 ++ src/shared/btsnoop.h | 2 ++ 5 files changed, 61 insertions(+) diff --git a/doc/btsnoop-protocol.rst b/doc/btsnoop-protocol.rst index a875db63a9dd..ba1eb858f185 100644 --- a/doc/btsnoop-protocol.rst +++ b/doc/btsnoop-protocol.rst @@ -111,16 +111,24 @@ values match the definitions in ``src/shared/btsnoop.= h``. * - BTSNOOP_OPCODE_ISO_TX_PKT - 18 - 0x0012 - Outgoing ISO packet * - BTSNOOP_OPCODE_ISO_RX_PKT - 19 - 0x0013 - Incoming ISO packet + * - BTSNOOP_OPCODE_VENDOR_TX_PKT + - 22 + - 0x0016 + - Outgoing vendor packet + * - BTSNOOP_OPCODE_VENDOR_RX_PKT + - 23 + - 0x0017 + - Incoming vendor packet =20 New Index --------- =20 Code: 0x0000 =20 Parameters: =20 diff --git a/monitor/analyze.c b/monitor/analyze.c index de9c23603a21..e3b2c2fe65f2 100644 --- a/monitor/analyze.c +++ b/monitor/analyze.c @@ -39,16 +39,17 @@ struct hci_dev { struct timeval time_added; struct timeval time_removed; unsigned long num_hci; unsigned long num_cmd; unsigned long num_evt; unsigned long num_acl; unsigned long num_sco; unsigned long num_iso; + unsigned long num_vendor; unsigned long vendor_diag; unsigned long system_note; unsigned long user_log; unsigned long ctrl_msg; unsigned long unknown; uint16_t manufacturer; struct queue *conn_list; }; @@ -460,16 +461,17 @@ static void dev_destroy(void *data) printf("\n"); =20 =20 printf(" %lu commands\n", dev->num_cmd); printf(" %lu events\n", dev->num_evt); printf(" %lu ACL packets\n", dev->num_acl); printf(" %lu SCO packets\n", dev->num_sco); printf(" %lu ISO packets\n", dev->num_iso); + printf(" %lu vendor packets\n", dev->num_vendor); printf(" %lu vendor diagnostics\n", dev->vendor_diag); printf(" %lu system notes\n", dev->system_note); printf(" %lu user logs\n", dev->user_log); printf(" %lu control messages \n", dev->ctrl_msg); printf(" %lu unknown opcodes\n", dev->unknown); queue_destroy(dev->conn_list, conn_destroy); printf("\n"); =20 @@ -1357,16 +1359,29 @@ static void iso_pkt(struct timeval *tv, uint16_t in= dex, bool out, =20 if (out) { conn_pkt_tx(conn, tv, size - sizeof(*hdr), NULL); } else { conn_pkt_rx(conn, tv, size - sizeof(*hdr), NULL); } } =20 +static void vendor_pkt(struct timeval *tv, uint16_t index, bool out, + const void *data, uint16_t size) +{ + struct hci_dev *dev; + + dev =3D dev_lookup(index); + if (!dev) + return; + + dev->num_hci++; + dev->num_vendor++; +} + static void unknown_opcode(struct timeval *tv, uint16_t index, const void *data, uint16_t size) { struct hci_dev *dev; =20 dev =3D dev_lookup(index); if (!dev) return; @@ -1463,16 +1478,24 @@ void analyze_trace(const char *path) case BTSNOOP_OPCODE_ISO_TX_PKT: num_frames++; iso_pkt(&tv, index, true, buf, pktlen); break; case BTSNOOP_OPCODE_ISO_RX_PKT: num_frames++; iso_pkt(&tv, index, false, buf, pktlen); break; + case BTSNOOP_OPCODE_VENDOR_TX_PKT: + num_frames++; + vendor_pkt(&tv, index, true, buf, pktlen); + break; + case BTSNOOP_OPCODE_VENDOR_RX_PKT: + num_frames++; + vendor_pkt(&tv, index, false, buf, pktlen); + break; default: unknown_opcode(&tv, index, buf, pktlen); break; } =20 num_packets++; } =20 diff --git a/monitor/packet.c b/monitor/packet.c index 08051f434ba2..1b1e8c3ecdab 100644 --- a/monitor/packet.c +++ b/monitor/packet.c @@ -67,16 +67,17 @@ =20 #define COLOR_HCI_COMMAND COLOR_BLUE #define COLOR_HCI_COMMAND_UNKNOWN COLOR_WHITE_BG #define COLOR_HCI_EVENT COLOR_MAGENTA #define COLOR_HCI_EVENT_UNKNOWN COLOR_WHITE_BG #define COLOR_HCI_ACLDATA COLOR_CYAN #define COLOR_HCI_SCODATA COLOR_YELLOW #define COLOR_HCI_ISODATA COLOR_YELLOW +#define COLOR_HCI_VENDOR COLOR_GREEN =20 #define COLOR_UNKNOWN_ERROR COLOR_WHITE_BG #define COLOR_UNKNOWN_FEATURE_BIT COLOR_WHITE_BG #define COLOR_UNKNOWN_COMMAND_BIT COLOR_WHITE_BG #define COLOR_UNKNOWN_EVENT_MASK COLOR_WHITE_BG #define COLOR_UNKNOWN_LE_STATES COLOR_WHITE_BG #define COLOR_UNKNOWN_SERVICE_CLASS COLOR_WHITE_BG #define COLOR_UNKNOWN_PKT_TYPE_BIT COLOR_WHITE_BG @@ -4523,16 +4524,22 @@ void packet_monitor(struct timeval *tv, struct ucre= d *cred, packet_hci_scodata(tv, cred, index, true, data, size); break; case BTSNOOP_OPCODE_ISO_TX_PKT: packet_hci_isodata(tv, cred, index, false, data, size); break; case BTSNOOP_OPCODE_ISO_RX_PKT: packet_hci_isodata(tv, cred, index, true, data, size); break; + case BTSNOOP_OPCODE_VENDOR_TX_PKT: + packet_hci_vendor(tv, cred, index, false, data, size); + break; + case BTSNOOP_OPCODE_VENDOR_RX_PKT: + packet_hci_vendor(tv, cred, index, true, data, size); + break; case BTSNOOP_OPCODE_OPEN_INDEX: if (index < MAX_INDEX) addr2str(index_list[index].bdaddr, str); else sprintf(str, "00:00:00:00:00:00"); =20 packet_open_index(tv, index, str); break; @@ -14650,16 +14657,35 @@ malformed: print_packet(tv, cred, '*', index, NULL, COLOR_ERROR, "Malformed ISO Data RX packet", NULL, NULL); else print_packet(tv, cred, '*', index, NULL, COLOR_ERROR, "Malformed ISO Data TX packet", NULL, NULL); packet_hexdump(data, size); } =20 +void packet_hci_vendor(struct timeval *tv, struct ucred *cred, uint16_t in= dex, + bool in, const void *data, uint16_t size) +{ + char extra_str[16]; + + if (index >=3D MAX_INDEX) { + print_field("Invalid index (%d).", index); + return; + } + + index_list[index].frame++; + + sprintf(extra_str, "(len %d)", size); + print_packet(tv, cred, in ? '>' : '<', index, NULL, COLOR_HCI_VENDOR, + "HCI Vendor", NULL, extra_str); + + packet_hexdump(data, size); +} + void packet_ctrl_open(struct timeval *tv, struct ucred *cred, uint16_t ind= ex, const void *data, uint16_t size) { uint32_t cookie; uint16_t format; char channel[11]; =20 if (size < 6) { diff --git a/monitor/packet.h b/monitor/packet.h index 73a86f64b242..8c519eca61c1 100644 --- a/monitor/packet.h +++ b/monitor/packet.h @@ -130,16 +130,18 @@ void packet_hci_command(struct timeval *tv, struct uc= red *cred, uint16_t index, void packet_hci_event(struct timeval *tv, struct ucred *cred, uint16_t ind= ex, const void *data, uint16_t size); void packet_hci_acldata(struct timeval *tv, struct ucred *cred, uint16_t i= ndex, bool in, const void *data, uint16_t size); void packet_hci_scodata(struct timeval *tv, struct ucred *cred, uint16_t i= ndex, bool in, const void *data, uint16_t size); void packet_hci_isodata(struct timeval *tv, struct ucred *cred, uint16_t i= ndex, bool in, const void *data, uint16_t size); +void packet_hci_vendor(struct timeval *tv, struct ucred *cred, uint16_t in= dex, + bool in, const void *data, uint16_t size); =20 void packet_ctrl_open(struct timeval *tv, struct ucred *cred, uint16_t ind= ex, const void *data, uint16_t size); void packet_ctrl_close(struct timeval *tv, struct ucred *cred, uint16_t in= dex, const void *data, uint16_t size); void packet_ctrl_command(struct timeval *tv, struct ucred *cred, uint16_t = index, const void *data, uint16_t size); void packet_ctrl_event(struct timeval *tv, struct ucred *cred, uint16_t in= dex, diff --git a/src/shared/btsnoop.h b/src/shared/btsnoop.h index c24755d56729..efa87a8f2971 100644 --- a/src/shared/btsnoop.h +++ b/src/shared/btsnoop.h @@ -37,16 +37,18 @@ #define BTSNOOP_OPCODE_SYSTEM_NOTE 12 #define BTSNOOP_OPCODE_USER_LOGGING 13 #define BTSNOOP_OPCODE_CTRL_OPEN 14 #define BTSNOOP_OPCODE_CTRL_CLOSE 15 #define BTSNOOP_OPCODE_CTRL_COMMAND 16 #define BTSNOOP_OPCODE_CTRL_EVENT 17 #define BTSNOOP_OPCODE_ISO_TX_PKT 18 #define BTSNOOP_OPCODE_ISO_RX_PKT 19 +#define BTSNOOP_OPCODE_VENDOR_TX_PKT 22 +#define BTSNOOP_OPCODE_VENDOR_RX_PKT 23 =20 #define BTSNOOP_MAX_PACKET_SIZE (1486 + 4) =20 #define BTSNOOP_TYPE_PRIMARY 0 #define BTSNOOP_TYPE_AMP 1 =20 #define BTSNOOP_BUS_VIRTUAL 0 #define BTSNOOP_BUS_USB 1 --=20 2.34.1