1. 11 Aug, 2023 40 commits
    • Douglas Anderson's avatar
      Bluetooth: hci_sync: Don't double print name in add/remove adv_monitor · 6f55eea1
      Douglas Anderson authored
      The hci_add_adv_monitor() hci_remove_adv_monitor() functions call
      bt_dev_dbg() to print some debug statements. The bt_dev_dbg() macro
      automatically adds in the device's name. That means that we shouldn't
      include the name in the bt_dev_dbg() calls.
      Suggested-by: default avatarLuiz Augusto von Dentz <luiz.dentz@gmail.com>
      Signed-off-by: default avatarDouglas Anderson <dianders@chromium.org>
      Signed-off-by: default avatarLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
      6f55eea1
    • Kiran K's avatar
      Bluetooth: Add support for Gale Peak (8087:0036) · 999a8a6b
      Kiran K authored
      Devices from /sys/kernel/debug/usb/devices:
      
      T:  Bus=09 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=12   MxCh= 0
      D:  Ver= 2.01 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs=  1
      P:  Vendor=8087 ProdID=0036 Rev= 0.00
      C:* #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=100mA
      I:* If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
      E:  Ad=81(I) Atr=03(Int.) MxPS=  64 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
      I:  If#= 1 Alt= 6 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
      E:  Ad=03(O) Atr=01(Isoc) MxPS=  63 Ivl=1ms
      E:  Ad=83(I) Atr=01(Isoc) MxPS=  63 Ivl=1ms
      Signed-off-by: default avatarKiran K <kiran.k@intel.com>
      Signed-off-by: default avatarLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
      999a8a6b
    • Chris Lu's avatar
      Bluetooth: btusb: Add a new VID/PID 0489/e0f6 for MT7922 · b6cfa1c2
      Chris Lu authored
      Add VID/PID 0489/e0f6 for MediaTek MT7922 USB Bluetooth chip.
      
      The information in /sys/kernel/debug/usb/devices about the Bluetooth
      device is listed as the below.
      
      T:  Bus=01 Lev=01 Prnt=01 Port=04 Cnt=03 Dev#=  4 Spd=480  MxCh= 0
      D:  Ver= 2.10 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs=  1
      P:  Vendor=0489 ProdID=e0f6 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= 512 Ivl=125us
      E:  Ad=0a(O) Atr=03(Int.) MxPS= 512 Ivl=125us
      Signed-off-by: default avatarChris Lu <chris.lu@mediatek.com>
      Signed-off-by: default avatarLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
      b6cfa1c2
    • Dan Carpenter's avatar
      Bluetooth: msft: Fix error code in msft_cancel_address_filter_sync() · 528b2acf
      Dan Carpenter authored
      Return negative -EIO instead of positive EIO.
      
      Fixes: 926df8962f3f ("Bluetooth: msft: Extended monitor tracking by address filter")
      Signed-off-by: default avatarDan Carpenter <dan.carpenter@linaro.org>
      Reviewed-by: default avatarSimon Horman <simon.horman@corigine.com>
      Signed-off-by: default avatarLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
      528b2acf
    • Iulia Tanasescu's avatar
      Bluetooth: ISO: Notify user space about failed bis connections · f777d882
      Iulia Tanasescu authored
      Some use cases require the user to be informed if BIG synchronization
      fails. This commit makes it so that even if the BIG sync established
      event arrives with error status, a new hconn is added for each BIS,
      and the iso layer is notified about the failed connections.
      
      Unsuccesful bis connections will be marked using the
      HCI_CONN_BIG_SYNC_FAILED flag. From the iso layer, the POLLERR event
      is triggered on the newly allocated bis sockets, before adding them
      to the accept list of the parent socket.
      
      From user space, a new fd for each failed bis connection will be
      obtained by calling accept. The user should check for the POLLERR
      event on the new socket, to determine if the connection was successful
      or not.
      
      The HCI_CONN_BIG_SYNC flag has been added to mark whether the BIG sync
      has been successfully established. This flag is checked at bis cleanup,
      so the HCI LE BIG Terminate Sync command is only issued if needed.
      
      The BT_SK_BIG_SYNC flag indicates if BIG create sync has been called
      for a listening socket, to avoid issuing the command everytime a BIGInfo
      advertising report is received.
      Signed-off-by: default avatarIulia Tanasescu <iulia.tanasescu@nxp.com>
      Signed-off-by: default avatarLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
      f777d882
    • Valentin David's avatar
      Bluetooth: btusb: Add device 0489:e0f5 as MT7922 device · e160a8f4
      Valentin David authored
      Asus ROG Ally gaming computer has a MediaTek MT7922 chip that uses USB id
      0489:e0f5 and needs to be added to the table. Without this, the device is
      not usable and gives the following error:
      
      Bluetooth: hci0: Opcode 0x c03 failed: -110
      
      Output from /sys/kernel/debug/usb/devices:
      
      T:  Bus=01 Lev=01 Prnt=01 Port=03 Cnt=03 Dev#=  4 Spd=480  MxCh= 0
      D:  Ver= 2.10 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs=  1
      P:  Vendor=0489 ProdID=e0f5 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= 512 Ivl=125us
      E:  Ad=0a(O) Atr=03(Int.) MxPS= 512 Ivl=125us
      Signed-off-by: default avatarValentin David <valentin.david@gmail.com>
      Signed-off-by: default avatarLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
      e160a8f4
    • Luiz Augusto von Dentz's avatar
      Bluetooth: hci_conn: Always allocate unique handles · 9f78191c
      Luiz Augusto von Dentz authored
      This attempts to always allocate a unique handle for connections so they
      can be properly aborted by the likes of hci_abort_conn, so this uses the
      invalid range as a pool of unset handles that way if userspace is trying
      to create multiple connections at once each will be given a unique
      handle which will be considered unset.
      Signed-off-by: default avatarLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
      9f78191c
    • Luiz Augusto von Dentz's avatar
      Bluetooth: hci_sync: Fix not handling ISO_LINK in hci_abort_conn_sync · 04a51d61
      Luiz Augusto von Dentz authored
      ISO_LINK connections where not being handled properly on
      hci_abort_conn_sync which sometimes resulted in sending the wrong
      commands, or in case of having the reject command being sent by the
      socket code (iso.c) which is sort of a layer violation.
      Signed-off-by: default avatarLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
      04a51d61
    • Luiz Augusto von Dentz's avatar
      Bluetooth: hci_conn: Consolidate code for aborting connections · a13f316e
      Luiz Augusto von Dentz authored
      This consolidates code for aborting connections using
      hci_cmd_sync_queue so it is synchronized with other threads, but
      because of the fact that some commands may block the cmd_sync_queue
      while waiting specific events this attempt to cancel those requests by
      using hci_cmd_sync_cancel.
      Signed-off-by: default avatarLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
      a13f316e
    • Jing Cai's avatar
      Bluetooth: btusb: mediatek: add MediaTek devcoredump support · 0b701513
      Jing Cai authored
      This patch implement function .coredump() and dmp_hdr() in btusb
      driver for MediaTek controller.  FW core dump was triggered by FW
      specific event to show something unexpected happened in the controller.
      
      The driver would be responsible for collecting and uploading the device
      core dump pieces in hci driver using core dump API. Once we finished
      the whole process, the driver would reset the controller to recover the
      kind of fatal error.
      Co-developed-by: default avatarChris Lu <chris.lu@mediatek.com>
      Signed-off-by: default avatarChris Lu <chris.lu@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 avatarJing Cai <jing.cai@mediatek.com>
      Signed-off-by: default avatarLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
      0b701513
    • Jing Cai's avatar
      Bluetooth: btmtk: introduce btmtk reset work · 25b6d759
      Jing Cai authored
      Introduce btmtk_reset_work which can be called whenever the firmware abort,
      HCI command timeout, other fatal error happen.
      Co-developed-by: default avatarChris Lu <chris.lu@mediatek.com>
      Signed-off-by: default avatarChris Lu <chris.lu@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 avatarJing Cai <jing.cai@mediatek.com>
      Signed-off-by: default avatarLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
      25b6d759
    • Sean Wang's avatar
      Bluetooth: btusb: mediatek: readx_poll_timeout replaces open coding · ca58330c
      Sean Wang authored
      Use readx_poll_timeout instead of open coding to poll the hardware reset
      status until it is done.
      Signed-off-by: default avatarSean Wang <sean.wang@mediatek.com>
      Signed-off-by: default avatarLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
      ca58330c
    • Chris Lu's avatar
      Bluetooth: btmtk: add printing firmware information · 3e063518
      Chris Lu authored
      Add printing firmware information part when driver loading firmware that
      user can get mediatek bluetooth information.
      Co-developed-by: default avatarSean Wang <sean.wang@mediatek.com>
      Signed-off-by: default avatarSean Wang <sean.wang@mediatek.com>
      Signed-off-by: default avatarChris Lu <chris.lu@mediatek.com>
      Signed-off-by: default avatarLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
      3e063518
    • Kiran K's avatar
      Bluetooth: btintel: Add support for Gale Peak · bb925bf9
      Kiran K authored
      Add hardware variant(0x1c) for Gale Peak core (CNVi).
      Signed-off-by: default avatarKiran K <kiran.k@intel.com>
      Signed-off-by: default avatarLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
      bb925bf9
    • Claudia Draghicescu's avatar
      Bluetooth: hci_sync: Enable events for BIS capable devices · c33362a5
      Claudia Draghicescu authored
      In the case of a Synchronized Receiver capable device, enable at start-up the
      events for PA reports, PA Sync Established and Big Info Adv reports.
      Signed-off-by: default avatarClaudia Draghicescu <claudia.rosu@nxp.com>
      Signed-off-by: default avatarLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
      c33362a5
    • Hilda Wu's avatar
      Bluetooth: msft: Extended monitor tracking by address filter · 9e14606d
      Hilda Wu authored
      Since limited tracking device per condition, this feature is to support
      tracking multiple devices concurrently.
      When a pattern monitor detects the device, this feature issues an address
      monitor for tracking that device. Let pattern monitor can keep monitor
      new devices.
      This feature adds an address filter when receiving a LE monitor device
      event which monitor handle is for a pattern, and the controller started
      monitoring the device. And this feature also has cancelled the monitor
      advertisement from address filters when receiving a LE monitor device
      event when the controller stopped monitoring the device specified by an
      address and monitor handle.
      
      Below is an example to know the feature adds the address filter.
      
      //Add MSFT pattern monitor
      < HCI Command: Vendor (0x3f|0x00f0) plen 14          #142 [hci0] 55.552420
              03 b8 a4 03 ff 01 01 06 09 05 5f 52 45 46        .........._REF
      > HCI Event: Command Complete (0x0e) plen 6          #143 [hci0] 55.653960
            Vendor (0x3f|0x00f0) ncmd 2
              Status: Success (0x00)
              03 00
      
      //Got event from the pattern monitor
      > HCI Event: Vendor (0xff) plen 18                   #148 [hci0] 58.384953
              23 79 54 33 77 88 97 68 02 00 fb c1 29 eb 27 b8  #yT3w..h....).'.
              00 01                                            ..
      
      //Add MSFT address monitor (Sample address: B8:27:EB:29:C1:FB)
      < HCI Command: Vendor (0x3f|0x00f0) plen 13          #149 [hci0] 58.385067
              03 b8 a4 03 ff 04 00 fb c1 29 eb 27 b8           .........).'.
      
      //Report to userspace about found device (ADV Monitor Device Found)
      @ MGMT Event: Unknown (0x002f) plen 38           {0x0003} [hci0] 58.680042
              01 00 fb c1 29 eb 27 b8 01 ce 00 00 00 00 16 00  ....).'.........
              0a 09 4b 45 59 42 44 5f 52 45 46 02 01 06 03 19  ..KEYBD_REF.....
              c1 03 03 03 12 18                                ......
      
      //Got event from address monitor
      > HCI Event: Vendor (0xff) plen 18                   #152 [hci0] 58.672956
              23 79 54 33 77 88 97 68 02 00 fb c1 29 eb 27 b8  #yT3w..h....).'.
              01 01
      Signed-off-by: default avatarAlex Lu <alex_lu@realsil.com.cn>
      Signed-off-by: default avatarHilda Wu <hildawu@realtek.com>
      Reviewed-by: default avatarSimon Horman <simon.horman@corigine.com>
      Signed-off-by: default avatarLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
      9e14606d
    • Peter Tsao's avatar
      Bluetooth: btusb: Add support Mediatek MT7925 · 4c92ae75
      Peter Tsao authored
      This patch is added support Mediatek MT7925.
      1. The firmware location of MT7925 will set to
      /lib/firmware/mediatek/mt7925
      2. Add Mediatek private data in hdev
      to record the device for handle MT7925 flow.
      3. Use the recoreded dev_id to condition chip reset flow.
      
      The information in /sys/kernel/debug/usb/devices about the MT7925U
      Bluetooth device is listed as the below
      
      T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 27 Spd=480  MxCh= 0
      D:  Ver= 2.10 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs=  1
      P:  Vendor=0e8d ProdID=7925 Rev= 1.00
      S:  Manufacturer=MediaTek Inc.
      S:  Product=Wireless_Device
      S:  SerialNumber=000000000
      C:* #Ifs= 4 Cfg#= 1 Atr=e0 MxPwr=100mA
      A:  FirstIf#= 0 IfCount= 3 Cls=e0(wlcon) Sub=01 Prot=01
      I:* If#= 0 Alt= 0 #EPs= 5 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
      E:  Ad=81(I) Atr=03(Int.) MxPS=  16 Ivl=125us
      E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=8f(I) Atr=03(Int.) MxPS=   2 Ivl=125us
      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= 512 Ivl=125us
      E:  Ad=0a(O) Atr=03(Int.) MxPS= 512 Ivl=125us
      I:* If#= 3 Alt= 0 #EPs= 9 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
      E:  Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=08(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=06(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=07(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=09(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=86(I) Atr=03(Int.) MxPS=   2 Ivl=125us
      Signed-off-by: default avatarPeter Tsao <peter.tsao@mediatek.com>
      Signed-off-by: default avatarLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
      4c92ae75
    • Kiran K's avatar
      Bluetooth: btintel: Add support to reset bluetooth via ACPI DSM · 8f0a3786
      Kiran K authored
      New Intel platforms supports reset of Bluetooth device  via ACPI DSM
      methods. The legacy reset mechanism via GPIO will be deprecated in
      future. This patch checks the platform support for reset methods and if
      supported uses the same instead of legacy GPIO toggling method.
      
      ACPI firmware supports two types of reset method based on NIC card.
      (Discrete or Integrated).
      
      1. VSEC Type - Vendor Specific Extended Capability. Here  BT_EN and
         BT_IF_SELECT lines are driven by a register in PCH cluster. This
         interface is supported on discrete BT solution.
      
      2. WDISABLE2 - In this soluton, W_DISABLE2 pin in M.2 is connected to
         physical GPIO from PCH. The DSM interface shall toggle this to recover
         from  error.
      Signed-off-by: default avatarKiran K <kiran.k@intel.com>
      Signed-off-by: default avatarLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
      8f0a3786
    • Sai Teja Aluvala's avatar
      Bluetooth: hci_qca: Add qcom devcoredump support · 06d3fdfc
      Sai Teja Aluvala authored
      Intercept debug exception events from QCA controller and put them into
      a devcoredump using hci devcoredump APIs of hci_core
      Signed-off-by: default avatarSai Teja Aluvala <quic_saluvala@quicinc.com>
      
      V2 -> V3:
      ---------
      changed hci_coredump_qca function
      
      V1 -> V2:
      ---------
      Updated to work with the updated HCI devcoredump API.
      Signed-off-by: default avatarLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
      06d3fdfc
    • Sai Teja Aluvala's avatar
      Bluetooth: hci_qca: Add qcom devcoredump sysfs support · 6ce95a30
      Sai Teja Aluvala authored
      This patch implements the hci_qca driver side .coredump() callback to
      trigger a devcoredump via sysfs.
      Signed-off-by: default avatarSai Teja Aluvala <quic_saluvala@quicinc.com>
      
      v2 -> V3:
      --------
      Updated commit text
      
      v1 -> V2:
      --------
      Updated to work with the updated HCI devcoredump API.
      Signed-off-by: default avatarLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
      6ce95a30
    • Iulia Tanasescu's avatar
      Bluetooth: ISO: Support multiple BIGs · 6a42e9bf
      Iulia Tanasescu authored
      This adds support for creating multiple BIGs. According to
      spec, each BIG shall have an unique handle, and each BIG should
      be associated with a different advertising handle. Otherwise,
      the LE Create BIG command will fail, with error code
      Command Disallowed (for reusing a BIG handle), or
      Unknown Advertising Identifier (for reusing an advertising
      handle).
      
      The btmon snippet below shows an exercise for creating two BIGs
      for the same controller, by opening two isotest instances with
      the following command:
          tools/isotest -i hci0 -s 00:00:00:00:00:00
      
      < HCI Command: LE Create Broadcast Isochronous Group (0x08|0x0068) plen 31
              Handle: 0x00
              Advertising Handle: 0x01
              Number of BIS: 1
              SDU Interval: 10000 us (0x002710)
              Maximum SDU size: 40
              Maximum Latency: 10 ms (0x000a)
              RTN: 0x02
              PHY: LE 2M (0x02)
              Packing: Sequential (0x00)
              Framing: Unframed (0x00)
              Encryption: 0x00
              Broadcast Code: 00000000000000000000000000000000
      
      > HCI Event: Command Status (0x0f) plen 4
            LE Create Broadcast Isochronous Group (0x08|0x0068) ncmd 1
              Status: Success (0x00)
      
      > HCI Event: LE Meta Event (0x3e) plen 21
            LE Broadcast Isochronous Group Complete (0x1b)
              Status: Success (0x00)
              Handle: 0x00
              BIG Synchronization Delay: 912 us (0x000390)
              Transport Latency: 912 us (0x000390)
              PHY: LE 2M (0x02)
              NSE: 3
              BN: 1
              PTO: 1
              IRC: 3
              Maximum PDU: 40
              ISO Interval: 10.00 msec (0x0008)
              Connection Handle #0: 10
      
      < HCI Command: LE Create Broadcast Isochronous Group (0x08|0x0068)
              Handle: 0x01
              Advertising Handle: 0x02
              Number of BIS: 1
              SDU Interval: 10000 us (0x002710)
              Maximum SDU size: 40
              Maximum Latency: 10 ms (0x000a)
              RTN: 0x02
              PHY: LE 2M (0x02)
              Packing: Sequential (0x00)
              Framing: Unframed (0x00)
              Encryption: 0x00
              Broadcast Code: 00000000000000000000000000000000
      
      > HCI Event: Command Status (0x0f) plen 4
            LE Create Broadcast Isochronous Group (0x08|0x0068) ncmd 1
              Status: Success (0x00)
      Signed-off-by: default avatarIulia Tanasescu <iulia.tanasescu@nxp.com>
      Signed-off-by: default avatarLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
      6a42e9bf
    • Luiz Augusto von Dentz's avatar
      Bluetooth: hci_sock: Forward credentials to monitor · 69ae5065
      Luiz Augusto von Dentz authored
      This stores scm_creds into hci_skb_cb so they can be properly forwarded
      to the likes of btmon which is then able to print information about the
      process who is originating the traffic:
      
      bluetoothd[35]: @ MGMT Command: Rea.. (0x0001) plen 0  {0x0001}
      @ MGMT Event: Command Complete (0x0001) plen 6         {0x0001}
            Read Management Version Information (0x0001) plen 3
      
      bluetoothd[35]: < ACL Data T.. flags 0x00 dlen 41
            ATT: Write Command (0x52) len 36
              Handle: 0x0043 Type: ASE Control Point (0x2bc6)
                Data: 020203000110270000022800020a00409c0001000110270000022800020a00409c00
                  Opcode: QoS Configuration (0x02)
                  Number of ASE(s): 2
                  ASE: #0
                  ASE ID: 0x03
                  CIG ID: 0x00
                  CIS ID: 0x01
                  SDU Interval: 10000 usec
                  Framing: Unframed (0x00)
                  PHY: 0x02
                  LE 2M PHY (0x02)
                  Max SDU: 40
                  RTN: 2
                  Max Transport Latency: 10
                  Presentation Delay: 40000 us
                  ASE: #1
                  ASE ID: 0x01
                  CIG ID: 0x00
                  CIS ID: 0x01
                  SDU Interval: 10000 usec
                  Framing: Unframed (0x00)
                  PHY: 0x02
                  LE 2M PHY (0x02)
                  Max SDU: 40
                  RTN: 2
                  Max Transport Latency: 10
                  Presentation Delay: 40000 us
      Signed-off-by: default avatarLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
      69ae5065
    • Luiz Augusto von Dentz's avatar
      Bluetooth: Init sk_peer_* on bt_sock_alloc · 464c702f
      Luiz Augusto von Dentz authored
      This makes sure peer information is always available via sock when using
      bt_sock_alloc.
      Signed-off-by: default avatarLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
      464c702f
    • Luiz Augusto von Dentz's avatar
      Bluetooth: Consolidate code around sk_alloc into a helper function · 6bfa273e
      Luiz Augusto von Dentz authored
      This consolidates code around sk_alloc into bt_sock_alloc which does
      take care of common initialization.
      Signed-off-by: default avatarLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
      6bfa273e
    • Max Chou's avatar
      Bluetooth: btrtl: Correct the length of the HCI command for drop fw · 6b42f04e
      Max Chou authored
      The original code did not determine the length value of the HCI command
      for drop fw even there's no parameter needed. In this commit, use struct
      hci_command_hdr to manage opcode and length. It would be more regular and
      more readable.
      Suggested-by: default avatarAlex Lu <alex_lu@realsil.com.cn>
      Signed-off-by: default avatarMax Chou <max.chou@realtek.com>
      Signed-off-by: default avatarLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
      6b42f04e
    • Pauli Virtanen's avatar
      Bluetooth: ISO: do not emit new LE Create CIS if previous is pending · 7f74563e
      Pauli Virtanen authored
      LE Create CIS command shall not be sent before all CIS Established
      events from its previous invocation have been processed. Currently it is
      sent via hci_sync but that only waits for the first event, but there can
      be multiple.
      
      Make it wait for all events, and simplify the CIS creation as follows:
      
      Add new flag HCI_CONN_CREATE_CIS, which is set if Create CIS has been
      sent for the connection but it is not yet completed.
      
      Make BT_CONNECT state to mean the connection wants Create CIS.
      
      On events after which new Create CIS may need to be sent, send it if
      possible and some connections need it. These events are:
      hci_connect_cis, iso_connect_cfm, hci_cs_le_create_cis,
      hci_le_cis_estabilished_evt.
      
      The Create CIS status/completion events shall queue new Create CIS only
      if at least one of the connections transitions away from BT_CONNECT, so
      that we don't loop if controller is sending bogus events.
      
      This fixes sending multiple CIS Create for the same CIS in the
      "ISO AC 6(i) - Success" BlueZ test case:
      
      < HCI Command: LE Create Co.. (0x08|0x0064) plen 9  #129 [hci0]
              Number of CIS: 2
              CIS Handle: 257
              ACL Handle: 42
              CIS Handle: 258
              ACL Handle: 42
      > HCI Event: Command Status (0x0f) plen 4           #130 [hci0]
            LE Create Connected Isochronous Stream (0x08|0x0064) ncmd 1
              Status: Success (0x00)
      > HCI Event: LE Meta Event (0x3e) plen 29           #131 [hci0]
            LE Connected Isochronous Stream Established (0x19)
              Status: Success (0x00)
              Connection Handle: 257
              ...
      < HCI Command: LE Setup Is.. (0x08|0x006e) plen 13  #132 [hci0]
              ...
      > HCI Event: Command Complete (0x0e) plen 6         #133 [hci0]
            LE Setup Isochronous Data Path (0x08|0x006e) ncmd 1
              ...
      < HCI Command: LE Create Co.. (0x08|0x0064) plen 5  #134 [hci0]
              Number of CIS: 1
              CIS Handle: 258
              ACL Handle: 42
      > HCI Event: Command Status (0x0f) plen 4           #135 [hci0]
            LE Create Connected Isochronous Stream (0x08|0x0064) ncmd 1
              Status: ACL Connection Already Exists (0x0b)
      > HCI Event: LE Meta Event (0x3e) plen 29           #136 [hci0]
            LE Connected Isochronous Stream Established (0x19)
              Status: Success (0x00)
              Connection Handle: 258
              ...
      
      Fixes: c09b80be ("Bluetooth: hci_conn: Fix not waiting for HCI_EVT_LE_CIS_ESTABLISHED")
      Signed-off-by: default avatarPauli Virtanen <pav@iki.fi>
      Signed-off-by: default avatarLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
      7f74563e
    • Iulia Tanasescu's avatar
      Bluetooth: ISO: Add support for connecting multiple BISes · a0bfde16
      Iulia Tanasescu authored
      It is required for some configurations to have multiple BISes as part
      of the same BIG.
      
      Similar to the flow implemented for unicast, DEFER_SETUP will also be
      used to bind multiple BISes for the same BIG, before starting Periodic
      Advertising and creating the BIG.
      
      The user will have to open a new socket for each BIS. By setting the
      BT_DEFER_SETUP socket option and calling connect, a new connection
      will be added for the BIG and advertising handle set by the socket
      QoS parameters. Since all BISes will be bound for the same BIG and
      advertising handle, the socket QoS options and base parameters should
      match for all connections.
      
      By calling connect on a socket that does not have the BT_DEFER_SETUP
      option set, periodic advertising will be started and the BIG will
      be created, with a BIS for each previously bound connection. Since
      a BIG cannot be reconfigured with additional BISes after creation,
      no more connections can be bound for the BIG after the start periodic
      advertising and create BIG commands have been queued.
      
      The bis_cleanup function has also been updated, so that the advertising
      set and the BIG will not be terminated unless there are no more
      bound or connected BISes.
      
      The HCI_CONN_BIG_CREATED connection flag has been added to indicate
      that the BIG has been successfully created. This flag is checked at
      bis_cleanup, so that the BIG is only terminated if the
      HCI_LE_Create_BIG_Complete has been received.
      
      This implementation has been tested on hardware, using the "isotest"
      tool with an additional command line option, to specify the number of
      BISes to create as part of the desired BIG:
      
          tools/isotest -i hci0 -s 00:00:00:00:00:00 -N 2 -G 1 -T 1
      
      The btmon log shows that a BIG containing 2 BISes has been created:
      
      < HCI Command: LE Create Broadcast Isochronous Group (0x08|0x0068) plen 31
              Handle: 0x01
              Advertising Handle: 0x01
              Number of BIS: 2
              SDU Interval: 10000 us (0x002710)
              Maximum SDU size: 40
              Maximum Latency: 10 ms (0x000a)
              RTN: 0x02
              PHY: LE 2M (0x02)
              Packing: Sequential (0x00)
              Framing: Unframed (0x00)
              Encryption: 0x00
              Broadcast Code: 00000000000000000000000000000000
      
      > HCI Event: Command Status (0x0f) plen 4
            LE Create Broadcast Isochronous Group (0x08|0x0068) ncmd 1
              Status: Success (0x00)
      
      > HCI Event: LE Meta Event (0x3e) plen 23
            LE Broadcast Isochronous Group Complete (0x1b)
              Status: Success (0x00)
              Handle: 0x01
              BIG Synchronization Delay: 1974 us (0x0007b6)
              Transport Latency: 1974 us (0x0007b6)
              PHY: LE 2M (0x02)
              NSE: 3
              BN: 1
              PTO: 1
              IRC: 3
              Maximum PDU: 40
              ISO Interval: 10.00 msec (0x0008)
              Connection Handle #0: 10
              Connection Handle #1: 11
      
      < HCI Command: LE Setup Isochronous Data Path (0x08|0x006e) plen 13
              Handle: 10
              Data Path Direction: Input (Host to Controller) (0x00)
              Data Path: HCI (0x00)
              Coding Format: Transparent (0x03)
              Company Codec ID: Ericsson Technology Licensing (0)
              Vendor Codec ID: 0
              Controller Delay: 0 us (0x000000)
              Codec Configuration Length: 0
              Codec Configuration:
      
      > HCI Event: Command Complete (0x0e) plen 6
            LE Setup Isochronous Data Path (0x08|0x006e) ncmd 1
              Status: Success (0x00)
              Handle: 10
      
      < HCI Command: LE Setup Isochronous Data Path (0x08|0x006e) plen 13
              Handle: 11
              Data Path Direction: Input (Host to Controller) (0x00)
              Data Path: HCI (0x00)
              Coding Format: Transparent (0x03)
              Company Codec ID: Ericsson Technology Licensing (0)
              Vendor Codec ID: 0
              Controller Delay: 0 us (0x000000)
              Codec Configuration Length: 0
              Codec Configuration:
      
      > HCI Event: Command Complete (0x0e) plen 6
            LE Setup Isochronous Data Path (0x08|0x006e) ncmd 1
              Status: Success (0x00)
              Handle: 11
      
      < ISO Data TX: Handle 10 flags 0x02 dlen 44
      
      < ISO Data TX: Handle 11 flags 0x02 dlen 44
      
      > HCI Event: Number of Completed Packets (0x13) plen 5
              Num handles: 1
              Handle: 10
              Count: 1
      
      > HCI Event: Number of Completed Packets (0x13) plen 5
              Num handles: 1
              Handle: 11
              Count: 1
      Signed-off-by: default avatarIulia Tanasescu <iulia.tanasescu@nxp.com>
      Signed-off-by: default avatarLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
      a0bfde16
    • Hilda Wu's avatar
      Bluetooth: btrtl: Add Realtek devcoredump support · 044014ce
      Hilda Wu authored
      Catch debug exception from controller and driver, and trigger a
      devcoredump using hci devcoredump APIs. The debug exception data
      will be parsed in userspace.
      Signed-off-by: default avatarAlex Lu <alex_lu@realsil.com.cn>
      Signed-off-by: default avatarHilda Wu <hildawu@realtek.com>
      Signed-off-by: default avatarLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
      044014ce
    • Claudia Draghicescu's avatar
      Bluetooth: Check for ISO support in controller · ae753361
      Claudia Draghicescu authored
      This patch checks for ISO_BROADCASTER and ISO_SYNC_RECEIVER in
      controller.
      Signed-off-by: default avatarClaudia Draghicescu <claudia.rosu@nxp.com>
      Signed-off-by: default avatarLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
      ae753361
    • David S. Miller's avatar
      Merge branch 'rzn1-a5psw-vlan-port_bridge_flags' · 80f9ad04
      David S. Miller authored
      Alexis Lothoré says:
      
      ====================
      net: dsa: rzn1-a5psw: add support for vlan and .port_bridge_flags
      
      this series enables vlan support in Renesas RZN1 internal ethernet switch,
      and is a follow up to the work initiated by Clement Leger a few months ago,
      who handed me over the topic.
      This new revision aims to iron the last few points raised by Vladimir to
      ensure that the driver is in line with switch drivers expectations, and is
      based on the lengthy discussion in [1] (thanks Vladimir for the valuable
      explanations)
      
      [1] https://lore.kernel.org/netdev/20230314163651.242259-1-clement.leger@bootlin.com/
      
      ----
      V5:
       - ensure that flooding can be enabled only if port belongs to a bridge
       - enable learning in a5psw_port_stp_state_set() only if port has learning
         enabled
       - toggle vlan tagging on vlan filtering in
       - removed reviewed-by on second patch since its modified
      
      RESEND V4:
       - Resent due to net-next being closed
      
      V4:
       - Fix missing CPU port bit in a5psw->bridged_ports
       - Use unsigned int for vlan_res_id parameters
       - Rename a5psw_get_vlan_res_entry() to a5psw_new_vlan_res_entry()
       - In a5psw_port_vlan_add(), return -ENOSPC when no VLAN entry is found
       - In a5psw_port_vlan_filtering(), compute "val" from "mask"
      
      V3:
       - Target net-next tree and correct version...
      
      V2:
       - Fixed a few formatting errors
       - Add .port_bridge_flags implementation
      ====================
      Reviewed-by: default avatarSimon Horman <horms@kernel.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      80f9ad04
    • Clément Léger's avatar
      net: dsa: rzn1-a5psw: add vlan support · 7b3f77c4
      Clément Léger authored
      Add support for vlan operation (add, del, filtering) on the RZN1
      driver. The a5psw switch supports up to 32 VLAN IDs with filtering,
      tagged/untagged VLANs and PVID for each ports.
      Signed-off-by: default avatarClément Léger <clement.leger@bootlin.com>
      Signed-off-by: default avatarAlexis Lothoré <alexis.lothore@bootlin.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      7b3f77c4
    • Clément Léger's avatar
      net: dsa: rzn1-a5psw: add support for .port_bridge_flags · 0d37f839
      Clément Léger authored
      When running vlan test (bridge_vlan_aware/unaware.sh), there were some
      failure due to the lack .port_bridge_flag function to disable port
      flooding. Implement this operation for BR_LEARNING, BR_FLOOD,
      BR_MCAST_FLOOD and BR_BCAST_FLOOD.
      
      Since .port_bridge_flags affects the bits disabling learning for a port,
      ensure that any other modification on the same register done by
      a5psw_port_stp_state_set is in sync by using the port learning state to
      enable/disable learning on the port.
      Signed-off-by: default avatarClément Léger <clement.leger@bootlin.com>
      Signed-off-by: default avatarAlexis Lothoré <alexis.lothore@bootlin.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      0d37f839
    • Clément Léger's avatar
      net: dsa: rzn1-a5psw: use a5psw_reg_rmw() to modify flooding resolution · 6cf30fdd
      Clément Léger authored
      .port_bridge_flags will be added and allows to modify the flood mask
      independently for each port. Keeping the existing bridged_ports write
      in a5psw_flooding_set_resolution() would potentially messed up this.
      Use a read-modify-write to set that value and move bridged_ports
      handling in bridge_port_join/leave.
      Signed-off-by: default avatarClément Léger <clement.leger@bootlin.com>
      Reviewed-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarAlexis Lothoré <alexis.lothore@bootlin.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      6cf30fdd
    • Hariprasad Kelam's avatar
      octeontx2-pf: Allow both ntuple and TC features on the interface · 61f98da4
      Hariprasad Kelam authored
      The current implementation does not allow the user to enable both
      hw-tc-offload and ntuple features on the interface. These checks
      are added as TC flower offload and ntuple features internally configures
      the same hardware resource MCAM. But TC HTB offload configures the
      transmit scheduler which can be safely enabled on the interface with
      ntuple feature.
      
      This patch adds the same and ensures only TC flower offload and ntuple
      features are mutually exclusive.
      Signed-off-by: default avatarHariprasad Kelam <hkelam@marvell.com>
      Signed-off-by: default avatarSunil Goutham <sgoutham@marvell.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      61f98da4
    • David S. Miller's avatar
      Merge branch 'bond-cleanups' · 4b006b43
      David S. Miller authored
      Zhengchao Shao says:
      
      ====================
      bonding: do some cleanups in bond driver
      
      Do some cleanups in bond driver.
      
      ---
      v2: use IS_ERR instead of NULL check in patch 2/5, update commit
          information in patch 3/5, remove inline modifier in patch 4/5
      ====================
      Reviewed-by: default avatarHangbin Liu <liuhangbin@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      4b006b43
    • Zhengchao Shao's avatar
      bonding: remove unnecessary NULL check in bond_destructor · f5370ba3
      Zhengchao Shao authored
      The free_percpu function also could check whether "rr_tx_counter"
      parameter is NULL. Therefore, remove NULL check in bond_destructor.
      Signed-off-by: default avatarZhengchao Shao <shaozhengchao@huawei.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      f5370ba3
    • Zhengchao Shao's avatar
      bonding: use bond_set_slave_arr to simplify code · a8f3f4b4
      Zhengchao Shao authored
      In bond_reset_slave_arr(), values are assigned and memory is released only
      when the variables "usable" and "all" are not NULL. But even if the
      "usable" and "all" variables are NULL, they can still work, because value
      will be checked in kfree_rcu. Therefore, use bond_set_slave_arr() and set
      the input parameters "usable_slaves" and "all_slaves" to NULL to simplify
      the code in bond_reset_slave_arr(). And the same to bond_uninit().
      Signed-off-by: default avatarZhengchao Shao <shaozhengchao@huawei.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      a8f3f4b4
    • Zhengchao Shao's avatar
      bonding: remove redundant NULL check in debugfs function · cc317ea3
      Zhengchao Shao authored
      Because debugfs_create_dir returns ERR_PTR, so bonding_debug_root will
      never be NULL. Remove redundant NULL check for bonding_debug_root in
      debugfs function. The later debugfs_create_dir/debugfs_remove_recursive
      /debugfs_remove_recursive functions will check the dentry with IS_ERR().
      Signed-off-by: default avatarZhengchao Shao <shaozhengchao@huawei.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      cc317ea3
    • Zhengchao Shao's avatar
      bonding: use IS_ERR instead of NULL check in bond_create_debugfs · 57647e6f
      Zhengchao Shao authored
      Because debugfs_create_dir returns ERR_PTR, so IS_ERR should be used to
      check whether the directory is successfully created.
      Signed-off-by: default avatarZhengchao Shao <shaozhengchao@huawei.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      57647e6f
    • Zhengchao Shao's avatar
      bonding: add modifier to initialization function and exit function · e08190ef
      Zhengchao Shao authored
      Some functions are only used in initialization and exit functions, so add
      the __init/__net_init and __net_exit modifiers to these functions.
      Signed-off-by: default avatarZhengchao Shao <shaozhengchao@huawei.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      e08190ef