1. 03 Oct, 2013 18 commits
  2. 02 Oct, 2013 22 commits
    • Marcel Holtmann's avatar
      Bluetooth: Fix memory leak with L2CAP signal channels · 3b166295
      Marcel Holtmann authored
      The wrong type of L2CAP signalling packets on the wrong type of
      either BR/EDR or LE links need to be dropped. When that happens
      the packet is dropped, but the memory not freed. So actually
      free the memory as well.
      Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
      Signed-off-by: default avatarGustavo Padovan <gustavo.padovan@collabora.co.uk>
      3b166295
    • DoHyun Pyun's avatar
      Bluetooth: Add the definition for Slave Page Response Timeout · 2ed01805
      DoHyun Pyun authored
      The Slave Page Response Timeout event indicates to the Host that a
      slave page response timeout has occurred in the BR/EDR Controller.
      
      The Core Spec Addendum 4 adds this command in part B Connectionless
      Slave Broadcast.
      
      Bluetooth Core Specification Addendum 4 - Page 110
      
      "7.7.72 Slave Page Response Timeout Event [New Section]
      ...
      Note: this event will be generated if the slave BR/EDR Controller
      responds to a page but does not receive the master FHS packet
      (see Baseband, Section 8.3.3) within pagerespTO.
      
      Event Parameters: NONE"
      Signed-off-by: default avatarDohyun Pyun <dh79.pyun@samsung.com>
      Signed-off-by: default avatarC S Bhargava <cs.bhargava@samsung.com>
      Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
      2ed01805
    • DoHyun Pyun's avatar
      Bluetooth: Add the definition and stcuture for Sync Train Complete · 2b359445
      DoHyun Pyun authored
      The Synchronization Train Complete event indicates that the Start
      Synchronization Train command has completed.
      
      The Core Spec Addendum 4 adds this command in part B Connectionless
      Slave Broadcast.
      
      Bluetooth Core Specification Addendum 4 - Page 103
      
      "7.7.67 Synchronization Train Complete Event [New Section]
      ...
      
      Event Parameters:
      
      Status 0x00       Start Synchronization Train command completed
                        successfully.
             0x01-0xFF  Start Synchronization Train command failed.
                        See Part D, Error Codes, for error codes and
                        descriptions."
      Signed-off-by: default avatarDohyun Pyun <dh79.pyun@samsung.com>
      Signed-off-by: default avatarC S Bhargava <cs.bhargava@samsung.com>
      Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
      2b359445
    • DoHyun Pyun's avatar
      Bluetooth: Add the definition for Start Synchronization Train · cefded98
      DoHyun Pyun authored
      The Start_Synchronization_Train command controls the Synchronization
      Train functionality in the BR/EDR Controller.
      
      The Core Spec Addendum 4 adds this command in part B Connectionless
      Slave Broadcast.
      
      Bluetooth Core Specification Addendum 4 - Page 86
      
      "7.1.51 Start Synchronization Train Command [New Section]
      ...
      If connectionless slave broadcast mode is not enabled, the Command
      Disallowed (0x0C) error code shall be returned. After receiving this
      command and returning a Command Status event, the Baseband starts
      attempting to send synchronization train packets containing information
      related to the enabled Connectionless Slave Broadcast packet timing.
      
      Note: The AFH_Channel_Map used in the synchronization train packets is
      configured by the Set_AFH_Channel_Classification command and the local
      channel classification in the BR/EDR Controller.
      
      The synchronization train packets will be sent using the parameters
      specified by the latest Write_Synchronization_Train_Parameters command.
      The Synchronization Train will continue until synchronization_trainTO
      slots (as specified in the last Write_Synchronization_Train command)
      have passed or until the Host disables the Connectionless Slave Broadcast
      logical transport."
      Signed-off-by: default avatarDohyun Pyun <dh79.pyun@samsung.com>
      Signed-off-by: default avatarC S Bhargava <cs.bhargava@samsung.com>
      Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
      cefded98
    • DoHyun Pyun's avatar
      Bluetooth: Add the definition and structure for Set CSB · 8c9a041b
      DoHyun Pyun authored
      he Set_Connectionless_Slave_Broadcast command controls the
      Connectionless Slave Broadcast functionality in the BR/EDR
      Controller.
      
      The Core Spec Addendum 4 adds this command in part B Connectionless
      Slave Broadcast.
      
      Bluetooth Core Specification Addendum 4 - Page 78
      
      "7.1.49 Set Connectionless Slave Broadcast Command [New Section]
      ...
      The LT_ADDR indicated in the Set_Connectionless_Slave_Broadcast shall be
      pre-allocated using the HCI_Set_Reserved_LT_ADDR command. If the
      LT_ADDR has not been reserved, the Unknown Connection Identifier (0x02)
      error code shall be returned. If the controller is unable to reserve
      sufficient bandwidth for the requested activity, the Connection Rejected
      Due to Limited Resources (0x0D) error code shall be returned.
      
      The LPO_Allowed parameter informs the BR/EDR Controller whether it is
      allowed to sleep.
      
      The Packet_Type parameter specifies which packet types are allowed. The
      Host shall either enable BR packet types only, or shall enable EDR and DM1
      packet types only.
      
      The Interval_Min and Interval_Max parameters specify the range from which
      the BR/EDR Controller must select the Connectionless Slave Broadcast
      Interval. The selected Interval is returned."
      Signed-off-by: default avatarDohyun Pyun <dh79.pyun@samsung.com>
      Signed-off-by: default avatarC S Bhargava <cs.bhargava@samsung.com>
      Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
      8c9a041b
    • DoHyun Pyun's avatar
      Bluetooth: Add the structure for Write Sync Train Parameters · a9b07a64
      DoHyun Pyun authored
      The Write_Synchronization_Train_Parameters command configures
      the Synchronization Train functionality in the BR/EDR Controller.
      
      The Core Spec Addendum 4 adds this command in part B Connectionless
      Slave Broadcast.
      
      Bluetooth Core Specification Addendum 4 - Page 97
      
      "7.3.90 Write Synchronization Train Parameters Command [New Section]
      ...
      Note: The AFH_Channel_Map used in the Synchronization Train packets is
      configured by the Set_AFH_Channel_Classification command and the local
      channel classification in the BR/EDR Controller.
      
      Interval_Min and Interval_Max specify the allowed range of
      Sync_Train_Interval. Refer to [Vol. 2], Part B, section 2.7.2 for
      a detailed description of Sync_Train_Interval. The BR/EDR Controller shall
      select an interval from this range and return it in Sync_Train_Interval.
      If the Controller is unable to select a value from this range, it shall
      return the Invalid HCI Command Parameters (0x12) error code.
      
      Once started (via the Start_Synchronization_Train Command) the
      Synchronization Train will continue until synchronization_trainTO slots have
      passed or Connectionless Slave Broadcast has been disabled."
      Signed-off-by: default avatarDohyun Pyun <dh79.pyun@samsung.com>
      Signed-off-by: default avatarC S Bhargava <cs.bhargava@samsung.com>
      Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
      a9b07a64
    • DoHyun Pyun's avatar
      Bluetooth: Add the definition and structure for Set CSB Data · 7d1dab49
      DoHyun Pyun authored
      The Set_Connectionless_Slave_Broadcast_Data command provides the
      ability for the Host to set Connectionless Slave Broadcast data in
      the BR/EDR Controller.
      
      The Core Spec Addendum 4 adds this command in part B Connectionless
      Slave Broadcast.
      
      Bluetooth Core Specification Addendum 4 - Page 93
      
      "7.3.88 Set Connectionless Slave Broadcast Data Command [New Section]
      ...
      If connectionless slave broadcast mode is disabled, this data shall be
      kept by the BR/EDR Controller and used once connectionless slave broadcast
      mode is enabled. If connectionless slave broadcast mode is enabled,
      and this command is successful, this data will be sent starting with
      the next Connectionless Slave Broadcast instant.
      
      The Data_Length field may be zero, in which case no data needs to be
      provided.
      
      The Host may fragment the data using the Fragment field in the command. If
      the combined length of the fragments exceeds the capacity of the largest
      allowed packet size specified in the Set Connectionless Slave Broadcast
      command, all fragments associated with the data being assembled shall be
      discarded and the Invalid HCI Command Parameters error (0x12) shall be
      returned."
      Signed-off-by: default avatarDohyun Pyun <dh79.pyun@samsung.com>
      Signed-off-by: default avatarC S Bhargava <cs.bhargava@samsung.com>
      Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
      7d1dab49
    • DoHyun Pyun's avatar
      Bluetooth: Add the definition and structure for Delete Reserved LT_ADDR · 6a20eaf4
      DoHyun Pyun authored
      The Delete_Reserved_LT_ADDR command requests that the BR/EDR
      Controller cancel the reservation for a specific LT_ADDR reserved for the
      purposes of Connectionless Slave Broadcast.
      
      The Core Spec Addendum 4 adds this command in part B Connectionless
      Slave Broadcast.
      
      Bluetooth Core Specification Addendum 4 - Page 92
      
      "7.3.87 Delete Reserved LT_ADDR Command [New Section]
      ...
      If the LT_ADDR indicated in the LT_ADDR parameter is not reserved by the
      BR/EDR Controller, it shall return the Unknown Connection Identifier (0x02)
      error code.
      If connectionless slave broadcast mode is still active, then the Controller
      shall return the Command Disallowed (0x0C) error code."
      Signed-off-by: default avatarDohyun Pyun <dh79.pyun@samsung.com>
      Signed-off-by: default avatarC S Bhargava <cs.bhargava@samsung.com>
      Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
      6a20eaf4
    • DoHyun Pyun's avatar
      Bluetooth: Add the definition and structure for Set Reserved LT_ADDR · d0bf75a5
      DoHyun Pyun authored
      The Set_Reserved_LT_ADDR command allows the host to request that the
      BR/EDR Controller reserve a specific LT_ADDR for Connectionless Slave
      Broadcast.
      
      The Core Spec Addendum 4 adds this command in part B Connectionless
      Slave Broadcast.
      
      Bluetooth Core Specification Addendum 4 - Page 90
      
      "7.3.86 Set Reserved LT_ADDR Command [New Section]
      ...
      If the LT_ADDR indicated in the LT_ADDR parameter is already in use by the
      BR/EDR Controller, it shall return the ACL Connection Already Exists (0x0B)
      error code. If the LT_ADDR indicated in the LT_ADDR parameter is out of
      range, the controller shall return the Invalid HCI Command Parameters (0x12)
      error code. If the command succeeds, then the reserved LT_ADDR shall be
      used when issuing subsequent Set Connectionless Slave Broadcast Data and
      Set Connectionless Slave Broadcast commands.
      To ensure that the reserved LT_ADDR is not already allocated, it is
      recommended that this command be issued at some point after HCI_Reset is
      issued but before page scanning is enabled or paging is initiated."
      Signed-off-by: default avatarDohyun Pyun <dh79.pyun@samsung.com>
      Signed-off-by: default avatarC S Bhargava <cs.bhargava@samsung.com>
      Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
      d0bf75a5
    • Johannes Berg's avatar
      iwlwifi: pcie: fix merge damage · d819c6cf
      Johannes Berg authored
      The merge b35c8097 seems to have lost commit eabc4ac5,
      put the code back.
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      d819c6cf
    • Marcel Holtmann's avatar
      Bluetooth: Increment management interface revision · 9ab8cf37
      Marcel Holtmann authored
      This patch increments the management interface revision due to the
      various fixes, improvements and other changes that have gone in
      lately.
      Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
      Signed-off-by: default avatarJohan Hedberg <johan.hedberg@intel.com>
      9ab8cf37
    • Johan Hedberg's avatar
      Bluetooth: Fix advertising data flags with disabled BR/EDR · 11802b29
      Johan Hedberg authored
      We shouldn't include the simultaneous LE & BR/EDR flags in the LE
      advertising data if BR/EDR is disabled on a dual-mode controller. This
      patch fixes this issue and ensures that the create_ad function generates
      the correct flags when BR/EDR is disabled.
      Signed-off-by: default avatarJohan Hedberg <johan.hedberg@intel.com>
      Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
      11802b29
    • Johan Hedberg's avatar
      Bluetooth: Fix REJECTED vs NOT_SUPPORTED mgmt responses · e6fe7986
      Johan Hedberg authored
      The REJECTED management response should mainly be used when the adapter
      is in a state where we cannot accept some command or a specific
      parameter value. The NOT_SUPPORTED response in turn means that the
      adapter really cannot support the command or parameter value.
      
      This patch fixes this distinction and adds two helper functions to
      easily get the appropriate LE or BR/EDR related status response.
      Signed-off-by: default avatarJohan Hedberg <johan.hedberg@intel.com>
      Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
      e6fe7986
    • Marcel Holtmann's avatar
      Bluetooth: Add management command for setting static address · d13eafce
      Marcel Holtmann authored
      On dual-mode BR/EDR/LE and LE only controllers it is possible
      to configure a random address. There are two types or random
      addresses, one is static and the other private. Since the
      random private addresses require special privacy feature to
      be supported, the configuration of these two are kept separate.
      
      This command allows for setting the static random address. It is
      only supported on controllers with LE support. The static random
      address is suppose to be valid for the lifetime of the controller
      or at least until the next power cycle. To ensure such behavior,
      setting of the address is limited to when the controller is
      powered off.
      
      The special BDADDR_ANY address (00:00:00:00:00:00) can be used to
      disable the static address. This is also the default value.
      Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
      Signed-off-by: default avatarJohan Hedberg <johan.hedberg@intel.com>
      d13eafce
    • Marcel Holtmann's avatar
      Bluetooth: Restrict disabling of HS when controller is powered off · a0cdf960
      Marcel Holtmann authored
      Disabling the high speed setting when the controller is powered on has
      too many side effects that are not taken care of. And in general it
      is not an useful operation anyway. So just make such a command fail
      with a rejection error message.
      Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
      Signed-off-by: default avatarJohan Hedberg <johan.hedberg@intel.com>
      a0cdf960
    • Johan Hedberg's avatar
      Bluetooth: Add a new mgmt_set_bredr command · 0663ca2a
      Johan Hedberg authored
      This patch introduces a new mgmt command for enabling/disabling BR/EDR
      functionality. This can be convenient when one wants to make a dual-mode
      controller behave like a single-mode one. The command is only available
      for dual-mode controllers and requires that LE is enabled before using
      it. The BR/EDR setting can be enabled at any point, however disabling it
      requires the controller to be powered off (otherwise a "rejected"
      response will be sent).
      
      Disabling the BR/EDR setting will automatically disable all other BR/EDR
      related settings.
      Signed-off-by: default avatarJohan Hedberg <johan.hedberg@intel.com>
      Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
      0663ca2a
    • Johan Hedberg's avatar
      Bluetooth: Introduce a new HCI_BREDR_ENABLED flag · 56f87901
      Johan Hedberg authored
      To allow treating dual-mode (BR/EDR/LE) controllers as single-mode ones
      (LE-only) we want to introduce a new HCI_BREDR_ENABLED flag to track
      whether BR/EDR is enabled or not (previously we simply looked at the
      feature bit with lmp_bredr_enabled).
      
      This patch add the new flag and updates the relevant places to test
      against it instead of using lmp_bredr_enabled. The flag is by default
      enabled when registering an adapter and only cleared if necessary once
      the local features have been read during the HCI init procedure.
      
      We cannot completely block BR/EDR usage in case user space uses raw HCI
      sockets but the patch tries to block this in places where possible, such
      as the various BR/EDR specific ioctls.
      Signed-off-by: default avatarJohan Hedberg <johan.hedberg@intel.com>
      Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
      56f87901
    • Amitkumar Karwar's avatar
      Bluetooth: btmrvl: add calibration data download support · 2cc86890
      Amitkumar Karwar authored
      A text file containing calibration data in hex format can
      be provided at following path:
      
      /lib/firmware/mrvl/sd8797_caldata.conf
      
      The data will be downloaded to firmware during initialization.
      Reviewed-by: default avatarMike Frysinger <vapier@chromium.org>
      Signed-off-by: default avatarAmitkumar Karwar <akarwar@marvell.com>
      Signed-off-by: default avatarBing Zhao <bzhao@marvell.com>
      Signed-off-by: default avatarHyuckjoo Lee <hyuckjoo.lee@samsung.com>
      Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
      2cc86890
    • Amitkumar Karwar's avatar
      Bluetooth: btmrvl: add setup handler · 4b245722
      Amitkumar Karwar authored
      Move initialization code to hdev's setup handler.
      Signed-off-by: default avatarAmitkumar Karwar <akarwar@marvell.com>
      Signed-off-by: default avatarBing Zhao <bzhao@marvell.com>
      Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
      4b245722
    • Amitkumar Karwar's avatar
      Bluetooth: btmrvl: get rid of struct btmrvl_cmd · 7d5b400c
      Amitkumar Karwar authored
      Replace this proprietary structure with the standard one
      (struct hci_command_hdr).
      Signed-off-by: default avatarAmitkumar Karwar <akarwar@marvell.com>
      Signed-off-by: default avatarBing Zhao <bzhao@marvell.com>
      Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
      7d5b400c
    • Amitkumar Karwar's avatar
      Bluetooth: btmrvl: add btmrvl_send_sync_cmd() function · c037874c
      Amitkumar Karwar authored
      Command preparation code is used multiple times. This patch
      separate out this common code and create btmrvl_send_sync_cmd()
      function.
      Signed-off-by: default avatarAmitkumar Karwar <akarwar@marvell.com>
      Signed-off-by: default avatarBing Zhao <bzhao@marvell.com>
      Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
      c037874c
    • Johan Hedberg's avatar
      Bluetooth: Fix workqueue synchronization in hci_dev_open · e1d08f40
      Johan Hedberg authored
      When hci_sock.c calls hci_dev_open it needs to ensure that there isn't
      pending work in progress, such as that which is scheduled for the
      initial setup procedure or the one for automatically powering off after
      the setup procedure. This adds the necessary calls to ensure that any
      previously scheduled work is completed before attempting to call
      hci_dev_do_open.
      
      This patch fixes a race with old user space versions where we might
      receive a HCIDEVUP ioctl before the setup procedure has been completed.
      When that happens the setup procedures callback may fail early and leave
      the device in an inconsistent state, causing e.g. the setup callback to
      be (incorrectly) called more than once.
      Signed-off-by: default avatarJohan Hedberg <johan.hedberg@intel.com>
      Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
      e1d08f40