1. 05 Mar, 2022 29 commits
  2. 04 Mar, 2022 11 commits
    • Helmut Grohne's avatar
      Bluetooth: btusb: Add another Realtek 8761BU · 6dfbe29f
      Helmut Grohne authored
      This device is sometimes wrapped with a label "EDUP".
      
      T:  Bus=01 Lev=02 Prnt=02 Port=02 Cnt=03 Dev#=107 Spd=12   MxCh= 0
      D:  Ver= 1.10 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs=  1
      P:  Vendor=2550 ProdID=8761 Rev= 2.00
      S:  Manufacturer=Realtek
      S:  Product=Bluetooth Radio
      S:  SerialNumber=00E04C239987
      C:* #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=500mA
      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=1ms
      E:  Ad=02(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
      E:  Ad=82(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
      I:* If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
      E:  Ad=03(O) Atr=01(Isoc) MxPS=   0 Ivl=1ms
      E:  Ad=83(I) 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=03(O) Atr=01(Isoc) MxPS=   9 Ivl=1ms
      E:  Ad=83(I) 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=03(O) Atr=01(Isoc) MxPS=  17 Ivl=1ms
      E:  Ad=83(I) 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=03(O) Atr=01(Isoc) MxPS=  25 Ivl=1ms
      E:  Ad=83(I) 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=03(O) Atr=01(Isoc) MxPS=  33 Ivl=1ms
      E:  Ad=83(I) 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=03(O) Atr=01(Isoc) MxPS=  49 Ivl=1ms
      E:  Ad=83(I) Atr=01(Isoc) MxPS=  49 Ivl=1ms
      Signed-off-by: default avatarHelmut Grohne <helmut@subdivi.de>
      Link: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1955351Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
      6dfbe29f
    • Luca Weiss's avatar
      Bluetooth: hci_bcm: add BCM43430A0 & BCM43430A1 · 01da346c
      Luca Weiss authored
      Add the compatible for BCM43430A0 bluetooth used in lg-lenok and
      BCM43430A1 used in asus-sparrow.
      Signed-off-by: default avatarLuca Weiss <luca@z3ntu.xyz>
      Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
      01da346c
    • Minghao Chi (CGEL ZTE)'s avatar
      Bluetooth: use memset avoid memory leaks · d3715b23
      Minghao Chi (CGEL ZTE) authored
      Use memset to initialize structs to prevent memory leaks
      in l2cap_ecred_connect
      Reported-by: default avatarZeal Robot <zealci@zte.com.cn>
      Signed-off-by: default avatarMinghao Chi (CGEL ZTE) <chi.minghao@zte.com.cn>
      Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
      d3715b23
    • Yake Yang's avatar
      Bluetooth: btmtksdio: Fix kernel oops when sdio suspend. · eb3f0517
      Yake Yang authored
      Do not kfree the skb when the skb failed to send with __hci_cmd_sync
      
      2435.241210] Call trace:
      [ 2435.241224]  kfree_skb+0x20/0x140
      [ 2435.241240]  btmtksdio_sdio_wakeup+0x8c/0xcc
      [ 2435.241360]  hci_suspend_notifier+0x108/0x184
      [ 2435.241377]  notifier_call_chain_robust+0x58/0xd8
      [ 2435.241390]  blocking_notifier_call_chain_robust+0x54/0x84
      [ 2435.241402]  pm_notifier_call_chain_robust+0x2c/0x4c
      [ 2435.241414]  suspend_prepare+0x40/0x238
      [ 2435.241425]  enter_state+0xec/0x3a8
      [ 2435.241436]  pm_suspend+0x60/0xcc
      [ 2435.241446]  state_store+0xb8/0x114
      [ 2435.241460]  kobj_attr_store+0x18/0x2c
      [ 2435.241473]  sysfs_kf_write+0x44/0x58
      [ 2435.241486]  kernfs_fop_write_iter+0xf4/0x190
      [ 2435.241500]  vfs_write+0x2b0/0x2e4
      [ 2435.241511]  ksys_write+0x80/0xec
      [ 2435.241523]  __arm64_sys_write+0x24/0x30
      [ 2435.241538]  el0_svc_common+0xf0/0x1d8
      [ 2435.241550]  do_el0_svc_compat+0x28/0x54
      [ 2435.241564]  el0_svc_compat+0x10/0x1c
      [ 2435.241574]  el0_sync_compat_handler+0xa8/0xcc
      [ 2435.241586]  el0_sync_compat+0x188/0x1c0
      [ 2435.241606] Code: a9014ff4 910003fd b40002c0 aa0003f3 (b84d4c08)
      [ 2435.241619] ---[ end trace d496539b850baf14 ]---
      
      Fixes: ce64b3e9  ("Bluetooth: mt7921s: Support wake on bluetooth")
      Co-developed-by: default avatarSean Wang <sean.wang@mediatek.com>
      Signed-off-by: default avatarSean Wang <sean.wang@mediatek.com>
      Signed-off-by: default avatarYake Yang <yake.yang@mediatek.com>
      Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
      eb3f0517
    • Yake Yang's avatar
      Bluetooth: btusb: Add a new PID/VID 13d3/3567 for MT7921 · c5e25bb5
      Yake Yang authored
      Add VID 13D3 & PID 3567 for MediaTek MT7921 USB Bluetooth chip.
      
      The information in /sys/kernel/debug/usb/devices about the Bluetooth
      device is listed as the below.
      
      T:  Bus=05 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=13d3 ProdID=3567 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=(none)
      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=(none)
      E:  Ad=8a(I) Atr=03(Int.) MxPS=  64 Ivl=125us
      E:  Ad=0a(O) Atr=03(Int.) MxPS=  64 Ivl=125us
      Co-developed-by: default avatarSean Wang <sean.wang@mediatek.com>
      Signed-off-by: default avatarSean Wang <sean.wang@mediatek.com>
      Signed-off-by: default avatarYake Yang <yake.yang@mediatek.com>
      Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
      c5e25bb5
    • Niels Dossche's avatar
      Bluetooth: move adv_instance_cnt read within the device lock · 4bd80d7a
      Niels Dossche authored
      The field adv_instance_cnt is always accessed within a device lock,
      except in the function add_advertising. A concurrent remove of an
      advertisement with adding another one could result in the if check
      "if a new instance was actually added" to not trigger, resulting
      in not triggering the "advertising added event".
      Signed-off-by: default avatarNiels Dossche <niels.dossche@ugent.be>
      Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
      4bd80d7a
    • Niels Dossche's avatar
      Bluetooth: hci_event: Add missing locking on hdev in hci_le_ext_adv_term_evt · 728abc01
      Niels Dossche authored
      Both hci_find_adv_instance and hci_remove_adv_instance have a comment
      above their function definition saying that these two functions require
      the caller to hold the hdev->lock lock. However, hci_le_ext_adv_term_evt
      does not acquire that lock and neither does its caller hci_le_meta_evt
      (hci_le_meta_evt calls hci_le_ext_adv_term_evt via an indirect function
      call because of the lookup in hci_le_ev_table).
      
      The other event handlers all acquire and release the hdev->lock and they
      follow the rule that hci_find_adv_instance and hci_remove_adv_instance
      must be called while holding the hdev->lock lock.
      
      The solution is to make sure hci_le_ext_adv_term_evt also acquires and
      releases the hdev->lock lock. The check on ev->status which logs a
      warning and does an early return is not covered by the lock because
      other functions also access ev->status without holding the lock.
      Signed-off-by: default avatarNiels Dossche <niels.dossche@ugent.be>
      Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
      728abc01
    • Luiz Augusto von Dentz's avatar
      Bluetooth: btusb: Make use of of BIT macro to declare flags · f95fd5f3
      Luiz Augusto von Dentz authored
      This makes use of BIT macro when declaring BTUSB flags which makes it
      understand how many bits are in use and many are left.
      Signed-off-by: default avatarLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
      Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
      f95fd5f3
    • Luiz Augusto von Dentz's avatar
      Bluetooth: Fix not checking for valid hdev on bt_dev_{info,warn,err,dbg} · 9b392e0e
      Luiz Augusto von Dentz authored
      This fixes attemting to print hdev->name directly which causes them to
      print an error:
      
      kernel: read_version:367: (efault): sock 000000006a3008f2
      Signed-off-by: default avatarLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
      Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
      9b392e0e
    • Sean Wang's avatar
      Bluetooth: mediatek: fix the conflict between mtk and msft vendor event · e4412654
      Sean Wang authored
      There is a conflict between MediaTek wmt event and msft vendor extension
      logic in the core layer since 145373cb ("Bluetooth: Add framework for
      Microsoft vendor extension") was introduced because we changed the type of
      mediatek wmt event to the type of msft vendor event in the driver.
      
      But the purpose we reported mediatek event to the core layer is for the
      diagnostic purpose with that we are able to see the full packet trace via
      monitoring socket with btmon. Thus, it is harmless we keep the original
      type of mediatek vendor event here to avoid breaking the msft extension
      function especially they can be supported by Mediatek chipset like MT7921
      , MT7922 devices and future devices.
      Signed-off-by: default avatarSean Wang <sean.wang@mediatek.com>
      Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
      e4412654
    • Chih-Ying Chiang's avatar
      Bluetooth: mt7921s: support bluetooth reset mechanism · 8fafe702
      Chih-Ying Chiang authored
      Implement .cmd_timeout to reset the MT7921s device via a dedicated GPIO
      pin when the firmware hang or the command has no response.
      Co-developed-by: default avatarMark Chen <mark-yw.chen@mediatek.com>
      Signed-off-by: default avatarMark Chen <mark-yw.chen@mediatek.com>
      Co-developed-by: default avatarSean Wang <sean.wang@mediatek.com>
      Signed-off-by: default avatarSean Wang <sean.wang@mediatek.com>
      Signed-off-by: default avatarChih-Ying Chiang <chih-yin.chiang@mediatek.com>
      Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
      8fafe702