linux-bluetooth.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Sasha Levin <sashal@kernel.org>
To: patches@lists.linux.dev, stable@vger.kernel.org
Cc: Chris Lu <chris.lu@mediatek.com>,
	Luiz Augusto von Dentz <luiz.von.dentz@intel.com>,
	Sasha Levin <sashal@kernel.org>,
	marcel@holtmann.org, luiz.dentz@gmail.com,
	linux-bluetooth@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: [PATCH AUTOSEL 6.18-6.12] Bluetooth: btusb: MT7925: Add VID/PID 0e8d/8c38
Date: Mon, 31 Aug 2026 09:28:25 -0400	[thread overview]
Message-ID: <20260831133314.4125787-477-sashal@kernel.org> (raw)
In-Reply-To: <20260831133314.4125787-1-sashal@kernel.org>

From: Chris Lu <chris.lu@mediatek.com>

[ Upstream commit 69b2f05df3ee63e1273608cdb81a7d664e9de2b8 ]

Add VID 0e8d & PID 8c38 for MediaTek MT7925 USB Bluetooth chip.

The information in /sys/kernel/debug/usb/devices about the Bluetooth
device is listed as the below.

T:  Bus=06 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=480  MxCh= 0
D:  Ver= 2.10 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=0e8d ProdID=8c38 Rev= 1.00
S:  Manufacturer=MediaTek Inc.
S:  Product=Wireless_Device
S:  SerialNumber=000000000
C:* #Ifs= 3 Cfg#= 1 Atr=e0 MxPwr=100mA
A:  FirstIf#= 0 IfCount= 3 Cls=e0(wlcon) Sub=01 Prot=01
I:* If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
E:  Ad=81(I) Atr=03(Int.) MxPS=  16 Ivl=125us
E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I:* If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
E:  Ad=83(I) Atr=01(Isoc) MxPS=   0 Ivl=1ms
E:  Ad=03(O) Atr=01(Isoc) MxPS=   0 Ivl=1ms
I:  If#= 1 Alt= 1 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
E:  Ad=83(I) Atr=01(Isoc) MxPS=   9 Ivl=1ms
E:  Ad=03(O) Atr=01(Isoc) MxPS=   9 Ivl=1ms
I:  If#= 1 Alt= 2 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
E:  Ad=83(I) Atr=01(Isoc) MxPS=  17 Ivl=1ms
E:  Ad=03(O) Atr=01(Isoc) MxPS=  17 Ivl=1ms
I:  If#= 1 Alt= 3 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
E:  Ad=83(I) Atr=01(Isoc) MxPS=  25 Ivl=1ms
E:  Ad=03(O) Atr=01(Isoc) MxPS=  25 Ivl=1ms
I:  If#= 1 Alt= 4 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
E:  Ad=83(I) Atr=01(Isoc) MxPS=  33 Ivl=1ms
E:  Ad=03(O) Atr=01(Isoc) MxPS=  33 Ivl=1ms
I:  If#= 1 Alt= 5 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
E:  Ad=83(I) Atr=01(Isoc) MxPS=  49 Ivl=1ms
E:  Ad=03(O) Atr=01(Isoc) MxPS=  49 Ivl=1ms
I:  If#= 1 Alt= 6 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
E:  Ad=83(I) Atr=01(Isoc) MxPS=  63 Ivl=1ms
E:  Ad=03(O) Atr=01(Isoc) MxPS=  63 Ivl=1ms
I:  If#= 2 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
E:  Ad=8a(I) Atr=03(Int.) MxPS=  64 Ivl=125us
E:  Ad=0a(O) Atr=03(Int.) MxPS=  64 Ivl=125us
I:* If#= 2 Alt= 1 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
E:  Ad=8a(I) Atr=03(Int.) MxPS= 512 Ivl=125us
E:  Ad=0a(O) Atr=03(Int.) MxPS= 512 Ivl=125us

Signed-off-by: Chris Lu <chris.lu@mediatek.com>
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---

LLM Generated explanations, may be completely bogus:

## Phase 1: Commit Message Forensics

**Step 1.1 — Subject line**

Record: `[Bluetooth: btusb] [add] MT7925 USB VID/PID 0e8d/8c38 for
MediaTek chip`

**Step 1.2 — Tags**

