GitHub/LineageOS/android_kernel_motorola_exynos9610.git
12 years agoBluetooth: Fix mgmt_stop_discovery_failed()
Andre Guedes [Mon, 2 Jan 2012 19:50:53 +0000 (16:50 -0300)]
Bluetooth: Fix mgmt_stop_discovery_failed()

Stop Discovery Command Status Event should use mgmt status code.

Signed-off-by: Andre Guedes <andre.guedes@openbossa.org>
Acked-by: Johan Hedberg <johan.hedberg@intel.com>
Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
12 years agoBluetooth: Queue adv_work on system workqueue
Andre Guedes [Mon, 2 Jan 2012 22:18:11 +0000 (19:18 -0300)]
Bluetooth: Queue adv_work on system workqueue

This patch queues hdev->adv_work on the system-wide workqueue
instead of on hdev->workqueue. This way we keep only tx/rx works
on hdev->workqueue.

Signed-off-by: Andre Guedes <andre.guedes@openbossa.org>
Acked-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
12 years agoBluetooth: Fix adv_work delay
Andre Guedes [Mon, 2 Jan 2012 22:18:10 +0000 (19:18 -0300)]
Bluetooth: Fix adv_work delay

This patch fixes the adv_work delay. It should be set to ADV_
CLEAR_TIMEOUT instead of (jiffies + ADV_CLEAR_TIMEOUT) since
queue_delayed_work() receives the number of jiffies to wait
before queueing. It also removes the unnecessary cancel_delayed_
work_sync() call in case LE scan has been disabled.

Signed-off-by: Andre Guedes <andre.guedes@openbossa.org>
Acked-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
12 years agoBluetooth: Fix hci_cc_read_local_ext_features()
Andre Guedes [Fri, 30 Dec 2011 13:34:04 +0000 (10:34 -0300)]
Bluetooth: Fix hci_cc_read_local_ext_features()

Copy the Features value according to the Page number.

Signed-off-by: Andre Guedes <aguedespe@gmail.com>
Acked-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
12 years agoBluetooth: Rename extfeatures
Andre Guedes [Fri, 30 Dec 2011 13:34:03 +0000 (10:34 -0300)]
Bluetooth: Rename extfeatures

This patch renames hdev->extfeatures to hdev->host_features since it
holds the extended features Page 1 (aka host features).

Signed-off-by: Andre Guedes <aguedespe@gmail.com>
Acked-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
12 years agoBluetooth: Remove *_bh from socket list lock.
Gustavo F. Padovan [Tue, 27 Dec 2011 17:28:48 +0000 (15:28 -0200)]
Bluetooth: Remove *_bh from socket list lock.

We don't need it anymore.

Acked-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
12 years agoBluetooth: Remove local_bh_disable() from hci_sock.c
Gustavo F. Padovan [Tue, 27 Dec 2011 17:28:47 +0000 (15:28 -0200)]
Bluetooth: Remove local_bh_disable() from hci_sock.c

Everything is in process context now, we do not need such a call.

Acked-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
12 years agoBluetooth: Remove *_bh locks from SCO
Gustavo F. Padovan [Tue, 27 Dec 2011 17:28:46 +0000 (15:28 -0200)]
Bluetooth: Remove *_bh locks from SCO

Those locks are not shared between interrupt and process context anymore,
so remove the part that disable interrupts. We are still safe because
preemption is disabled.

Acked-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
12 years agoBluetooth: Fix context in RFCOMM tty
Gustavo F. Padovan [Tue, 27 Dec 2011 17:28:45 +0000 (15:28 -0200)]
Bluetooth: Fix context in RFCOMM tty

We now run in process context, no need to disable interrupts.
Calls from the tty layer also run in process context.

rw_lock was converted to spinlock, we have more writers than readers in
this case.

Acked-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
12 years agoBluetooth: Fix context in rfcomm_sock_lock
Gustavo F. Padovan [Tue, 27 Dec 2011 17:28:44 +0000 (15:28 -0200)]
Bluetooth: Fix context in rfcomm_sock_lock

Code now run in process context, does not need to disable interrupt
anymore.

Acked-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
12 years agoBluetooth: Fix bacpy in l2cap_core.c
Gustavo F. Padovan [Mon, 2 Jan 2012 22:08:04 +0000 (20:08 -0200)]
Bluetooth: Fix bacpy in l2cap_core.c

It should be the dst in the copy not src. 03a001948 introduced this bug.

Reported-by: Vinicius Costa Gomes <vinicius.gomes@openbossa.org>
Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
13 years agoBluetooth: Fix a compile warning in RFCOMM
Gustavo F. Padovan [Tue, 27 Dec 2011 16:43:41 +0000 (14:43 -0200)]
Bluetooth: Fix a compile warning in RFCOMM

sock and sk were leftover from another change.

Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
13 years agoBluetooth: Incorrect address while storing LTK.
Hemant Gupta [Fri, 23 Dec 2011 05:37:24 +0000 (11:07 +0530)]
Bluetooth: Incorrect address while storing LTK.

This patch fixes incorrect address storage while storing
Long Term Key for LE Devices using SMP (Security Manager Protocol).
The address stored should be of remote device and not of source device.

Signed-off-by: Hemant Gupta <hemant.gupta@stericsson.com>
Acked-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
13 years agoBluetooth: Don't disable interrupt when locking the queue
Gustavo F. Padovan [Thu, 22 Dec 2011 18:35:05 +0000 (16:35 -0200)]
Bluetooth: Don't disable interrupt when locking the queue

We run everything in process context now.

Acked-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
13 years agoBluetooth: remove *_bh usage from hci_dev_list and hci_cb_list
Gustavo F. Padovan [Thu, 22 Dec 2011 18:30:27 +0000 (16:30 -0200)]
Bluetooth: remove *_bh usage from hci_dev_list and hci_cb_list

They don't need to disable interrupts anymore, we only run in process
context now.

Acked-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
13 years agoBluetooth: Remove lock from inquiry_cache
Gustavo F. Padovan [Thu, 22 Dec 2011 18:15:42 +0000 (16:15 -0200)]
Bluetooth: Remove lock from inquiry_cache

It was never used, so removing it.

Acked-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
13 years agoBluetooth: add debug output to l2cap_ack_timeout()
Gustavo F. Padovan [Thu, 22 Dec 2011 18:56:05 +0000 (16:56 -0200)]
Bluetooth: add debug output to l2cap_ack_timeout()

Acked-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
13 years agoBluetooth: Remove l2cap priority from inside RFCOMM.
Gustavo F. Padovan [Tue, 20 Dec 2011 18:30:44 +0000 (16:30 -0200)]
Bluetooth: Remove l2cap priority from inside RFCOMM.

RFCOMM needs a proper priority mechanism inside itself and not try to use
l2cap priority to fix its own problem.

Acked-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
13 years agoBluetooth: Add support for BCM20702A0 [0a5c:21e3]
Jesse Sung [Thu, 22 Dec 2011 02:48:47 +0000 (10:48 +0800)]
Bluetooth: Add support for BCM20702A0 [0a5c:21e3]

Add another vendor specific ID for BCM20702A0.

output of usb-devices:
T: Bus=06 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 4 Spd=12 MxCh= 0
D: Ver= 2.00 Cls=ff(vend.) Sub=01 Prot=01 MxPS=64 #Cfgs= 1
P: Vendor=0a5c ProdID=21e3 Rev=01.12
S: Manufacturer=Broadcom Corp
S: Product=BCM20702A0
S: SerialNumber=9439E5CBF66C
C: #Ifs= 4 Cfg#= 1 Atr=e0 MxPwr=0mA
I: If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=01 Prot=01 Driver=(none)
I: If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=(none)
I: If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
I: If#= 3 Alt= 0 #EPs= 0 Cls=fe(app. ) Sub=01 Prot=01 Driver=(none)

