Bluetooth: hci_ldisc: watchdog timeout while BT file transfer
Serial core's uart_write_wakeup( ) is used to unthrottle line
discipline to send more data notifying that there is less number
of data available in TTY circular buffer by MSM HSUART driver with
uart port spinlock acquire. Here serial core is calling
HCI Line Discipline driver's hci_uart_tty_wakeup( ) without scheduling
tasklet in 3.4 kernel compare to 3.0 kernel. Due to that HCI
Line Discipline driver pushes all available data to TTY Core as part of
hardirq context in 3.4 kernel compare to softirq context on 3.0 kernel,
which is causing watchdog timeout issue. Hence move all
hci_uart_tty_wakeup() work to tasklet context to resolve this issue.
Change-Id: I7e5d98d3cda7b6c862e97799cddbfbe97a28467f
Signed-off-by: Ram Mohan Korukonda <rkorukon@codeaurora.org>
diff --git a/drivers/bluetooth/hci_uart.h b/drivers/bluetooth/hci_uart.h
index dc48239..123fc24 100644
--- a/drivers/bluetooth/hci_uart.h
+++ b/drivers/bluetooth/hci_uart.h
@@ -4,7 +4,7 @@
*
* Copyright (C) 2002-2003 Maxim Krasnyansky <maxk@qualcomm.com>
* Copyright (C) 2004-2005 Marcel Holtmann <marcel@holtmann.org>
- * Copyright (c) 2000-2001, 2010, Code Aurora Forum. All rights reserved.
+ * Copyright (c) 2000-2001, 2010, 2012 Code Aurora Forum. All rights reserved.
*
*
* This program is free software; you can redistribute it and/or modify
@@ -66,6 +66,7 @@
unsigned long hdev_flags;
struct hci_uart_proto *proto;
+ struct tasklet_struct tty_wakeup_task;
void *priv;
struct sk_buff *tx_skb;