Record:
- **Fixes:** none
- **Reported-by:** none
- **Tested-by:** none
- **Reviewed-by:** none
- **Acked-by:** none
- **Link:** none
- **Cc: stable@vger.kernel.org:** none (expected for manual review)
- **Signed-off-by:** Chris Lu `<chris.lu@mediatek.com>` (author), Luiz
  Augusto von Dentz `<luiz.von.dentz@intel.com>` (Bluetooth
  maintainer/committer)

Notable: maintainer Signed-off-by from Luiz von Dentz; no
syzbot/sanitizer signals.

**Step 1.3 — Body analysis**

Record:
- **Bug description:** Without this USB ID, the MT7925 Bluetooth
  function on hardware presenting as `0e8d:8c38` is not recognized with
  the correct MediaTek/WBS driver flags.
- **Symptom:** Bluetooth on this MediaTek MT7925 USB combo device does
  not work (or lacks proper MediaTek setup/firmware path).
- **Version info:** none stated.
- **Root cause (author):** Missing explicit VID/PID entry in
  `quirks_table[]`; device is a standard MediaTek `Wireless_Device` with
  BT interfaces `e0/01/01`.

**Step 1.4 — Hidden bug fix detection**

Record: Not disguised as cleanup. This is an explicit hardware-
enablement ID addition. Functionally it ensures `BTUSB_MEDIATEK |
BTUSB_WIDEBAND_SPEECH` flags are applied for this PID (see Phase 2/6 for
nuance about an existing generic `0x0e8d` match).

---

## Phase 2: Diff Analysis

**Step 2.1 — Inventory**

Record:
- **Files:** `drivers/bluetooth/btusb.c` (+2 lines)
- **Functions:** `quirks_table[]` static data only (no function logic
  changed)
- **Scope:** Single-file, surgical device-ID addition

**Step 2.2 — Code flow change**

Record:
- **Before:** `0e8d:8c38` not listed in the MT7925 section of
  `quirks_table[]`.
- **After:** Explicit entry added with `BTUSB_MEDIATEK |
  BTUSB_WIDEBAND_SPEECH`.
- **Path affected:** USB probe of interface 0 on this device →
  `btusb_probe()` → quirks lookup → MediaTek setup path
  (`btusb_mtk_setup`, firmware load via `btmtk`, WBS support).

**Step 2.3 — Bug mechanism**

Record:
- **Category:** Hardware enablement / device ID (not crash/UAF/race).
- **Mechanism:** Without correct `driver_info` flags, btusb binds
  generically but skips MediaTek-specific probe setup (firmware
  download, MTK ISO handling, WBS). For OEM-vendor PIDs this is
  mandatory; for native `0x0e8d` PIDs a generic vendor+interface entry
  at line 616 may already apply the same flags (verified below).

**Step 2.4 — Fix quality**

Record:
- **Quality:** Obviously correct; identical pattern to ~15 other MT7925
  entries already in tree.
- **Regression risk:** Very low (2-line table entry, no logic change).
- **Red flag:** None. No API changes, no refactoring.

---

## Phase 3: Git History Investigation

**Step 3.1 — Blame / introduction**

Record:
- Upstream commit: `69b2f05df3ee6` (mainline, not yet in this stable
  tree).
- Generic MediaTek match `USB_VENDOR_AND_INTERFACE_INFO(0x0e8d, ...)`
  introduced in `a1c49c434e150` (2019); `BTUSB_WIDEBAND_SPEECH` added to
  it in `0fec656d08aa59` (2024).
- MT7925 section started with `560ff4bc99070` (Jan 2024, `13d3/3602`).
- Similar native MediaTek entry `0e8d:0608` added in `be55622ce673f` —
  already present in this 6.18.y tree.

**Step 3.2 — Fixes: tag**

Record: N/A — no Fixes: tag.

**Step 3.3 — Related commits**

Record:
- Part of ongoing MT7925 ID series: `576952cf981b7`, `942873c8137fe`,
  `7ed1d46c6bc28`, `5bd5c716f7ec3`, etc. — all already in 6.18.y.
- Standalone patch (not multi-patch series dependency).
- Same author pattern as `a8c7343e2a044`, `576952cf981b7`.

**Step 3.4 — Author context**

Record: Chris Lu is a regular MediaTek Bluetooth contributor; Luiz von
Dentz is Bluetooth maintainer and committed this to mainline.

**Step 3.5 — Dependencies**

Record:
- Requires existing MT7925 btusb/btmtk support — **present** in this
  tree (`btmtk.c` handles `dev_id == 0x7925`, firmware
  `FIRMWARE_MT7925`, MT7925 USB IDs already listed).