Signed-off-by: Wen-chien Jesse Sung <jesse.sung@canonical.com>
Acked-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
13 years agoBluetooth: Add SMP to User Passkey and Confirm
Brian Gix [Thu, 22 Dec 2011 00:12:13 +0000 (16:12 -0800)]
Bluetooth: Add SMP to User Passkey and Confirm

Low Energy pairing is performed through the SMP (Security Manager Protocol)
mechanism rather than HCI.

Signed-off-by: Brian Gix <bgix@codeaurora.org>
Acked-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
13 years agoBluetooth: Add MITM mechanism to LE-SMP
Brian Gix [Thu, 22 Dec 2011 00:12:12 +0000 (16:12 -0800)]
Bluetooth: Add MITM mechanism to LE-SMP

To achive Man-In-The-Middle (MITM) level security with Low Energy,
we have to enable User Passkey Comparison.  This commit modifies the
hard-coded JUST-WORKS pairing mechanism to support query via the MGMT
interface of Passkey comparison and User Confirmation.

Signed-off-by: Brian Gix <bgix@codeaurora.org>
Acked-by: Marcel Holtmann<marcel@holtmann.org>
Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
13 years agoBluetooth: Fix deadlocks with sock lock and L2CAP timers locks
Ulisses Furquim [Wed, 21 Dec 2011 22:02:36 +0000 (20:02 -0200)]
Bluetooth: Fix deadlocks with sock lock and L2CAP timers locks

When cancelling a delayed work (timer) in L2CAP we can not sleep holding
the sock mutex otherwise we might deadlock with an L2CAP timer handler.
This is possible because RX/TX and L2CAP timers run in different workqueues.
The scenario below illustrates the problem. Thus we are now avoiding to
sleep on the timers locks.

 ======================================================
 [ INFO: possible circular locking dependency detected ]
 3.1.0-05270-ga978dc7-dirty #239
 -------------------------------------------------------
 kworker/1:1/873 is trying to acquire lock:
  (sk_lock-AF_BLUETOOTH-BTPROTO_L2CAP){+.+...}, at: [<ffffffffa002ceac>] l2cap_chan_timeout+0x3c/0xe0 [bluetooth]

 but task is already holding lock:
  ((&(&chan->chan_timer)->work)){+.+...}, at: [<ffffffff81051a86>] process_one_work+0x126/0x450

 which lock already depends on the new lock.

 the existing dependency chain (in reverse order) is:

 -> #1 ((&(&chan->chan_timer)->work)){+.+...}:
        [<ffffffff8106b276>] check_prevs_add+0xf6/0x170
        [<ffffffff8106b903>] validate_chain+0x613/0x790
        [<ffffffff8106dfee>] __lock_acquire+0x4be/0xac0
        [<ffffffff8106ec2d>] lock_acquire+0x8d/0xb0
        [<ffffffff81052a6f>] wait_on_work+0x4f/0x160
        [<ffffffff81052ca3>] __cancel_work_timer+0x73/0x80
        [<ffffffff81052cbd>] cancel_delayed_work_sync+0xd/0x10
        [<ffffffffa002f2ed>] l2cap_chan_connect+0x22d/0x470 [bluetooth]
        [<ffffffffa002fb51>] l2cap_sock_connect+0xb1/0x140 [bluetooth]
        [<ffffffff8130811b>] kernel_connect+0xb/0x10
        [<ffffffffa00cf98a>] rfcomm_session_create+0x12a/0x1c0 [rfcomm]
        [<ffffffffa00cfbe7>] __rfcomm_dlc_open+0x1c7/0x240 [rfcomm]
        [<ffffffffa00d07c2>] rfcomm_dlc_open+0x42/0x70 [rfcomm]
        [<ffffffffa00d3b03>] rfcomm_sock_connect+0x103/0x150 [rfcomm]
        [<ffffffff8130bd7e>] sys_connect+0xae/0xc0
        [<ffffffff813368d2>] compat_sys_socketcall+0xb2/0x220
        [<ffffffff813b2089>] sysenter_dispatch+0x7/0x30

 -> #0 (sk_lock-AF_BLUETOOTH-BTPROTO_L2CAP){+.+...}:
        [<ffffffff8106b16d>] check_prev_add+0x6cd/0x6e0
        [<ffffffff8106b276>] check_prevs_add+0xf6/0x170
        [<ffffffff8106b903>] validate_chain+0x613/0x790
        [<ffffffff8106dfee>] __lock_acquire+0x4be/0xac0
        [<ffffffff8106ec2d>] lock_acquire+0x8d/0xb0
        [<ffffffff8130d91a>] lock_sock_nested+0x8a/0xa0
        [<ffffffffa002ceac>] l2cap_chan_timeout+0x3c/0xe0 [bluetooth]
        [<ffffffff81051ae4>] process_one_work+0x184/0x450
        [<ffffffff8105276e>] worker_thread+0x15e/0x340
        [<ffffffff81057bb6>] kthread+0x96/0xa0
        [<ffffffff813b1ef4>] kernel_thread_helper+0x4/0x10

 other info that might help us debug this:

  Possible unsafe locking scenario:

        CPU0                    CPU1
        ----                    ----
   lock((&(&chan->chan_timer)->work));
                                lock(sk_lock-AF_BLUETOOTH-BTPROTO_L2CAP);
                                lock((&(&chan->chan_timer)->work));
   lock(sk_lock-AF_BLUETOOTH-BTPROTO_L2CAP);

  *** DEADLOCK ***

 2 locks held by kworker/1:1/873:
  #0:  (events){.+.+.+}, at: [<ffffffff81051a86>] process_one_work+0x126/0x450
  #1:  ((&(&chan->chan_timer)->work)){+.+...}, at: [<ffffffff81051a86>] process_one_work+0x126/0x450

 stack backtrace:
 Pid: 873, comm: kworker/1:1 Not tainted 3.1.0-05270-ga978dc7-dirty #239
 Call Trace:
  [<ffffffff813a0f6e>] print_circular_bug+0xd2/0xe3
  [<ffffffff8106b16d>] check_prev_add+0x6cd/0x6e0
  [<ffffffff8106b276>] check_prevs_add+0xf6/0x170
  [<ffffffff8106b903>] validate_chain+0x613/0x790
  [<ffffffff8106dfee>] __lock_acquire+0x4be/0xac0
  [<ffffffff8130d8f6>] ? lock_sock_nested+0x66/0xa0
  [<ffffffff8106ea30>] ? lock_release_nested+0x100/0x110
  [<ffffffff8130d8f6>] ? lock_sock_nested+0x66/0xa0
  [<ffffffff8106ec2d>] lock_acquire+0x8d/0xb0
  [<ffffffffa002ceac>] ? l2cap_chan_timeout+0x3c/0xe0 [bluetooth]
  [<ffffffff8130d91a>] lock_sock_nested+0x8a/0xa0
  [<ffffffffa002ceac>] ? l2cap_chan_timeout+0x3c/0xe0 [bluetooth]
  [<ffffffff81051a86>] ? process_one_work+0x126/0x450
  [<ffffffffa002ceac>] l2cap_chan_timeout+0x3c/0xe0 [bluetooth]
  [<ffffffff81051ae4>] process_one_work+0x184/0x450
  [<ffffffff81051a86>] ? process_one_work+0x126/0x450
  [<ffffffffa002ce70>] ? l2cap_security_cfm+0x4e0/0x4e0 [bluetooth]
  [<ffffffff8105276e>] worker_thread+0x15e/0x340
  [<ffffffff81052610>] ? manage_workers+0x110/0x110
  [<ffffffff81057bb6>] kthread+0x96/0xa0
  [<ffffffff813b1ef4>] kernel_thread_helper+0x4/0x10
  [<ffffffff813af69d>] ? retint_restore_args+0xe/0xe
  [<ffffffff81057b20>] ? __init_kthread_worker+0x70/0x70
  [<ffffffff813b1ef0>] ? gs_change+0xb/0xb

