1. 08 6月, 2015 1 次提交
    • M
      Bluetooth: Fix race condition with user channel and setup stage · 781f899f
      Marcel Holtmann 提交于
      During the initial setup stage of a controller, the low-level transport
      is actually active. This means that HCI_UP is true. To avoid toggling
      the transport off and back on again for normal operation the kernel
      holds a grace period with HCI_AUTO_OFF that will turn the low-level
      transport off in case no user is present.
      
      The idea of the grace period is important to avoid having to initialize
      all of the controller twice. So legacy ioctl and the new management
      interface knows how to clear this grace period and then start normal
      operation.
      
      For the user channel operation this grace period has not been taken into
      account which results in the problem that HCI_UP and HCI_AUTO_OFF are
      set and the kernel will return EBUSY. However from a system point of
      view the controller is ready to be grabbed by either the ioctl, the
      management interface or the user channel.
      
      This patch brings the user channel to the same level as the other two
      entries for operating a controller.
      Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
      Signed-off-by: NJohan Hedberg <johan.hedberg@intel.com>
      Cc: stable@vger.kernel.org
      781f899f
  2. 07 6月, 2015 1 次提交
  3. 11 5月, 2015 1 次提交
  4. 31 3月, 2015 1 次提交
  5. 18 3月, 2015 2 次提交
  6. 15 3月, 2015 8 次提交
  7. 13 3月, 2015 3 次提交
  8. 07 3月, 2015 2 次提交
  9. 03 3月, 2015 1 次提交
  10. 02 3月, 2015 2 次提交
  11. 28 2月, 2015 1 次提交
    • J
      Bluetooth: make hci_test_bit's addr const · 9391976a
      Jiri Slaby 提交于
      gcc5 warns about passing a const array to hci_test_bit which takes a
      non-const pointer:
      net/bluetooth/hci_sock.c: In function ‘hci_sock_sendmsg’:
      net/bluetooth/hci_sock.c:955:8: warning: passing argument 2 of ‘hci_test_bit’ discards ‘const’ qualifier from pointer target type [-Wdiscarded-array-qualifiers]
              &hci_sec_filter.ocf_mask[ogf])) &&
              ^
      net/bluetooth/hci_sock.c:49:19: note: expected ‘void *’ but argument is of type ‘const __u32 (*)[4] {aka const unsigned int (*)[4]}’
       static inline int hci_test_bit(int nr, void *addr)
                         ^
      
      So make 'addr' 'const void *'.
      Signed-off-by: NJiri Slaby <jslaby@suse.cz>
      Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
      Cc: Gustavo Padovan <gustavo@padovan.org>
      Cc: Johan Hedberg <johan.hedberg@gmail.com>
      9391976a
  12. 21 2月, 2015 2 次提交
  13. 12 1月, 2015 4 次提交
  14. 24 11月, 2014 1 次提交
  15. 06 11月, 2014 1 次提交
    • D
      net: Add and use skb_copy_datagram_msg() helper. · 51f3d02b
      David S. Miller 提交于
      This encapsulates all of the skb_copy_datagram_iovec() callers
      with call argument signature "skb, offset, msghdr->msg_iov, length".
      
      When we move to iov_iters in the networking, the iov_iter object will
      sit in the msghdr.
      
      Having a helper like this means there will be less places to touch
      during that transformation.
      
      Based upon descriptions and patch from Al Viro.
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      51f3d02b
  16. 29 10月, 2014 1 次提交
  17. 11 7月, 2014 3 次提交
  18. 09 7月, 2014 1 次提交
  19. 06 7月, 2014 1 次提交
    • M
      Bluetooth: Run controller setup after external configuration · d603b76b
      Marcel Holtmann 提交于
      When the external configuration triggers the switch to a configured
      controller, it means the setup needs to be run. Controllers that start
      out unconfigured have only run limited set of HCI commands. This is
      not enough for complete operation and thus run the setup procedure
      before announcing the new controller index.
      
      This introduces HCI_CONFIG flag as companion to HCI_SETUP flag. The
      HCI_SETUP flag is only used once for the initial setup procedure. And
      during that procedure hdev->setup driver callback is called. With the
      new HCI_CONFIG the switch from unconfigured to configured state is
      triggering the same setup procedure just without hdev->setup. This
      is required since bringing a controller back to unconfigured state
      from configured state is possible.
      Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
      Signed-off-by: NJohan Hedberg <johan.hedberg@intel.com>
      d603b76b
  20. 03 7月, 2014 3 次提交
    • M
      Bluetooth: Add support for Unconfigured Index Added events · 0602a8ad
      Marcel Holtmann 提交于
      When a controller is in unconfigured state it is currently hidden
      from the management interface. This change now announces the new
      controller with an Unconfigured Index Added event and allows clients
      to easily detect the controller.
      Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
      Signed-off-by: NJohan Hedberg <johan.hedberg@intel.com>
      0602a8ad
    • M
      Bluetooth: Introduce unconfigured controller state · 4a964404
      Marcel Holtmann 提交于
      With the new unconfigured controller state it is possible to provide a
      fully functional HCI transport, but disable the higher level operations
      that would normally happen. This way userspace can try to configure the
      controller before releases the unconfigured state.
      
      The internal state is represented by HCI_UNCONFIGURED. This replaces the
      HCI_QUIRK_RAW_DEVICE quirk as internal state representation. This is now
      a real state and drivers can use the quirk to actually trigger this
      state. In the future this will allow a more fine grained switching from
      unconfigured state to configured state for controller inititialization.
      Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
      Signed-off-by: NJohan Hedberg <johan.hedberg@intel.com>
      4a964404
    • M
      Bluetooth: Restrict access for raw-only controllers · fee746b0
      Marcel Holtmann 提交于
      Bluetooth controllers that are marked for raw-only usage can only be
      used with user channel access. Any other operation should be rejected.
      
      This simplifies the whole raw-only support since it now depends on
      the fact that the controller is marked with HCI_QUIRK_RAW_DEVICE and
      runtime raw access is restricted to user channel operation.
      
      The kernel internal processing of HCI commands and events is designed
      around the case that either the kernel has full control over the device
      or that the device is driven from userspace. This now makes a clear
      distinction between these two possible operation modes.
      Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
      Signed-off-by: NJohan Hedberg <johan.hedberg@intel.com>
      fee746b0