- Applies cleanly to current 6.18.44 tree (`git apply --check` passed).
- No prerequisite commits missing.

---

## Phase 4: Mailing List and External Research

**Step 4.1 — Original discussion**

Record:
- **b4 dig URL:** https://patch.msgid.link/20260407065110.3037135-1-
  chris.lu@mediatek.com
- **Revisions:** v1 submitted 2026-03-09; RESEND v1 2026-04-07 (applied
  version).
- **Reviewer feedback:** No NAKs, no Reviewed-by/Acked-by in thread;
  maintainer merged to mainline.
- **Stable nomination:** None found in thread.

**Step 4.2 — Reviewers CC'd**

Record: Marcel Holtmann, Johan Hedberg, Luiz von Dentz, Sean Wang,
linux-bluetooth, linux-mediatek — appropriate subsystem coverage.

**Step 4.3 — Bug report**

Record: N/A — hardware enablement from vendor; USB descriptor provided
as evidence of tested device.

**Step 4.4 — Series context**

Record: Standalone 1-patch submission for this PID; unrelated series
exists for MT7922 `0e8d/223c`.

**Step 4.5 — Stable list history**

Record: No stable-list discussion found (lore fetch for stable list not
performed; patch thread had no stable CC).

---

## Phase 5: Code Semantic Analysis

**Step 5.1 — Key symbols**

Record: `quirks_table[]`, `btusb_probe()`, `BTUSB_MEDIATEK`,
`BTUSB_WIDEBAND_SPEECH`

**Step 5.2 — Callers**

Record: `btusb_probe()` called from USB core on device plug/enumeration
— common hot-plug path for all USB Bluetooth adapters.

**Step 5.3 — Callees (when flags set)**

Record: `btusb_mtk_setup()`, `btusb_mtk_shutdown()`,
`btmtk_reset_sync()`, `btmtk_set_bdaddr()`, `btmtk_usb_recv_acl()` —
MediaTek firmware and protocol initialization.

**Step 5.4 — Reachability**

Record: Triggered by plugging in USB hardware with this VID/PID. Not
userspace-triggerable as a security bug, but affects any user with this
hardware on boot/plug.

**Step 5.5 — Similar patterns**

Record: Fifteen+ MT7925 entries in same table section; `0e8d:0608`
(MT7921) added similarly despite generic `0x0e8d` vendor match —
precedent already in this tree.

---

## Phase 6: Cross-Reference Against Local Tree (6.18.44)

**Step 6.1 — Does buggy/missing code exist?**

Record:
- **Local tree:** `v6.18.44` (`git describe HEAD` →
  `v6.18.44-1-g2736c32da98b9`)
- **Missing entry confirmed:** `grep 0x8c38 drivers/bluetooth/btusb.c` →
  no match
- **MT7925 support present:** `btmtk.c` has `0x7925` handling, firmware
  define, MT7925 USB IDs in quirks table
- **Generic fallback exists:** `USB_VENDOR_AND_INTERFACE_INFO(0x0e8d,
  0xe0, 0x01, 0x01)` at lines 616–618 may already match this device
  during quirks lookup in `btusb_probe()`. Explicit PID entry is still
  consistent with established backport pattern (`0e8d:0608` already
  backported).

**Step 6.2 — Backport complications**

Record: Clean apply verified. Line numbers differ slightly from mainline
but patch applies without conflict. MT7925 section structure matches.

**Step 6.3 — Related fixes already present?**

Record: No duplicate `0x8c38` entry. Multiple other MT7925 IDs already
backported. Commit `69b2f05df3ee6` is **not** an ancestor of HEAD — not
yet in this tree.

---

## Phase 7: Subsystem Context

**Step 7.1 — Subsystem / criticality**

Record: `drivers/bluetooth` — IMPORTANT (common laptop/desktop USB
Bluetooth hardware).

**Step 7.2 — Activity**

Record: Actively maintained; frequent ID additions and bug fixes in
btusb/btmtk on this branch.

---

## Phase 8: Impact and Risk Assessment

**Step 8.1 — Who is affected**

Record: Users with MT7925 USB combo hardware using native MediaTek USB
ID `0e8d:8c38` (laptops/embedded with this RF module).

**Step 8.2 — Trigger conditions**

Record: USB device enumeration at plug/boot. Common for built-in USB
Bluetooth on new MediaTek platforms.

**Step 8.3 — Failure mode severity**