Signed-off-by: Ulisses Furquim <ulisses@profusion.mobi>
Acked-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
13 years agoBluetooth: Make HCI call directly into SCO and L2CAP event functions
Ulisses Furquim [Wed, 21 Dec 2011 12:11:33 +0000 (10:11 -0200)]
Bluetooth: Make HCI call directly into SCO and L2CAP event functions

The struct hci_proto and all related register/unregister and dispatching
code was removed. HCI core code now call directly the SCO and L2CAP
event functions.

Signed-off-by: Ulisses Furquim <ulisses@profusion.mobi>
Acked-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
13 years agoBluetooth: Remove magic numbers from le scan cmd
Andrei Emeltchenko [Mon, 19 Dec 2011 14:14:18 +0000 (16:14 +0200)]
Bluetooth: Remove magic numbers from le scan cmd

Make code readable by removing magic numbers.

Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
Acked-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
13 years agoBluetooth: fix bt_accept_dequeue() to work in process context
Gustavo F. Padovan [Tue, 20 Dec 2011 19:15:56 +0000 (17:15 -0200)]
Bluetooth: fix bt_accept_dequeue() to work in process context

No local_bh_disable is needed there once we run everything in process
context. The same goes for the replacement of bh_lock_sock() by
lock_sock().

Acked-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
13 years agoBluetooth: Always compile SCO and L2CAP in Bluetooth Core
Ulisses Furquim [Wed, 21 Dec 2011 03:32:09 +0000 (01:32 -0200)]
Bluetooth: Always compile SCO and L2CAP in Bluetooth Core

The handling of SCO audio links and the L2CAP protocol are essential to
any system with Bluetooth thus are always compiled in from now on.

Signed-off-by: Ulisses Furquim <ulisses@profusion.mobi>
Acked-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
13 years agoBluetooth: Remove global mutex hci_task_lock
Ulisses Furquim [Tue, 20 Dec 2011 19:10:51 +0000 (17:10 -0200)]
Bluetooth: Remove global mutex hci_task_lock

The hci_task_lock mutex (previously a lock) was supposed to protect the
register/unregister of HCI protocols against RX/TX tasks. This will not
be needed anymore because SCO and L2CAP will always be compiled.

Moreover, with the recent move of RX/TX to workqueues per device the
global hci_task_lock was causing starvation between different HCI
devices.

Signed-off-by: Ulisses Furquim <ulisses@profusion.mobi>
Acked-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
13 years agoBluetooth: btusb: fix bInterval for high/super speed isochronous endpoints
Bing Zhao [Wed, 21 Dec 2011 02:19:00 +0000 (18:19 -0800)]
Bluetooth: btusb: fix bInterval for high/super speed isochronous endpoints

For high-speed/super-speed isochronous endpoints, the bInterval
value is used as exponent, 2^(bInterval-1). Luckily we have
usb_fill_int_urb() function that handles it correctly. So we just
call this function to fill in the RX URB.

Cc: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Bing Zhao <bzhao@marvell.com>
Acked-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
13 years agoBluetooth: Rename info_work to info_timer
Gustavo F. Padovan [Tue, 20 Dec 2011 12:57:28 +0000 (10:57 -0200)]
Bluetooth: Rename info_work to info_timer

It makes more sense this way, since info_timer is a timer using delayed
work API.

Acked-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
13 years agoBluetooth: convert security timer to delayed_work
Gustavo F. Padovan [Tue, 20 Dec 2011 12:57:27 +0000 (10:57 -0200)]
Bluetooth: convert security timer to delayed_work

This one also needs to run in process context

Acked-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
13 years agoBluetooth: Move l2cap_{set,clear}_timer to l2cap.h
Gustavo F. Padovan [Tue, 20 Dec 2011 12:57:26 +0000 (10:57 -0200)]
Bluetooth: Move l2cap_{set,clear}_timer to l2cap.h

It is the only place where it is used.

Acked-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
13 years agoBluetooth: Clean up magic pointers
Andrei Emeltchenko [Mon, 19 Dec 2011 14:31:30 +0000 (16:31 +0200)]
Bluetooth: Clean up magic pointers

Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
Acked-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
13 years agoBluetooth: Check for flow control mode
Andrei Emeltchenko [Mon, 19 Dec 2011 14:31:29 +0000 (16:31 +0200)]
Bluetooth: Check for flow control mode

Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
Acked-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
13 years agoBluetooth: Initialize default flow control mode
Andrei Emeltchenko [Mon, 19 Dec 2011 14:31:28 +0000 (16:31 +0200)]
Bluetooth: Initialize default flow control mode

Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
Acked-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
13 years agoBluetooth: Split ctrl init to BREDR and AMP parts
Andrei Emeltchenko [Mon, 19 Dec 2011 14:31:27 +0000 (16:31 +0200)]
Bluetooth: Split ctrl init to BREDR and AMP parts

Current controller initialization is moved tp bredr_init and new
function added amp_init to handle later AMP init sequence. Current
AMP init sequence include Reset and Read Local Version.

Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
Acked-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
13 years agomac80211: Fixing sparse warning at sta_info.c
Yogesh Ashok Powar [Fri, 16 Dec 2011 06:17:15 +0000 (11:47 +0530)]
mac80211: Fixing sparse warning at sta_info.c

The commit 42624d4913a00219a8fdbb4bafd634d1d843be85
created following sparse warning
>net/mac80211/sta_info.c:965:24: warning: incorrect type in assignment (different address spaces)
>net/mac80211/sta_info.c:965:24:    expected struct tid_ampdu_tx *tid_tx
>net/mac80211/sta_info.c:965:24:    got struct tid_ampdu_tx [noderef] <asn:4>*<noident>

Making use of rcu_dereference_protected to fix the problem.

V2:
 - Replacing rcu_dereference with rcu_dereference_protected
   as suggested by Johannes.
 - Adding mutex_lock/unlock to satisfy the condition at
   rcu_dereference_protected

Cc: Nishant Sarmukadam <nishants@marvell.com>
Reported-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: Yogesh Ashok Powar <yogeshp@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agoath9k: fix tx locking issues
Felix Fietkau [Mon, 19 Dec 2011 15:45:54 +0000 (16:45 +0100)]
ath9k: fix tx locking issues

The commit "ath9k: simplify tx locking" introduced a soft lockup triggered
by mac80211 sending a BAR frame triggered by a driver call to
ieee80211_tx_send_bar or ieee80211_tx_status.
Fix these issues by queueing processed tx status skbs and submitting them
to mac80211 outside of the lock.

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: Mohammed Shafi Shajakhan <mohammed@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agoath9k_hw: make bluetooth coexistence support optional at compile time
Felix Fietkau [Sat, 17 Dec 2011 15:47:56 +0000 (16:47 +0100)]
ath9k_hw: make bluetooth coexistence support optional at compile time

