mbox

[RFC,Raring,SRU,Pull,Request] Bluetooth update for LP#1065400 and LP#1209124

Message ID CAH10aOhPy37DzogqHtq4AWov+w5BDyhFXmcCcvDxjD7=4ZnwqA@mail.gmail.com
State New
Headers show

Pull-request

git://kernel.ubuntu.com/jesse/ubuntu-raring.git bt-update

Message

Wen-chien Jesse Sung Sept. 2, 2013, 10:27 a.m. UTC
Hi,

Currently the broadcom firmware loader in the kernel loads firmware
with inserting
certain delay between two commands. This approach does not work well with new
platforms(eg. Lynx Point LP). Kernel 3.10 introduced an approach to
send hci commands synchronously. The firmware loader can make sure
that previous command is completed
before sending out another. It works better and there's no need to
worry about if
the delay is too small or too large.

There's also a demand of supporting intel 7260 bluetooth module. It is
supported by
kernel 3.10, and the support depends on the approach mentioned above.

Related changes and some bug fixes are cherry-picked from 3.10 in this
pull request.
Basically these are all clean merges, and the broadcom firmware
loader, which is an
ubuntu sauce currently, is ported to use this new approach.

This is already tested on several machines, but since the amount of
commits is quite large,
I'd like to have your comments on this. If this looks good for SRU,
I'll do another pull request against quantal.

Thanks.

--

BugLink: https://launchpad.net/bugs/1065400
BugLink: https://launchpad.net/bugs/1209124

The following changes since commit 942bf619e6a9494a775cb1df0a7d993272d05c7f:

  UBUNTU: Ubuntu-3.8.0-30.44 (2013-08-22 15:16:45 -0500)

are available in the git repository at:

  git://kernel.ubuntu.com/jesse/ubuntu-raring.git bt-update

for you to fetch changes up to d7ac7f500318d455077d3a34dedf7d42bb521811:

  Bluetooth: fix wrong use of PTR_ERR() in btusb (2013-08-30 21:05:21 +0800)

----------------------------------------------------------------
Adam Lee (1):
      Bluetooth: fix wrong use of PTR_ERR() in btusb

Andre Guedes (9):
      Bluetooth: Fix __hci_req_sync
      Bluetooth: Return ENODATA in hci_req_run
      Bluetooth: Check hci_req_run returning value in __hci_req_sync
      Bluetooth: HCI request error handling
      Bluetooth: Make hci_req_add returning void
      Bluetooth: Check req->err in hci_req_add
      Bluetooth: Fix HCI request framework
      Bluetooth: Fix hci_inquiry ioctl usage
      Bluetooth: Remove unneeded hci_req_cmd_status function

Fengguang Wu (1):
      Bluetooth: hci_get_cmd_complete() can be static

Johan Hedberg (19):
      Bluetooth: Add LE Local Features reading support
      Bluetooth: Add support for reading LE White List Size
      Bluetooth: Add support for reading LE supported states
      Bluetooth: Rename hci_request to hci_req_sync
      Bluetooth: Fix __hci_req_sync() handling of empty requests
      Bluetooth: Split HCI init sequence into three stages
      Bluetooth: Add initial skeleton for asynchronous HCI requests
      Bluetooth: Refactor HCI command skb creation
      Bluetooth: Introduce new hci_req_add function
      Bluetooth: Fix stand-alone HCI command handling
      Bluetooth: Add request cmd_complete and cmd_status functions
      Bluetooth: Use async requests internally in hci_req_sync
      Bluetooth: Remove unused hdev->init_last_cmd
      Bluetooth: Remove empty HCI event handlers
      Bluetooth: Fix endianness handling of cmd_status/complete opcodes
      Bluetooth: Track received events in hdev
      Bluetooth: Add __hci_cmd_sync() helper function
      Bluetooth: Add support for custom event terminated commands
      Bluetooth: Add __hci_cmd_sync_ev function

Marcel Holtmann (1):
      Bluetooth: Add driver setup stage for early init

Tedd Ho-Jeong An (1):
      Bluetooth: Add support for Intel Bluetooth device [8087:07dc]

Wen-chien Jesse Sung (2):
      UBUNTU: SAUCE: Bluetooth: Use setup callback for patchram loading
      UBUNTU: SAUCE: Bluetooth: Remove load_firmware callback

 drivers/bluetooth/btusb.c         | 443
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------
 include/net/bluetooth/bluetooth.h |  11 +++
 include/net/bluetooth/hci.h       |  18 ++++
 include/net/bluetooth/hci_core.h  |  32 +++++--
 net/bluetooth/hci_core.c          | 828
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------
 net/bluetooth/hci_event.c         | 532
++++++++++++++-----------------------------------------------------------------------------------------------
 net/bluetooth/hci_sock.c          |   5 ++
 7 files changed, 1249 insertions(+), 620 deletions(-)

Comments

Andy Whitcroft Sept. 2, 2013, 1:09 p.m. UTC | #1
On Mon, Sep 02, 2013 at 06:27:57PM +0800, Jesse Sung wrote:

> Adam Lee (1):
> Andre Guedes (9):
> Fengguang Wu (1):
> Johan Hedberg (19):
> Marcel Holtmann (1):
> Tedd Ho-Jeong An (1):
> Wen-chien Jesse Sung (2):

34 patches?  Ouch, is this really the only way this can be fixed?

