1. 05 1月, 2014 1 次提交
    • M
      Bluetooth: Add quirk for disabling Delete Stored Link Key command · f9f462fa
      Marcel Holtmann 提交于
      Some controller pretend they support the Delete Stored Link Key command,
      but in reality they really don't support it.
      
        < HCI Command: Delete Stored Link Key (0x03|0x0012) plen 7
            bdaddr 00:00:00:00:00:00 all 1
        > HCI Event: Command Complete (0x0e) plen 4
            Delete Stored Link Key (0x03|0x0012) ncmd 1
            status 0x11 deleted 0
            Error: Unsupported Feature or Parameter Value
      
      Not correctly supporting this command causes the controller setup to
      fail and will make a device not work. However sending the command for
      controller that handle stored link keys is important. This quirk
      allows a driver to disable the command if it knows that this command
      handling is broken.
      Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
      Signed-off-by: NJohan Hedberg <johan.hedberg@intel.com>
      f9f462fa
  2. 12 12月, 2013 1 次提交
  3. 09 12月, 2013 1 次提交
  4. 04 12月, 2013 1 次提交
  5. 20 10月, 2013 2 次提交
  6. 19 10月, 2013 14 次提交
  7. 18 10月, 2013 10 次提交
  8. 17 10月, 2013 1 次提交
  9. 16 10月, 2013 2 次提交
    • M
      Bluetooth: Update class of device on discoverable timeout · d1967ff8
      Marcel Holtmann 提交于
      When the discoverable timeout triggers and limited discoverable mode
      was used, then the class of device needs to be updated to remove
      the limited discoverable bit.
      
      To keep the class of device logic in a central place, expose a new
      function mgmt_discoverable_timeout that can be called from the
      timeout callback. In case the class of device value needs updating,
      it will add the HCI command to the transaction.
      Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
      Signed-off-by: NJohan Hedberg <johan.hedberg@intel.com>
      d1967ff8
    • M
      Bluetooth: Add support for entering limited discoverable mode · 310a3d48
      Marcel Holtmann 提交于
      The limited discoverable mode should be used when a device is only
      discoverable for a certain amount of time and after that it returns
      back into being non-discoverable.
      
      This adds another option to the set discoverable management command
      to clearly distinguish limited discoverable from general discoverable
      mode.
      
      While the general discoverable mode can be set with a specific
      timeout or as permanent setting, the limited discoverable mode
      requires a timeout. The timeout is flexible and the kernel will
      not enforce any specific limitations. That GAP part of this is
      required by userspace to enforce according to the Bluetooth core
      specification.
      
      Devices in limited discoverable mode can still be found by the
      general discovery procedure. It is mandatory that a device sets
      both GIAC and LIAC when entering limited discoverable mode.
      Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
      Signed-off-by: NJohan Hedberg <johan.hedberg@intel.com>
      310a3d48
  10. 15 10月, 2013 4 次提交
  11. 13 10月, 2013 1 次提交
    • M
      Bluetooth: Remove pointless bdaddr_to_le() helper function · 79d95a19
      Marcel Holtmann 提交于
      The bdaddr_to_le() function tries to convert the internal address
      type to one that matches the HCI address type for LE. It does not
      handle any address types not used by LE and in the end just make
      the code a lot harder to read.
      
      So instead of just hiding behind a magic function, just convert
      the internal address type where it needs to be converted. And it
      turns out that these are only two cases anyway. One when creating
      new LE connections and the other when loading the long term keys.
      In both cases this makes it more clear on what it going on.
      Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
      Signed-off-by: NJohan Hedberg <johan.hedberg@intel.com>
      79d95a19
  12. 12 10月, 2013 2 次提交
    • M
      Bluetooth: Fix HCI init for 1st generation BlueFRITZ! devices · 4ca048e3
      Marcel Holtmann 提交于
      The 1st generation of BlueFRITZ! devices from AVM Berlin pretend
      to be HCI version 1.2 controllers, but they are not. They are simple
      Bluetooth 1.1 devices.
      
      Since this company never created any newer controllers, it is safe
      to use the manufacturer ID instead of an USB quirk.
      
      < HCI Command: Read Page Scan Activity (0x03|0x001b) plen 0
      > HCI Event: Command Complete (0x0e) plen 8
            Read Page Scan Activity (0x03|0x001b) ncmd 1
              Status: Success (0x00)
              Interval: 1280.000 msec (0x0800)
              Window: 21.250 msec (0x0022)
      < HCI Command: Read Page Scan Type (0x03|0x0046) plen 0
      > HCI Event: Command Status (0x0f) plen 4
            Read Page Scan Type (0x03|0x0046) ncmd 1
              Status: Unknown HCI Command (0x01)
      Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
      Signed-off-by: NJohan Hedberg <johan.hedberg@intel.com>
      4ca048e3
    • M
      Bluetooth: Fix endless loop with HCI_QUIRK_RESET_ON_CLOSE · 3a6afbd2
      Marcel Holtmann 提交于
      Really early versions of the Bluetooth specification were unclear
      with the behavior of HCI Reset for USB devices. They assumed that
      also an USB reset needs to be issued. Later Bluetooth specifications
      cleared this out and it is safe to call HCI Reset without affecting
      the transport.
      
      For old devices that misbehave, the HCI_QUIRK_RESET_ON_CLOSE quirk
      was introduced to postpone the HCI Reset until the device was no
      longer in use.
      
      One of these devices is the Digianswer BPA-105 Bluetooth Protocol
      Analyzer. The only problem now is that with the quirk set, the
      HCI Reset is also executed at the end of the setup phase. So the
      controller gets configured and then it disconnects from the USB
      bus, connects again, gets configured and of course disconnects
      again. This game goes on forever.
      
      For devices that need HCI_QUIRK_RESET_ON_CLOSE it is important
      that the HCI Reset is not executed after the setup phase. In
      specific when HCI_AUTO_OFF is set, do not call HCI Reset when
      closing the device.
      Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
      Signed-off-by: NJohan Hedberg <johan.hedberg@intel.com>
      3a6afbd2