Many systems (e.g. embedded systems) do not have wifi modules connected to
bluetooth modules, so bluetooth coexistence is irrelevant there. With the
addition of MCI support, ath9k picked up quite a bit of extra code that
can be compiled out this way.

This patch redefines ATH9K_HW_CAP_MCI and adds an inline wrapper for
querying the bluetooth coexistence scheme, allowing the compiler to
eliminate code that uses it, with only very little use of #ifdef.

On MIPS this reduces the total size for the modules by about 20k.

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agob43: N-PHY: reorder functions: random cleanups
Rafał Miłecki [Sat, 17 Dec 2011 12:57:27 +0000 (13:57 +0100)]
b43: N-PHY: reorder functions: random cleanups

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Acked-by: Larry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agob43: N-PHY: reorder functions: move rest of workarounds
Rafał Miłecki [Sat, 17 Dec 2011 12:57:26 +0000 (13:57 +0100)]
b43: N-PHY: reorder functions: move rest of workarounds

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Acked-by: Larry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agob43: N-PHY: reorder functions: move RSSI calibration
Rafał Miłecki [Sat, 17 Dec 2011 12:57:25 +0000 (13:57 +0100)]
b43: N-PHY: reorder functions: move RSSI calibration

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Acked-by: Larry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agob43: N-PHY: split gain control workarounds
Rafał Miłecki [Sat, 17 Dec 2011 12:57:24 +0000 (13:57 +0100)]
b43: N-PHY: split gain control workarounds

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Acked-by: Larry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agob43: N-PHY: reorder functions: collect RSSI selects
Rafał Miłecki [Sat, 17 Dec 2011 12:57:23 +0000 (13:57 +0100)]
b43: N-PHY: reorder functions: collect RSSI selects

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Acked-by: Larry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agob43: N-PHY: reorder functions: collect samples ones
Rafał Miłecki [Sat, 17 Dec 2011 12:57:22 +0000 (13:57 +0100)]
b43: N-PHY: reorder functions: collect samples ones

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Acked-by: Larry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agob43: N-PHY: reorder functions: collect radio ones
Rafał Miłecki [Sat, 17 Dec 2011 12:57:21 +0000 (13:57 +0100)]
b43: N-PHY: reorder functions: collect radio ones

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Acked-by: Larry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agob43: N-PHY: reorder functions: put basic ones at beginning
Rafał Miłecki [Sat, 17 Dec 2011 12:57:20 +0000 (13:57 +0100)]
b43: N-PHY: reorder functions: put basic ones at beginning

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Acked-by: Larry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agortlwifi: Fix locking problem introduces with commit 6539306b
Larry Finger [Sat, 17 Dec 2011 03:17:16 +0000 (21:17 -0600)]
rtlwifi: Fix locking problem introduces with commit 6539306b

When I tested commit 6539306, I did not notice that loading an out-of-tree
module turns off lockdep testing in kernel 3.2. For that reason, I missed
the kernel WARNING shown below:

The solution fixes the warning by partially reverting commit 6539306.

[   84.168146] ------------[ cut here ]------------
[   84.168155] WARNING: at kernel/mutex.c:198 mutex_lock_nested+0x309/0x310()
[   84.168158] Hardware name: HP Pavilion dv2700 Notebook PC
[   84.168161] Modules linked in: nfs lockd auth_rpcgss nfs_acl sunrpc af_packet cpufreq_conservative cpufreq_userspace cpufreq_powersave powernow_k8 mperf e
xt3 jbd ide_cd_mod cdrom snd_hda_codec_conexant arc4 rtl8192ce ide_pci_generic rtl8192c_common rtlwifi snd_hda_intel mac80211 snd_hda_codec snd_pcm snd_timer
 amd74xx ide_core cfg80211 k8temp snd joydev soundcore hwmon battery forcedeth i2c_nforce2 sg rfkill ac serio_raw snd_page_alloc button video i2c_core ipv6 a
utofs4 ext4 mbcache jbd2 crc16 sd_mod ahci ohci_hcd libahci libata scsi_mod ehci_hcd usbcore usb_common fan processor thermal
[   84.168231] Pid: 1218, comm: kworker/u:2 Not tainted 3.2.0-rc5-wl+ #155
[   84.168234] Call Trace:
[   84.168240]  [<ffffffff81048aaa>] warn_slowpath_common+0x7a/0xb0
[   84.168245]  [<ffffffff81048af5>] warn_slowpath_null+0x15/0x20
[   84.168249]  [<ffffffff813811f9>] mutex_lock_nested+0x309/0x310
[   84.168269]  [<ffffffffa00793f9>] ? rtl_ips_nic_on+0x49/0xb0 [rtlwifi]
[   84.168277]  [<ffffffffa00793f9>] rtl_ips_nic_on+0x49/0xb0 [rtlwifi]
[   84.168284]  [<ffffffffa007ab85>] rtl_pci_tx+0x1b5/0x560 [rtlwifi]
[   84.168291]  [<ffffffffa007635a>] rtl_op_tx+0x9a/0xa0 [rtlwifi]
[   84.168359]  [<ffffffffa043cf51>] __ieee80211_tx+0x181/0x2b0 [mac80211]
[   84.168375]  [<ffffffffa043ef06>] ieee80211_tx+0xf6/0x120 [mac80211]
[   84.168391]  [<ffffffffa043ee49>] ? ieee80211_tx+0x39/0x120 [mac80211]
[   84.168408]  [<ffffffffa043f80b>] ieee80211_xmit+0xdb/0x100 [mac80211]
[   84.168425]  [<ffffffffa043f730>] ? ieee80211_skb_resize.isra.26+0xb0/0xb0 [mac80211]
[   84.168441]  [<ffffffffa0440b2a>] ieee80211_tx_skb_tid+0x5a/0x70 [mac80211]
[   84.168458]  [<ffffffffa0443da2>] ieee80211_send_auth+0x152/0x1b0 [mac80211]
[   84.168474]  [<ffffffffa042e169>] ieee80211_work_work+0x1049/0x1860 [mac80211]
[   84.168489]  [<ffffffffa042d120>] ? free_work+0x20/0x20 [mac80211]
[   84.168504]  [<ffffffffa042d120>] ? free_work+0x20/0x20 [mac80211]
[   84.168510]  [<ffffffff81065ffc>] process_one_work+0x17c/0x530
[   84.168514]  [<ffffffff81065f92>] ? process_one_work+0x112/0x530
[   84.168519]  [<ffffffff81066994>] worker_thread+0x164/0x350
[   84.168524]  [<ffffffff8108420d>] ? trace_hardirqs_on+0xd/0x10
[   84.168528]  [<ffffffff81066830>] ? manage_workers.isra.28+0x220/0x220
[   84.168533]  [<ffffffff8106bc17>] kthread+0x87/0x90
[   84.168539]  [<ffffffff813854b4>] kernel_thread_helper+0x4/0x10
[   84.168543]  [<ffffffff81382bdd>] ? retint_restore_args+0xe/0xe
[   84.168547]  [<ffffffff8106bb90>] ? __init_kthread_worker+0x70/0x70
[   84.168552]  [<ffffffff813854b0>] ? gs_change+0xb/0xb
[   84.168554] ---[ end trace f25a4fdc768c028f ]---

Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Cc: Stanislaw Gruska <sgruszka@redhat.com>
Cc: Chaoming Li <chaoming_li@realsil.com.cn>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agobrcm80211: fmac: add Kconfig option for SDIO bus support
Franky Lin [Sat, 17 Dec 2011 02:37:20 +0000 (18:37 -0800)]
brcm80211: fmac: add Kconfig option for SDIO bus support