-apw
Wen-chien Jesse Sung Sept. 2, 2013, 4:53 p.m. UTC | #2
2013/9/2 Andy Whitcroft <apw@canonical.com>:
> On Mon, Sep 02, 2013 at 06:27:57PM +0800, Jesse Sung wrote:
>
>> Adam Lee (1):
>> Andre Guedes (9):
>> Fengguang Wu (1):
>> Johan Hedberg (19):
>> Marcel Holtmann (1):
>> Tedd Ho-Jeong An (1):
>> Wen-chien Jesse Sung (2):
>
> 34 patches?  Ouch, is this really the only way this can be fixed?

Besides two sauce patches for broadcom fw loader and one for 7260 fw
loader, rest of them are bug fixes
or for indroducing __hci_cmd_sync() and __hci_cmd_sync_ev(). Since the
7260 driver depends on these
helper functions, we'll need most of them. And these patches benefits
broadcom loader too since it works
better with these functions utilized.

Thanks,
Jesse
Brad Figg Sept. 3, 2013, 5:52 p.m. UTC | #3
Discussion of this has been moved off-list. If we do agree to pull
these patches in, that submission *will* happen on-list.

Brad


On 09/02/2013 03:27 AM, Jesse Sung wrote:
> Hi,
> 
> Currently the broadcom firmware loader in the kernel loads firmware
> with inserting
> certain delay between two commands. This approach does not work well with new
> platforms(eg. Lynx Point LP). Kernel 3.10 introduced an approach to
> send hci commands synchronously. The firmware loader can make sure
> that previous command is completed
> before sending out another. It works better and there's no need to
> worry about if
> the delay is too small or too large.
> 
> There's also a demand of supporting intel 7260 bluetooth module. It is
> supported by
> kernel 3.10, and the support depends on the approach mentioned above.
> 
> Related changes and some bug fixes are cherry-picked from 3.10 in this
> pull request.
> Basically these are all clean merges, and the broadcom firmware
> loader, which is an
> ubuntu sauce currently, is ported to use this new approach.
> 
> This is already tested on several machines, but since the amount of
> commits is quite large,
> I'd like to have your comments on this. If this looks good for SRU,
> I'll do another pull request against quantal.
> 
> Thanks.
> 
> --
> 
> BugLink: https://launchpad.net/bugs/1065400
> BugLink: https://launchpad.net/bugs/1209124
> 
> The following changes since commit 942bf619e6a9494a775cb1df0a7d993272d05c7f:
> 
>   UBUNTU: Ubuntu-3.8.0-30.44 (2013-08-22 15:16:45 -0500)
> 
> are available in the git repository at:
> 
>   git://kernel.ubuntu.com/jesse/ubuntu-raring.git bt-update
> 
> for you to fetch changes up to d7ac7f500318d455077d3a34dedf7d42bb521811:
> 
>   Bluetooth: fix wrong use of PTR_ERR() in btusb (2013-08-30 21:05:21 +0800)
> 
> ----------------------------------------------------------------
> Adam Lee (1):
>       Bluetooth: fix wrong use of PTR_ERR() in btusb
> 
> Andre Guedes (9):
>       Bluetooth: Fix __hci_req_sync
>       Bluetooth: Return ENODATA in hci_req_run
>       Bluetooth: Check hci_req_run returning value in __hci_req_sync
>       Bluetooth: HCI request error handling
>       Bluetooth: Make hci_req_add returning void
>       Bluetooth: Check req->err in hci_req_add
>       Bluetooth: Fix HCI request framework
>       Bluetooth: Fix hci_inquiry ioctl usage
>       Bluetooth: Remove unneeded hci_req_cmd_status function
> 
> Fengguang Wu (1):
>       Bluetooth: hci_get_cmd_complete() can be static
> 
> Johan Hedberg (19):
>       Bluetooth: Add LE Local Features reading support
>       Bluetooth: Add support for reading LE White List Size
>       Bluetooth: Add support for reading LE supported states
>       Bluetooth: Rename hci_request to hci_req_sync
>       Bluetooth: Fix __hci_req_sync() handling of empty requests
>       Bluetooth: Split HCI init sequence into three stages
>       Bluetooth: Add initial skeleton for asynchronous HCI requests
>       Bluetooth: Refactor HCI command skb creation
>       Bluetooth: Introduce new hci_req_add function
>       Bluetooth: Fix stand-alone HCI command handling
>       Bluetooth: Add request cmd_complete and cmd_status functions
>       Bluetooth: Use async requests internally in hci_req_sync
>       Bluetooth: Remove unused hdev->init_last_cmd
>       Bluetooth: Remove empty HCI event handlers
>       Bluetooth: Fix endianness handling of cmd_status/complete opcodes
>       Bluetooth: Track received events in hdev
>       Bluetooth: Add __hci_cmd_sync() helper function
>       Bluetooth: Add support for custom event terminated commands
>       Bluetooth: Add __hci_cmd_sync_ev function
> 
> Marcel Holtmann (1):
>       Bluetooth: Add driver setup stage for early init
> 
> Tedd Ho-Jeong An (1):
>       Bluetooth: Add support for Intel Bluetooth device [8087:07dc]
> 
> Wen-chien Jesse Sung (2):
>       UBUNTU: SAUCE: Bluetooth: Use setup callback for patchram loading
>       UBUNTU: SAUCE: Bluetooth: Remove load_firmware callback
> 
>  drivers/bluetooth/btusb.c         | 443
> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------
>  include/net/bluetooth/bluetooth.h |  11 +++
>  include/net/bluetooth/hci.h       |  18 ++++
>  include/net/bluetooth/hci_core.h  |  32 +++++--
>  net/bluetooth/hci_core.c          | 828
> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------
>  net/bluetooth/hci_event.c         | 532
> ++++++++++++++-----------------------------------------------------------------------------------------------
>  net/bluetooth/hci_sock.c          |   5 ++
>  7 files changed, 1249 insertions(+), 620 deletions(-)
>