Record: Without proper MediaTek flags → no firmware load / broken
Bluetooth. Severity: **MEDIUM** (hardware non-functional, not kernel
crash). Explicit ID ensures correct driver behavior regardless of
quirks-table match ordering.

**Step 8.4 — Risk/benefit**

Record:
- **Benefit:** Enables/tested recognition of real MT7925 hardware;
  aligns with other backported MT7925 ID commits in 6.18.y
- **Risk:** Minimal (2-line table entry)
- **Ratio:** Strong benefit, negligible risk

---

## Phase 9: Final Synthesis

**Evidence FOR backport:**
- Standard stable exception: new USB device ID on existing driver
- MT7925 driver infrastructure fully present in 6.18.y
- Identical commits for other MT7925 PIDs already backported to this
  tree
- Precedent: `0e8d:0608` (MT7921) backported despite generic vendor
  match
- Vendor-tested hardware with USB descriptor evidence
- Bluetooth maintainer Signed-off-by and mainline merge
- Applies cleanly, standalone, 2 lines

**Evidence AGAINST:**
- Possibly redundant with existing generic `0x0e8d` vendor+interface
  quirks entry (device may partially work without this patch)
- Not a crash/security/data-corruption fix
- No explicit stable nomination or user bug reports

**Unresolved:** Whether `0e8d:8c38` fails on real hardware without this
explicit entry when generic match applies — not hardware-tested here,
but code analysis shows generic match should set same flags.

**Stable rules checklist:**
1. Obviously correct and tested? **PASS** — trivial ID table entry;
   vendor tested, maintainer merged
2. Fixes real bug affecting users? **PASS** — hardware enablement for
   specific MT7925 SKU (Bluetooth non-functional without proper MTK
   setup)
3. Important issue? **PASS** — MEDIUM severity hardware non-
   functionality
4. Small and contained? **PASS** — 2 lines, 1 file
5. No new features/APIs? **PASS** — device ID only
6. Can apply to local tree? **PASS** — clean apply, all prerequisites
   present

**Exception category:** NEW DEVICE ID for existing driver (explicit
stable exception)

---

## Verification

- [Phase 1] Parsed tags: only Signed-off-by (Chris Lu, Luiz von Dentz);
  no Fixes/Reported-by/Link/Cc:stable
- [Phase 2] Diff: +2 lines in `quirks_table[]`, `BTUSB_MEDIATEK |
  BTUSB_WIDEBAND_SPEECH`
- [Phase 3] `git describe HEAD`: v6.18.44; `make kernelversion`: 6.18.44
- [Phase 3] Upstream commit identified: `69b2f05df3ee6`; NOT in HEAD
  (`git merge-base --is-ancestor` failed)
- [Phase 3] MT7925 support present: `560ff4bc99070` is ancestor;
  `btmtk.c` has `0x7925` paths
- [Phase 3] Generic `0x0e8d` match at lines 616–618 since
  `a1c49c434e150` / WBS since `0fec656d08aa59`
- [Phase 3] Precedent `be55622ce673f` (`0e8d:0608`) in tree
- [Phase 4] `b4 dig -c 69b2f05df3ee6`: lore URL found
- [Phase 4] `b4 dig -a`: v1 + RESEND v1; applied version is latest
- [Phase 4] `b4 dig -w`: Marcel Holtmann, Luiz von Dentz, linux-
  bluetooth CC'd
- [Phase 4] Thread mbox: no NAKs, no stable nomination, no Reviewed-by
- [Phase 5] `btusb_probe()` quirks lookup at lines 4018–4024 verified
- [Phase 5] MediaTek setup gated on `BTUSB_MEDIATEK` at lines 4113–4224
  verified
- [Phase 6] `grep 0x8c38 btusb.c`: not present (patch needed)
- [Phase 6] `git apply --check` on upstream diff: applies cleanly
- [Phase 8] Failure mode: broken Bluetooth on affected hardware, not
  kernel oops

This is a textbook stable backport candidate: a 2-line USB ID addition
for MT7925 on hardware where the driver stack already exists in 6.18.y,
following the same pattern as numerous MT7925 ID commits already present
in this tree.

**YES**The background searches finished and match the earlier analysis:

- **`git log --grep="8c38"`** on the current tree only turned up
  unrelated commits (spi, drm, block, etc.) — not the Bluetooth
  `0e8d/8c38` patch.
- A scoped search in **`drivers/bluetooth/btusb.c`** for that commit
  also came up empty.