This patch adds a Kconfig option for SDIO bus support and abstracts
a build subset correspondingly. It's the final patch of fullmac bus
interface refactoring.

Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
Reviewed-by: Arend van Spriel <arend@broadcom.com>
Reviewed-by: Alwin Beukers <alwin@broadcom.com>
Signed-off-by: Franky Lin <frankyl@broadcom.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agobrcm80211: fmac: exclude unnecessary header files
Franky Lin [Sat, 17 Dec 2011 02:37:19 +0000 (18:37 -0800)]
brcm80211: fmac: exclude unnecessary header files

This patch removes some headers files include lines from sdio layer
code. This is part of the fullmac bus interface refactoring.

Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
Reviewed-by: Arend van Spriel <arend@broadcom.com>
Reviewed-by: Alwin Beukers <alwin@broadcom.com>
Signed-off-by: Franky Lin <frankyl@broadcom.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agobrcm80211: fmac: move idle macros to dhd_sdio.c
Franky Lin [Sat, 17 Dec 2011 02:37:18 +0000 (18:37 -0800)]
brcm80211: fmac: move idle macros to dhd_sdio.c

The idle macros are only used by dhd_sdio.c. It's more appropriate
to place them in dhd_sdio.c instead of dhd.h.

Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
Reviewed-by: Arend van Spriel <arend@broadcom.com>
Reviewed-by: Alwin Beukers <alwin@broadcom.com>
Signed-off-by: Franky Lin <frankyl@broadcom.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agobrcm80211: fmac: move debug level macros to dhd_dbg.h
Franky Lin [Sat, 17 Dec 2011 02:37:17 +0000 (18:37 -0800)]
brcm80211: fmac: move debug level macros to dhd_dbg.h

Debug message level macros are used for debug purpose. It would be
more appropriate to place them at dhd_dbg.h.

Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
Reviewed-by: Arend van Spriel <arend@broadcom.com>
Reviewed-by: Alwin Beukers <alwin@broadcom.com>
Signed-off-by: Franky Lin <frankyl@broadcom.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agobrcm80211: fmac: abstract ctrl frames interface function pointers
Franky Lin [Sat, 17 Dec 2011 02:37:16 +0000 (18:37 -0800)]
brcm80211: fmac: abstract ctrl frames interface function pointers

Abstract bus layer brcmf_bus_txctl/brcmf_bus_rxctl function
pointers for common layer. This patch is part of the fullmac bus
interface refactoring.

Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
Reviewed-by: Arend van Spriel <arend@broadcom.com>
Reviewed-by: Alwin Beukers <alwin@broadcom.com>
Signed-off-by: Franky Lin <frankyl@broadcom.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agobrcm80211: fmac: abstract bus_txdata interface function pointer
Franky Lin [Sat, 17 Dec 2011 02:37:15 +0000 (18:37 -0800)]
brcm80211: fmac: abstract bus_txdata interface function pointer

Abstract bus layer brcmf_bus_txdata function pointer for common
layer. This patch is part of the fullmac bus interface refactoring.

Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
Reviewed-by: Arend van Spriel <arend@broadcom.com>
Reviewed-by: Alwin Beukers <alwin@broadcom.com>
Signed-off-by: Franky Lin <frankyl@broadcom.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agobrcm80211: fmac: abstract bus_init interface function pointer
Franky Lin [Sat, 17 Dec 2011 02:37:14 +0000 (18:37 -0800)]
brcm80211: fmac: abstract bus_init interface function pointer

Abstract bus layer brcmf_bus_init function pointer for common
layer. This patch is part of the fullmac bus interface refactoring.

Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
Reviewed-by: Arend van Spriel <arend@broadcom.com>
Reviewed-by: Alwin Beukers <alwin@broadcom.com>
Signed-off-by: Franky Lin <frankyl@broadcom.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agobrcm80211: fmac: move common layer bus interface context to dhd_bus.h
Franky Lin [Sat, 17 Dec 2011 02:37:13 +0000 (18:37 -0800)]
brcm80211: fmac: move common layer bus interface context to dhd_bus.h

dhd_bus.h is the header file for bus interface. Move functions
declarations and brcmf_bus structure to there. This is part of
the fullmac bus interface refactoring.

Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
Reviewed-by: Arend van Spriel <arend@broadcom.com>
Reviewed-by: Alwin Beukers <alwin@broadcom.com>
Signed-off-by: Franky Lin <frankyl@broadcom.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agobrcm80211: fmac: abstract bus_stop interface function pointer
Franky Lin [Sat, 17 Dec 2011 02:37:12 +0000 (18:37 -0800)]
brcm80211: fmac: abstract bus_stop interface function pointer

Common layer should use interface function pointer stored in
brcmf_bus to invoke corresponding interface function in bus layer.
This patch is part of the fullmac bus interface refactoring.

Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
Reviewed-by: Arend van Spriel <arend@broadcom.com>
Reviewed-by: Alwin Beukers <alwin@broadcom.com>
Signed-off-by: Franky Lin <frankyl@broadcom.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agobrcm80211: fmac: move sdio related macros to sdio_host.h
Franky Lin [Sat, 17 Dec 2011 02:37:11 +0000 (18:37 -0800)]
brcm80211: fmac: move sdio related macros to sdio_host.h

dhd_bus.h will be used as the shared header file for common layer
and bus layer. It should not contain any sdio specific macros.
This patch moves them to sdio_host.h as part of the fullmac bus
interface refactoring.

Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
Reviewed-by: Arend van Spriel <arend@broadcom.com>
Reviewed-by: Alwin Beukers <alwin@broadcom.com>
Signed-off-by: Franky Lin <frankyl@broadcom.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agobrcm80211: fmac: stop referencing brcmf_sdio in common layer
Franky Lin [Sat, 17 Dec 2011 02:37:10 +0000 (18:37 -0800)]
brcm80211: fmac: stop referencing brcmf_sdio in common layer

brcmf_sdio is the data structure for sdio bus layer. Stop
referencing brcmf_sdio from common layer. This patch is part of
the fullmac bus interface refactoring.

Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
Reviewed-by: Arend van Spriel <arend@broadcom.com>
Reviewed-by: Alwin Beukers <alwin@broadcom.com>
Signed-off-by: Franky Lin <frankyl@broadcom.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agobrcm80211: fmac: stop referencing brcmf_pub in bus layer
Franky Lin [Sat, 17 Dec 2011 02:37:09 +0000 (18:37 -0800)]
brcm80211: fmac: stop referencing brcmf_pub in bus layer

brcmf_pub is the data structure for common layer. Since brcmf_bus
should be the only structure shared by common layer and bus layer,
stop referencing brcmf_pub from bus layer. This patch is part of
the fullmac bus interface refactoring.

Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
Reviewed-by: Arend van Spriel <arend@broadcom.com>
Reviewed-by: Alwin Beukers <alwin@broadcom.com>
Signed-off-by: Franky Lin <frankyl@broadcom.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agobrcm80211: fmac: move tx flow ctrl flag to bus layer
Franky Lin [Sat, 17 Dec 2011 02:37:08 +0000 (18:37 -0800)]
brcm80211: fmac: move tx flow ctrl flag to bus layer

txoff is the flow control flag for transmit used in sdio layer.
Move it to bus layer data structure brcmf_sdio. Also flag
management code is moved out of brcmf_txflowcontrol(). This is
part of the fullmac bus interface refactoring.

Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
Reviewed-by: Arend van Spriel <arend@broadcom.com>
Reviewed-by: Alwin Beukers <alwin@broadcom.com>
Signed-off-by: Franky Lin <frankyl@broadcom.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agobrcm80211: fmac: move packet realloc stats to struct brcmf_bus
Franky Lin [Sat, 17 Dec 2011 02:37:07 +0000 (18:37 -0800)]
brcm80211: fmac: move packet realloc stats to struct brcmf_bus

tx_realloc is used by both common layer and bus layer. This patch
moves it to interface structure brcmf_bus as part of the fullmac
bus interface refactoring.

Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
Reviewed-by: Arend van Spriel <arend@broadcom.com>
Reviewed-by: Alwin Beukers <alwin@broadcom.com>
Signed-off-by: Franky Lin <frankyl@broadcom.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agobrcm80211: fmac: move dongle statistics to struct brcmf_bus
Franky Lin [Sat, 17 Dec 2011 02:37:06 +0000 (18:37 -0800)]
brcm80211: fmac: move dongle statistics to struct brcmf_bus

Dongle statistics are shared data between common layer and bus
layer. This patch places them in bus interface structure brcmf_bus
as part of the fullmac bus interface refactoring.

Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
Reviewed-by: Arend van Spriel <arend@broadcom.com>
Reviewed-by: Alwin Beukers <alwin@broadcom.com>
Signed-off-by: Franky Lin <frankyl@broadcom.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agobrcm80211: fmac: remove duplicate statistics from driver data structure
Franky Lin [Sat, 17 Dec 2011 02:37:05 +0000 (18:37 -0800)]
brcm80211: fmac: remove duplicate statistics from driver data structure

Some dongle statistics are stored in two places and synced when net
device status inquired. There is no need to do it this way any more.
Direct all usage to dongle stats structure in order to increase
readability.

Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
Reviewed-by: Arend van Spriel <arend@broadcom.com>
Reviewed-by: Alwin Beukers <alwin@broadcom.com>
Signed-off-by: Franky Lin <frankyl@broadcom.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agobrcm80211: fmac: move driver up status to struct brcmf_bus
Franky Lin [Sat, 17 Dec 2011 02:37:04 +0000 (18:37 -0800)]
brcm80211: fmac: move driver up status to struct brcmf_bus

Driver up/down status to network interface need to be shared by
common layer and bus layer. Move it to bus interface structure
brcmf_bus as part of the fullmac bus interface refactoring.

Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
Reviewed-by: Arend van Spriel <arend@broadcom.com>
Reviewed-by: Alwin Beukers <alwin@broadcom.com>
Signed-off-by: Franky Lin <frankyl@broadcom.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agobrcm80211: fmac: move maxctl to struct brcmf_bus
Franky Lin [Sat, 17 Dec 2011 02:37:03 +0000 (18:37 -0800)]
brcm80211: fmac: move maxctl to struct brcmf_bus

maxctl is the max size of rxctl request from protocol layer to bus
layer. Move it to bus interface structure brcmf_bus. This is part
of the fullmac bus interface refactoring.

Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
Reviewed-by: Arend van Spriel <arend@broadcom.com>
Reviewed-by: Alwin Beukers <alwin@broadcom.com>
Signed-off-by: Franky Lin <frankyl@broadcom.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agobrcm80211: fmac: move sdio used statistics to struct brcmf_sdio
Franky Lin [Sat, 17 Dec 2011 02:37:02 +0000 (18:37 -0800)]
brcm80211: fmac: move sdio used statistics to struct brcmf_sdio

Some statistics only used by sdio modules. Move them to sdio layer
private structure brcmf_sdio. This is part of the fullmac bus
interface refactoring.

Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
Reviewed-by: Arend van Spriel <arend@broadcom.com>
Reviewed-by: Alwin Beukers <alwin@broadcom.com>
Signed-off-by: Franky Lin <frankyl@broadcom.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agobrcm80211: fmac: change function proto_hdrpull parameter
Franky Lin [Sat, 17 Dec 2011 02:37:01 +0000 (18:37 -0800)]
brcm80211: fmac: change function proto_hdrpull parameter

Change parameter to device pointer for bus layer interface function
brcmf_proto_hdrpull This is part of the fullmac bus interface
refactoring.

Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
Reviewed-by: Arend van Spriel <arend@broadcom.com>
Reviewed-by: Alwin Beukers <alwin@broadcom.com>
Signed-off-by: Franky Lin <frankyl@broadcom.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agobrcm80211: fmac: change function rx_frame parameter
Franky Lin [Sat, 17 Dec 2011 02:37:00 +0000 (18:37 -0800)]
brcm80211: fmac: change function rx_frame parameter

Change parameter to device pointer for bus layer interface function
brcmf_rx_frame. This is part of the fullmac bus interface
refactoring.

Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
Reviewed-by: Arend van Spriel <arend@broadcom.com>
Reviewed-by: Alwin Beukers <alwin@broadcom.com>
Signed-off-by: Franky Lin <frankyl@broadcom.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agobrcm80211: fmac: change function brcmf_c_prec_enq parameter
Franky Lin [Sat, 17 Dec 2011 02:36:59 +0000 (18:36 -0800)]
brcm80211: fmac: change function brcmf_c_prec_enq parameter

Change parameter to device pointer for bus layer interface function
brcmf_c_prec_enq. This is part of the fullmac bus interface
refactoring.

Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
Reviewed-by: Arend van Spriel <arend@broadcom.com>
Reviewed-by: Alwin Beukers <alwin@broadcom.com>
Signed-off-by: Franky Lin <frankyl@broadcom.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agobrcm80211: fmac: change function txcomplete parameter
Franky Lin [Sat, 17 Dec 2011 02:36:58 +0000 (18:36 -0800)]
brcm80211: fmac: change function txcomplete parameter

Change parameter to device pointer for bus layer interface function
brcmf_txcomplete. This is part of the fullmac bus interface
refactoring.

Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
Reviewed-by: Arend van Spriel <arend@broadcom.com>
Reviewed-by: Alwin Beukers <alwin@broadcom.com>
Signed-off-by: Franky Lin <frankyl@broadcom.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agobrcm80211: fmac: change function txflowcontrol parameter
Franky Lin [Sat, 17 Dec 2011 02:36:57 +0000 (18:36 -0800)]
brcm80211: fmac: change function txflowcontrol parameter

Change parameter to device pointer for bus layer interface function
brcmf_txflowcontrol. This is part of the fullmac bus interface
refactoring.

Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
Reviewed-by: Arend van Spriel <arend@broadcom.com>
Reviewed-by: Alwin Beukers <alwin@broadcom.com>
Signed-off-by: Franky Lin <frankyl@broadcom.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agobrcm80211: fmac: change function brcmf_detach parameter
Franky Lin [Sat, 17 Dec 2011 02:36:56 +0000 (18:36 -0800)]
brcm80211: fmac: change function brcmf_detach parameter

Change parameter to device pointer for bus layer interface function
brcmf_detach. This is part of the fullmac bus interface refactoring.

Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
Reviewed-by: Arend van Spriel <arend@broadcom.com>
Reviewed-by: Alwin Beukers <alwin@broadcom.com>
Signed-off-by: Franky Lin <frankyl@broadcom.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agobrcm80211: fmac: change function bus_start parameter
Franky Lin [Sat, 17 Dec 2011 02:36:55 +0000 (18:36 -0800)]
brcm80211: fmac: change function bus_start parameter