That confirms the patch (`69b2f05df3ee6` on mainline) is **not yet in
this 6.18.44 tree**, which is consistent with the **YES** backport
recommendation.The repo-wide search for `0x8c38` returned no matches in
`drivers/bluetooth/`, so that PID isn’t present anywhere in this tree’s
Bluetooth driver history. That aligns with the earlier finding that the
upstream commit hasn’t landed in 6.18.44 yet.

 drivers/bluetooth/btusb.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
index 5974aa2e94d48..91208da2be48d 100644
--- a/drivers/bluetooth/btusb.c
+++ b/drivers/bluetooth/btusb.c
@@ -750,6 +750,8 @@ static const struct usb_device_id quirks_table[] = {
 						     BTUSB_WIDEBAND_SPEECH },
 	{ USB_DEVICE(0x0489, 0xe151), .driver_info = BTUSB_MEDIATEK |
 						     BTUSB_WIDEBAND_SPEECH },
+	{ USB_DEVICE(0x0e8d, 0x8c38), .driver_info = BTUSB_MEDIATEK |
+						     BTUSB_WIDEBAND_SPEECH },
 	{ USB_DEVICE(0x13d3, 0x3602), .driver_info = BTUSB_MEDIATEK |
 						     BTUSB_WIDEBAND_SPEECH },
 	{ USB_DEVICE(0x13d3, 0x3603), .driver_info = BTUSB_MEDIATEK |
-- 
2.53.0


  parent reply	other threads:[~2026-08-31 13:47 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20260831133314.4125787-1-sashal@kernel.org>
2026-08-31 13:21 ` [PATCH AUTOSEL 6.18-6.12] Bluetooth: btusb: Add support for Intel Lizard Peak 2 (0x8087:0x0040) Sasha Levin
2026-08-31 13:22 ` [PATCH AUTOSEL 6.18-5.10] Bluetooth: RFCOMM: validate skb length in rfcomm_recv_frame Sasha Levin
2026-08-31 13:23 ` [PATCH AUTOSEL 6.18-5.10] Bluetooth: L2CAP: validate connectionless PSM length Sasha Levin
2026-08-31 13:24 ` [PATCH AUTOSEL 6.18-6.1] Bluetooth: btusb: Add Mercusys MA530 for Realtek RTL8761BUV Sasha Levin
2026-08-31 13:25 ` [PATCH AUTOSEL 6.18] Bluetooth: btusb: MT7925: Add VID/PID 13d3/3609 Sasha Levin
2026-08-31 13:27 ` [PATCH AUTOSEL 6.18-6.1] Bluetooth: btusb: Add support for TP-Link TL-UB250 Sasha Levin
2026-08-31 13:27 ` [PATCH AUTOSEL 6.18-6.12] Bluetooth: btusb: MT7922: Add VID/PID 0e8d/223c Sasha Levin
2026-08-31 13:28 ` [PATCH AUTOSEL 6.18-6.12] Bluetooth: btintel_pcie: Add 50 ms delay before MAC init on BlazarIW Sasha Levin
2026-08-31 13:28 ` Sasha Levin [this message]
2026-08-31 13:28 ` [PATCH AUTOSEL 6.18-6.12] Bluetooth: btmtk: Disable remote wakeup for MT7922/MT7925 Sasha Levin
2026-08-31 13:29 ` [PATCH AUTOSEL 6.18-6.12] Bluetooth: btusb: Add Realtek RTL8922AE VID/PID 0bda/d922 Sasha Levin
2026-08-31 13:30 ` [PATCH AUTOSEL 6.18-6.12] Bluetooth: btusb: Add Realtek RTL8922AE VID/PID 0bda/d923 Sasha Levin
2026-08-31 13:30 ` [PATCH AUTOSEL 6.18-6.6] Bluetooth: btusb: Add TP-Link UB600 for Realtek 8761BUV Sasha Levin
2026-08-31 13:30 ` [PATCH AUTOSEL 6.18] Bluetooth: btrtl: fix RTL8761B/BU broken LE extended scan Sasha Levin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260831133314.4125787-477-sashal@kernel.org \
    --to=sashal@kernel.org \
    --cc=chris.lu@mediatek.com \
    --cc=linux-bluetooth@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=luiz.dentz@gmail.com \
    --cc=luiz.von.dentz@intel.com \
    --cc=marcel@holtmann.org \
    --cc=patches@lists.linux.dev \
    --cc=stable@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).