Change parameter to device pointer for bus layer interface function
brcmf_bus_start. This is part of the fullmac bus interface
refactoring.

Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
Reviewed-by: Arend van Spriel <arend@broadcom.com>
Reviewed-by: Alwin Beukers <alwin@broadcom.com>
Signed-off-by: Franky Lin <frankyl@broadcom.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agobrcm80211: fmac: change function add_if parameter
Franky Lin [Sat, 17 Dec 2011 02:36:54 +0000 (18:36 -0800)]
brcm80211: fmac: change function add_if parameter

Change parameter to device pointer for bus layer interface function
brcmf_add_if. This is part of the fullmac bus interface
refactoring.

Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
Reviewed-by: Arend van Spriel <arend@broadcom.com>
Reviewed-by: Alwin Beukers <alwin@broadcom.com>
Signed-off-by: Franky Lin <frankyl@broadcom.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agobrcm80211: fmac: register a dummy irq handler for SDIO function 2
Franky Lin [Sat, 17 Dec 2011 02:36:53 +0000 (18:36 -0800)]
brcm80211: fmac: register a dummy irq handler for SDIO function 2

When there is data available in dongle for driver to fetch, an
interrupt will be triggered and both SDIO function 1 and 2 will be
flagged by default in bcm4329. These two interrupt flags are
identical and only need to be handled once. Since there is no way
to turn off one flag from the dongle side, a dummy handler for
function 2 interrupt is placed.

Reported-by: Denis 'GNUtoo' Carikli <GNUtoo@no-log.org>
Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
Reviewed-by: Arend van Spriel <arend@broadcom.com>
Reviewed-by: Alwin Beukers <alwin@broadcom.com>
Signed-off-by: Franky Lin <frankyl@broadcom.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agobrcm80211: fmac: remove oneline proto block functions
Franky Lin [Sat, 17 Dec 2011 02:36:52 +0000 (18:36 -0800)]
brcm80211: fmac: remove oneline proto block functions

brcmf_os_proto_block and brcmf_os_proto_unblock are oneline
functions handling proto_block mutex. Place the mutex interface
call inline to increase readability.

Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
Reviewed-by: Arend van Spriel <arend@broadcom.com>
Reviewed-by: Alwin Beukers <alwin@broadcom.com>
Signed-off-by: Franky Lin <frankyl@broadcom.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agobrcm80211: fmac: unify common layer driver data structure
Franky Lin [Sat, 17 Dec 2011 02:36:51 +0000 (18:36 -0800)]
brcm80211: fmac: unify common layer driver data structure

No need to split data structure for common layer into brcmf_pub and
brcmf_info. Absorb brcmf_info into brcmf_pub to increase code
readability.

Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
Reviewed-by: Arend van Spriel <arend@broadcom.com>
Reviewed-by: Alwin Beukers <alwin@broadcom.com>
Signed-off-by: Franky Lin <frankyl@broadcom.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agoNFC: use kfree_skb() for sk_buffs
Dan Carpenter [Fri, 16 Dec 2011 20:26:00 +0000 (23:26 +0300)]
NFC: use kfree_skb() for sk_buffs

This is a struct sk_buff pointer and it should be freed with kfree_skb()
instead of kfree().

Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Acked-by: Samuel Ortiz <sameo@linux.intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agoNFC: double unlock in nfc_llcp_recv_connect()
Dan Carpenter [Fri, 16 Dec 2011 20:25:29 +0000 (23:25 +0300)]
NFC: double unlock in nfc_llcp_recv_connect()

We unlock inside the if block on the other side of this if else
statement.  It could result in calling mutex_unlock() twice.

Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Acked-by: Samuel Ortiz <sameo@linux.intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agob43: avoid packet losses in the dma worker code.
francesco.gringoli@ing.unibs.it [Fri, 16 Dec 2011 17:34:56 +0000 (18:34 +0100)]
b43: avoid packet losses in the dma worker code.

Following Rafal request, we verified that on "modern" CPUs using one
or more workers is equivalent. Here is patch V3 that addresses the
packet loss bug in the dma engine using only one worker.

-------

This patch addresses a bug in the dma worker code that keeps draining
packets even when the hardware queues are full. In such cases packets
can not be passed down to the device and are erroneusly dropped by the
code.

This problem was already discussed here

http://www.mail-archive.com/b43-dev@lists.infradead.org/msg01413.html

and acknowledged by Michael.

Number of hardware queues is now defined in b43.h (B43_QOS_QUEUE_NUM).

Acknowledgements to Riccardo Paolillo <riccardo.paolillo@gmail.com> and
Michele Orru <michele.orru@hotmail.it>

Signed-off-by: Francesco Gringoli <francesco.gringoli@ing.unibs.it>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agomac80211: handle SMPS action frames
Johannes Berg [Fri, 16 Dec 2011 14:28:57 +0000 (15:28 +0100)]
mac80211: handle SMPS action frames

When a peer changes SMPS state we should update
rate control so it doesn't have to detect it by
itself. It can't detect "dynamic" mode anyway
since that just requires rts-cts handshaking.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agoNFC: Fix LLCP related build failure
Samuel Ortiz [Fri, 16 Dec 2011 14:03:36 +0000 (15:03 +0100)]
NFC: Fix LLCP related build failure

llcp_mac routines should be static and inlined or build will fail with NFC
selected without LLCP.

This patch fixes:

LD [M]  net/nfc/nfc.o
net/nfc/netlink.o: In function `nfc_llcp_mac_is_down':
netlink.c:(.text+0x0): multiple definition of `nfc_llcp_mac_is_down'
net/nfc/core.o:(.text+0x0): first defined here
net/nfc/netlink.o: In function `nfc_llcp_mac_is_up':
netlink.c:(.text+0x10): multiple definition of `nfc_llcp_mac_is_up'
net/nfc/core.o:(.text+0x10): first defined here
net/nfc/af_nfc.o: In function `nfc_llcp_mac_is_down':
(.text+0x0): multiple definition of `nfc_llcp_mac_is_down'
net/nfc/core.o:(.text+0x0): first defined here
net/nfc/af_nfc.o: In function `nfc_llcp_mac_is_up':
(.text+0x10): multiple definition of `nfc_llcp_mac_is_up'
net/nfc/core.o:(.text+0x10): first defined here
net/nfc/rawsock.o: In function `nfc_llcp_mac_is_down':
rawsock.c:(.text+0x0): multiple definition of `nfc_llcp_mac_is_down'
net/nfc/core.o:(.text+0x0): first defined here
net/nfc/rawsock.o: In function `nfc_llcp_mac_is_up':
rawsock.c:(.text+0x10): multiple definition of `nfc_llcp_mac_is_up'
net/nfc/core.o:(.text+0x10): first defined here

Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agomwifiex: cleanup work in scan.c
Amitkumar Karwar [Fri, 16 Dec 2011 05:00:37 +0000 (21:00 -0800)]
mwifiex: cleanup work in scan.c

Scan type derived from IEEE80211_CHAN_PASSIVE_SCAN bit is a boolean
flag representing passive scanning. We should not again compare it
with driver specific macro MWIFIEX_SCAN_TYPE_PASSIVE to determine
passive or active scan. We can also avoid the use of local variable
by using the flag directly.

Signed-off-by: Amitkumar Karwar <akarwar@marvell.com>
Signed-off-by: Bing Zhao <bzhao@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agoath: Convert ath_dbg(bar, ATH_DBG_<FOO>, to ath_dbg(bar, FOO
Joe Perches [Thu, 15 Dec 2011 22:55:53 +0000 (14:55 -0800)]
ath: Convert ath_dbg(bar, ATH_DBG_<FOO>, to ath_dbg(bar, FOO

Add ATH_DBG_ to macros to shorten the uses and
reduce the line count.

Coalesce ath_dbg formats.
Add missing spaces to coalesced formats.
Add missing newline terminations to ath_dbg formats.
Align ath_dbg arguments where appropriate.
Standardize ath_dbg formats without periods.

Signed-off-by: Joe Perches <joe@perches.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agocfg80211: Return beacon loss count in station
Paul Stewart [Fri, 9 Dec 2011 19:01:49 +0000 (11:01 -0800)]
cfg80211: Return beacon loss count in station

If station info contains a beacon loss count, return
it to userspace.

Signed-off-by: Paul Stewart <pstew@chromium.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agomac80211: split addba retries in time
Nikolay Martynov [Sun, 18 Dec 2011 00:39:35 +0000 (19:39 -0500)]
mac80211: split addba retries in time

  Currently code allows three (HT_AGG_MAX_RETRIES) unanswered addba
requests. When this limit is reached aggregation is turned off for
given TID permanently. This doesn't seem right: three requests is
not that much, some 'blackout' can happen, but effect of it affects
whole connection indefinitely.
  This patch increases number of retries to 15. Also, when there have
been 3 or more retries it splits further retries apart by 15 seconds
instead of sending them in very short period of time.

Signed-off-by: Nikolay Martynov <mar.kolya@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
13 years agoMerge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/padovan/blueto...
John W. Linville [Mon, 19 Dec 2011 19:28:22 +0000 (14:28 -0500)]
Merge branch 'master' of git://git./linux/kernel/git/padovan/bluetooth-next

13 years agoMerge branch 'for-linville' of git://github.com/kvalo/ath6kl
John W. Linville [Mon, 19 Dec 2011 19:25:17 +0000 (14:25 -0500)]
Merge branch 'for-linville' of git://github.com/kvalo/ath6kl

13 years agoMerge branch 'wireless-next' of git://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi...
John W. Linville [Mon, 19 Dec 2011 19:24:13 +0000 (14:24 -0500)]
Merge branch 'wireless-next' of git://git./linux/kernel/git/iwlwifi/iwlwifi

13 years agoMerge git://git.kernel.org/pub/scm/linux/kernel/git/padovan/bluetooth
Gustavo F. Padovan [Mon, 19 Dec 2011 13:37:53 +0000 (11:37 -0200)]
Merge git://git./linux/kernel/git/padovan/bluetooth

Conflicts:
net/bluetooth/l2cap_core.c

13 years agoBluetooth: Add missing mgmt_confirm_name command definition
Johan Hedberg [Mon, 19 Dec 2011 12:29:08 +0000 (14:29 +0200)]
Bluetooth: Add missing mgmt_confirm_name command definition

This patch adds the necessary structs for the Confirm Name command. This
ensures that the protocol definitions are up to date with the latest
mgmt specification. The actual implementation of the command will follow
in a later patch-set.

Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
13 years agoBluetooth: Fix mgmt_(block,unblock)_device opcodes
Johan Hedberg [Mon, 19 Dec 2011 12:29:07 +0000 (14:29 +0200)]
Bluetooth: Fix mgmt_(block,unblock)_device opcodes

This patch fixes the opcodes of the Block/Unblock device commands to
match with what user-space expects and to confirm with the latest mgmt
specification. The reason the values were wrong was a missing Confirm
Name command definition (which will be added by a subsequent patch).

Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
13 years agoBluetooth: Add missing confirm_name field to mgmt_ev_device_found
Johan Hedberg [Mon, 19 Dec 2011 12:29:06 +0000 (14:29 +0200)]
Bluetooth: Add missing confirm_name field to mgmt_ev_device_found

This patch adds a missing confirm_name field to mgmt_ev_device_found.
Support for setting the correct value for this field is not implemented
yet, but having it part of the struct definition ensures that user-space
gets correct sized device_found events and is thereby able to do at
least rudimentary parsing of them.

Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
13 years agoRevert "Bluetooth: Revert: Fix L2CAP connection establishment"
Gustavo F. Padovan [Mon, 19 Dec 2011 00:33:30 +0000 (22:33 -0200)]
Revert "Bluetooth: Revert: Fix L2CAP connection establishment"

This reverts commit 4dff523a913197e3314c7b0d08734ab037709093.

It was reported that this patch cause issues when trying to connect to
legacy devices so reverting it.

Reported-by: David Fries <david@fries.net>
Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
13 years agoBluetooth: Clear RFCOMM session timer when disconnecting last channel
Mat Martineau [Wed, 7 Dec 2011 00:23:26 +0000 (16:23 -0800)]
Bluetooth: Clear RFCOMM session timer when disconnecting last channel

When the last RFCOMM data channel is closed, a timer is normally set
up to disconnect the control channel at a later time.  If the control
channel disconnect command is sent with the timer pending, the timer
needs to be cancelled.

If the timer is not cancelled in this situation, the reference
counting logic for the RFCOMM session does not work correctly when the
remote device closes the L2CAP connection.  The session is freed at
the wrong time, leading to a kernel panic.

Signed-off-by: Mat Martineau <mathewm@codeaurora.org>
Acked-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
13 years agoBluetooth: Prevent uninitialized data access in L2CAP configuration
Mat Martineau [Fri, 9 Dec 2011 01:23:21 +0000 (17:23 -0800)]
Bluetooth: Prevent uninitialized data access in L2CAP configuration

When configuring an ERTM or streaming mode connection, remote devices
are expected to send an RFC option in a successful config response.  A
misbehaving remote device might not send an RFC option, and the L2CAP
code should not access uninitialized data in this case.

Signed-off-by: Mat Martineau <mathewm@codeaurora.org>
Acked-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
13 years agoBluetooth: Incoming ACL packets do not force active mode
Mat Martineau [Tue, 13 Dec 2011 23:06:02 +0000 (15:06 -0800)]
Bluetooth: Incoming ACL packets do not force active mode

Incoming sk_buffs always have bt_cb(skb)->force_active set to 0, so
it's misleading to use that value from the control block when calling
hci_conn_enter_active_mode() for incoming data. The destination socket
is not known in the HCI layer, so the force_active setting for each
socket isn't known either. Hard-coding the force_active parameter does
not change any behavior, but makes it obvious that incoming ACL data
never exits sniff mode.

Signed-off-by: Mat Martineau <mathewm@codeaurora.org>
Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
13 years agoBluetooth: Simplify num_comp_pkts_evt function
Andrei Emeltchenko [Wed, 7 Dec 2011 13:56:52 +0000 (15:56 +0200)]
Bluetooth: Simplify num_comp_pkts_evt function

Simplify function and remove fourth level of indentation.

Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
Acked-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
13 years agoBluetooth: Add HCI Read Data Block Size function
Andrei Emeltchenko [Wed, 7 Dec 2011 13:56:51 +0000 (15:56 +0200)]
Bluetooth: Add HCI Read Data Block Size function

Implement block size read function. Use different variables for
packet-based and block-based flow control.

Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
Acked-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
13 years agoBluetooth: Use correct struct for user_confirm_neg_reply
Johan Hedberg [Wed, 14 Dec 2011 22:47:41 +0000 (00:47 +0200)]
Bluetooth: Use correct struct for user_confirm_neg_reply

This patch fixes user_confirm_neg_reply to use the appropriate struct
for accessing the call parameters.

Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
Acked-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>