Commit 81100c46 authored by Maksim Krasnyanskiy's avatar Maksim Krasnyanskiy

Merge qualcomm.com:/usr/src/bt-2.5 into qualcomm.com:/usr/src/linux-2.5

parents 4879bb24 ec83d863
...@@ -456,27 +456,27 @@ static void bluecard_receive(bluecard_info_t *info, unsigned int offset) ...@@ -456,27 +456,27 @@ static void bluecard_receive(bluecard_info_t *info, unsigned int offset)
if (info->rx_count == 0) { if (info->rx_count == 0) {
int dlen; int dlen;
hci_event_hdr *eh; struct hci_event_hdr *eh;
hci_acl_hdr *ah; struct hci_acl_hdr *ah;
hci_sco_hdr *sh; struct hci_sco_hdr *sh;
switch (info->rx_state) { switch (info->rx_state) {
case RECV_WAIT_EVENT_HEADER: case RECV_WAIT_EVENT_HEADER:
eh = (hci_event_hdr *)(info->rx_skb->data); eh = (struct hci_event_hdr *)(info->rx_skb->data);
info->rx_state = RECV_WAIT_DATA; info->rx_state = RECV_WAIT_DATA;
info->rx_count = eh->plen; info->rx_count = eh->plen;
break; break;
case RECV_WAIT_ACL_HEADER: case RECV_WAIT_ACL_HEADER:
ah = (hci_acl_hdr *)(info->rx_skb->data); ah = (struct hci_acl_hdr *)(info->rx_skb->data);
dlen = __le16_to_cpu(ah->dlen); dlen = __le16_to_cpu(ah->dlen);
info->rx_state = RECV_WAIT_DATA; info->rx_state = RECV_WAIT_DATA;
info->rx_count = dlen; info->rx_count = dlen;
break; break;
case RECV_WAIT_SCO_HEADER: case RECV_WAIT_SCO_HEADER:
sh = (hci_sco_hdr *)(info->rx_skb->data); sh = (struct hci_sco_hdr *)(info->rx_skb->data);
info->rx_state = RECV_WAIT_DATA; info->rx_state = RECV_WAIT_DATA;
info->rx_count = sh->dlen; info->rx_count = sh->dlen;
break; break;
......
...@@ -318,27 +318,27 @@ static void bt3c_receive(bt3c_info_t *info) ...@@ -318,27 +318,27 @@ static void bt3c_receive(bt3c_info_t *info)
if (info->rx_count == 0) { if (info->rx_count == 0) {
int dlen; int dlen;
hci_event_hdr *eh; struct hci_event_hdr *eh;
hci_acl_hdr *ah; struct hci_acl_hdr *ah;
hci_sco_hdr *sh; struct hci_sco_hdr *sh;
switch (info->rx_state) { switch (info->rx_state) {
case RECV_WAIT_EVENT_HEADER: case RECV_WAIT_EVENT_HEADER:
eh = (hci_event_hdr *)(info->rx_skb->data); eh = (struct hci_event_hdr *)(info->rx_skb->data);
info->rx_state = RECV_WAIT_DATA; info->rx_state = RECV_WAIT_DATA;
info->rx_count = eh->plen; info->rx_count = eh->plen;
break; break;
case RECV_WAIT_ACL_HEADER: case RECV_WAIT_ACL_HEADER:
ah = (hci_acl_hdr *)(info->rx_skb->data); ah = (struct hci_acl_hdr *)(info->rx_skb->data);
dlen = __le16_to_cpu(ah->dlen); dlen = __le16_to_cpu(ah->dlen);
info->rx_state = RECV_WAIT_DATA; info->rx_state = RECV_WAIT_DATA;
info->rx_count = dlen; info->rx_count = dlen;
break; break;
case RECV_WAIT_SCO_HEADER: case RECV_WAIT_SCO_HEADER:
sh = (hci_sco_hdr *)(info->rx_skb->data); sh = (struct hci_sco_hdr *)(info->rx_skb->data);
info->rx_state = RECV_WAIT_DATA; info->rx_state = RECV_WAIT_DATA;
info->rx_count = sh->dlen; info->rx_count = sh->dlen;
break; break;
......
...@@ -701,7 +701,13 @@ static struct hci_uart_proto bcsp = { ...@@ -701,7 +701,13 @@ static struct hci_uart_proto bcsp = {
int bcsp_init(void) int bcsp_init(void)
{ {
return hci_uart_register_proto(&bcsp); int err = hci_uart_register_proto(&bcsp);
if (!err)
BT_INFO("HCI BCSP protocol initialized");
else
BT_ERR("HCI BCSP protocol registration failed");
return err;
} }
int bcsp_deinit(void) int bcsp_deinit(void)
......
...@@ -269,7 +269,13 @@ static struct hci_uart_proto h4p = { ...@@ -269,7 +269,13 @@ static struct hci_uart_proto h4p = {
int h4_init(void) int h4_init(void)
{ {
return hci_uart_register_proto(&h4p); int err = hci_uart_register_proto(&h4p);
if (!err)
BT_INFO("HCI H4 protocol initialized");
else
BT_ERR("HCI H4 protocol registration failed");
return err;
} }
int h4_deinit(void) int h4_deinit(void)
......
...@@ -521,9 +521,7 @@ int __init hci_uart_init(void) ...@@ -521,9 +521,7 @@ int __init hci_uart_init(void)
static struct tty_ldisc hci_uart_ldisc; static struct tty_ldisc hci_uart_ldisc;
int err; int err;
BT_INFO("Bluetooth HCI UART driver ver %s Copyright (C) 2000,2001 Qualcomm Inc", BT_INFO("HCI UART driver ver %s", VERSION);
VERSION);
BT_INFO("Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>");
/* Register the tty discipline */ /* Register the tty discipline */
...@@ -541,7 +539,7 @@ int __init hci_uart_init(void) ...@@ -541,7 +539,7 @@ int __init hci_uart_init(void)
hci_uart_ldisc.write_wakeup= hci_uart_tty_wakeup; hci_uart_ldisc.write_wakeup= hci_uart_tty_wakeup;
if ((err = tty_register_ldisc(N_HCI, &hci_uart_ldisc))) { if ((err = tty_register_ldisc(N_HCI, &hci_uart_ldisc))) {
BT_ERR("Can't register HCI line discipline (%d)", err); BT_ERR("HCI line discipline registration failed. (%d)", err);
return err; return err;
} }
......
...@@ -781,9 +781,7 @@ int hci_usb_init(void) ...@@ -781,9 +781,7 @@ int hci_usb_init(void)
{ {
int err; int err;
BT_INFO("Bluetooth HCI USB driver ver %s Copyright (C) 2000,2001 Qualcomm Inc", BT_INFO("HCI USB driver ver %s", VERSION);
VERSION);
BT_INFO("Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>");
if ((err = usb_register(&hci_usb_driver)) < 0) if ((err = usb_register(&hci_usb_driver)) < 0)
BT_ERR("Failed to register HCI USB driver"); BT_ERR("Failed to register HCI USB driver");
......
...@@ -331,9 +331,7 @@ static struct miscdevice hci_vhci_miscdev= ...@@ -331,9 +331,7 @@ static struct miscdevice hci_vhci_miscdev=
int __init hci_vhci_init(void) int __init hci_vhci_init(void)
{ {
BT_INFO("Bluetooth VHCI driver ver %s Copyright (C) 2000,2001 Qualcomm Inc", BT_INFO("VHCI driver ver %s", VERSION);
VERSION);
BT_INFO("Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>");
if (misc_register(&hci_vhci_miscdev)) { if (misc_register(&hci_vhci_miscdev)) {
BT_ERR("Can't register misc device %d\n", VHCI_MINOR); BT_ERR("Can't register misc device %d\n", VHCI_MINOR);
......
...@@ -53,7 +53,7 @@ ...@@ -53,7 +53,7 @@
#define SOL_SCO 17 #define SOL_SCO 17
#define SOL_RFCOMM 18 #define SOL_RFCOMM 18
#define BT_INFO(fmt, arg...) printk(KERN_INFO fmt "\n" , ## arg) #define BT_INFO(fmt, arg...) printk(KERN_INFO "Bluetooth: " fmt "\n" , ## arg)
#define BT_DBG(fmt, arg...) printk(KERN_INFO "%s: " fmt "\n" , __FUNCTION__ , ## arg) #define BT_DBG(fmt, arg...) printk(KERN_INFO "%s: " fmt "\n" , __FUNCTION__ , ## arg)
#define BT_ERR(fmt, arg...) printk(KERN_ERR "%s: " fmt "\n" , __FUNCTION__ , ## arg) #define BT_ERR(fmt, arg...) printk(KERN_ERR "%s: " fmt "\n" , __FUNCTION__ , ## arg)
......
...@@ -326,9 +326,7 @@ extern int hci_sock_cleanup(void); ...@@ -326,9 +326,7 @@ extern int hci_sock_cleanup(void);
static int __init bt_init(void) static int __init bt_init(void)
{ {
BT_INFO("Bluetooth Core ver %s Copyright (C) 2000,2001 Qualcomm Inc", BT_INFO("Core ver %s", VERSION);
VERSION);
BT_INFO("Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>");
proc_mkdir("bluetooth", NULL); proc_mkdir("bluetooth", NULL);
...@@ -338,12 +336,14 @@ static int __init bt_init(void) ...@@ -338,12 +336,14 @@ static int __init bt_init(void)
SLAB_HWCACHE_ALIGN, 0, 0); SLAB_HWCACHE_ALIGN, 0, 0);
if (!bt_sock_cache) { if (!bt_sock_cache) {
BT_ERR("Bluetooth socket cache creation failed"); BT_ERR("Socket cache creation failed");
return -ENOMEM; return -ENOMEM;
} }
sock_register(&bt_sock_family_ops); sock_register(&bt_sock_family_ops);
BT_INFO("HCI device and connection manager initialized");
hci_sock_init(); hci_sock_init();
return 0; return 0;
} }
......
...@@ -703,17 +703,22 @@ int bnep_get_coninfo(struct bnep_coninfo *ci) ...@@ -703,17 +703,22 @@ int bnep_get_coninfo(struct bnep_coninfo *ci)
} }
static int __init bnep_init_module(void) static int __init bnep_init_module(void)
{ {
BT_INFO("BNEP: BNEP2 ver %s\n" char flt[50] = "";
"BNEP: Copyright (C) 2002 Inventel\n"
"BNEP: Written 2001,2002 by\n"
"BNEP: \tClement Moreau <clement.moreau@inventel.fr> "
"David Libault <david.libault@inventel.fr>\n"
"BNEP: Copyright (C) 2002 Maxim Krasnyanskiy <maxk@qualcomm.com>",
VERSION);
bnep_sock_init(); #ifdef CONFIG_BT_BNEP_PROTO_FILTER
strcat(flt, "protocol ");
#endif
#ifdef CONFIG_BT_BNEP_MC_FILTER
strcat(flt, "multicast");
#endif
BT_INFO("BNEP (Ethernet Emulation) ver %s", VERSION);
if (flt[0])
BT_INFO("BNEP filters: %s", flt);
bnep_sock_init();
return 0; return 0;
} }
...@@ -725,6 +730,6 @@ static void __exit bnep_cleanup_module(void) ...@@ -725,6 +730,6 @@ static void __exit bnep_cleanup_module(void)
module_init(bnep_init_module); module_init(bnep_init_module);
module_exit(bnep_cleanup_module); module_exit(bnep_cleanup_module);
MODULE_DESCRIPTION("BNEP ver " VERSION); MODULE_DESCRIPTION("Bluetooth BNEP ver " VERSION);
MODULE_AUTHOR("David Libault <david.libault@inventel.fr> Maxim Krasnyanskiy <maxk@qualcomm.com>"); MODULE_AUTHOR("David Libault <david.libault@inventel.fr>, Maxim Krasnyanskiy <maxk@qualcomm.com>");
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
...@@ -628,18 +628,21 @@ struct notifier_block hci_sock_nblock = { ...@@ -628,18 +628,21 @@ struct notifier_block hci_sock_nblock = {
int hci_sock_init(void) int hci_sock_init(void)
{ {
if (bt_sock_register(BTPROTO_HCI, &hci_sock_family_ops)) { if (bt_sock_register(BTPROTO_HCI, &hci_sock_family_ops)) {
BT_ERR("Can't register HCI socket"); BT_ERR("HCI socket registration failed");
return -EPROTO; return -EPROTO;
} }
hci_register_notifier(&hci_sock_nblock); hci_register_notifier(&hci_sock_nblock);
BT_INFO("HCI socket layer initialized");
return 0; return 0;
} }
int hci_sock_cleanup(void) int hci_sock_cleanup(void)
{ {
if (bt_sock_unregister(BTPROTO_HCI)) if (bt_sock_unregister(BTPROTO_HCI))
BT_ERR("Can't unregister HCI socket"); BT_ERR("HCI socket unregistration failed");
hci_unregister_notifier(&hci_sock_nblock); hci_unregister_notifier(&hci_sock_nblock);
return 0; return 0;
......
...@@ -2079,19 +2079,20 @@ int __init l2cap_init(void) ...@@ -2079,19 +2079,20 @@ int __init l2cap_init(void)
int err; int err;
if ((err = bt_sock_register(BTPROTO_L2CAP, &l2cap_sock_family_ops))) { if ((err = bt_sock_register(BTPROTO_L2CAP, &l2cap_sock_family_ops))) {
BT_ERR("Can't register L2CAP socket"); BT_ERR("L2CAP socket registration failed");
return err; return err;
} }
if ((err = hci_register_proto(&l2cap_hci_proto))) { if ((err = hci_register_proto(&l2cap_hci_proto))) {
BT_ERR("Can't register L2CAP protocol"); BT_ERR("L2CAP protocol registration failed");
return err; return err;
} }
create_proc_read_entry("bluetooth/l2cap", 0, 0, l2cap_read_proc, NULL); create_proc_read_entry("bluetooth/l2cap", 0, 0, l2cap_read_proc, NULL);
BT_INFO("Bluetooth L2CAP ver %s Copyright (C) 2000,2001 Qualcomm Inc", VERSION); BT_INFO("L2CAP ver %s", VERSION);
BT_INFO("Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>"); BT_INFO("L2CAP socket layer initialized");
return 0; return 0;
} }
...@@ -2101,10 +2102,10 @@ void l2cap_cleanup(void) ...@@ -2101,10 +2102,10 @@ void l2cap_cleanup(void)
/* Unregister socket and protocol */ /* Unregister socket and protocol */
if (bt_sock_unregister(BTPROTO_L2CAP)) if (bt_sock_unregister(BTPROTO_L2CAP))
BT_ERR("Can't unregister L2CAP socket"); BT_ERR("L2CAP socket unregistration failed");
if (hci_unregister_proto(&l2cap_hci_proto)) if (hci_unregister_proto(&l2cap_hci_proto))
BT_ERR("Can't unregister L2CAP protocol"); BT_ERR("L2CAP protocol unregistration failed");
} }
module_init(l2cap_init); module_init(l2cap_init);
......
...@@ -1783,6 +1783,8 @@ int __init rfcomm_init(void) ...@@ -1783,6 +1783,8 @@ int __init rfcomm_init(void)
{ {
kernel_thread(rfcomm_run, NULL, CLONE_FS | CLONE_FILES | CLONE_SIGHAND); kernel_thread(rfcomm_run, NULL, CLONE_FS | CLONE_FILES | CLONE_SIGHAND);
BT_INFO("RFCOMM ver %s", VERSION);
rfcomm_init_sockets(); rfcomm_init_sockets();
#ifdef CONFIG_BT_RFCOMM_TTY #ifdef CONFIG_BT_RFCOMM_TTY
...@@ -1791,9 +1793,6 @@ int __init rfcomm_init(void) ...@@ -1791,9 +1793,6 @@ int __init rfcomm_init(void)
create_proc_read_entry("bluetooth/rfcomm", 0, 0, rfcomm_read_proc, NULL); create_proc_read_entry("bluetooth/rfcomm", 0, 0, rfcomm_read_proc, NULL);
BT_INFO("Bluetooth RFCOMM ver %s", VERSION);
BT_INFO("Copyright (C) 2002 Maxim Krasnyansky <maxk@qualcomm.com>");
BT_INFO("Copyright (C) 2002 Marcel Holtmann <marcel@holtmann.org>");
return 0; return 0;
} }
......
...@@ -822,10 +822,11 @@ int rfcomm_init_sockets(void) ...@@ -822,10 +822,11 @@ int rfcomm_init_sockets(void)
int err; int err;
if ((err = bt_sock_register(BTPROTO_RFCOMM, &rfcomm_sock_family_ops))) { if ((err = bt_sock_register(BTPROTO_RFCOMM, &rfcomm_sock_family_ops))) {
BT_ERR("Can't register RFCOMM socket layer"); BT_ERR("RFCOMM socket layer registration failed. %d", err);
return err; return err;
} }
BT_INFO("RFCOMM socket layer initialized");
return 0; return 0;
} }
...@@ -835,5 +836,5 @@ void rfcomm_cleanup_sockets(void) ...@@ -835,5 +836,5 @@ void rfcomm_cleanup_sockets(void)
/* Unregister socket, protocol and notifier */ /* Unregister socket, protocol and notifier */
if ((err = bt_sock_unregister(BTPROTO_RFCOMM))) if ((err = bt_sock_unregister(BTPROTO_RFCOMM)))
BT_ERR("Can't unregister RFCOMM socket layer %d", err); BT_ERR("RFCOMM socket layer unregistration failed. %d", err);
} }
...@@ -500,10 +500,10 @@ static void rfcomm_dev_modem_status(struct rfcomm_dlc *dlc, u8 v24_sig) ...@@ -500,10 +500,10 @@ static void rfcomm_dev_modem_status(struct rfcomm_dlc *dlc, u8 v24_sig)
BT_DBG("dlc %p dev %p v24_sig 0x%02x", dlc, dev, v24_sig); BT_DBG("dlc %p dev %p v24_sig 0x%02x", dlc, dev, v24_sig);
dev->modem_status = dev->modem_status =
(v24_sig & RFCOMM_V24_RTC) ? (TIOCM_DSR | TIOCM_DTR) : 0 | ((v24_sig & RFCOMM_V24_RTC) ? (TIOCM_DSR | TIOCM_DTR) : 0) |
(v24_sig & RFCOMM_V24_RTR) ? (TIOCM_RTS | TIOCM_CTS) : 0 | ((v24_sig & RFCOMM_V24_RTR) ? (TIOCM_RTS | TIOCM_CTS) : 0) |
(v24_sig & RFCOMM_V24_IC) ? TIOCM_RI : 0 | ((v24_sig & RFCOMM_V24_IC) ? TIOCM_RI : 0) |
(v24_sig & RFCOMM_V24_DV) ? TIOCM_CD : 0; ((v24_sig & RFCOMM_V24_DV) ? TIOCM_CD : 0);
} }
/* ---- TTY functions ---- */ /* ---- TTY functions ---- */
...@@ -572,6 +572,11 @@ static int rfcomm_tty_open(struct tty_struct *tty, struct file *filp) ...@@ -572,6 +572,11 @@ static int rfcomm_tty_open(struct tty_struct *tty, struct file *filp)
if (dlc->state == BT_CONNECTED) if (dlc->state == BT_CONNECTED)
break; break;
if (signal_pending(current)) {
err = -EINTR;
break;
}
schedule(); schedule();
} }
set_current_state(TASK_RUNNING); set_current_state(TASK_RUNNING);
...@@ -899,6 +904,8 @@ int rfcomm_init_ttys(void) ...@@ -899,6 +904,8 @@ int rfcomm_init_ttys(void)
return -1; return -1;
} }
BT_INFO("RFCOMM TTY layer initialized");
return 0; return 0;
} }
......
...@@ -969,19 +969,20 @@ int __init sco_init(void) ...@@ -969,19 +969,20 @@ int __init sco_init(void)
int err; int err;
if ((err = bt_sock_register(BTPROTO_SCO, &sco_sock_family_ops))) { if ((err = bt_sock_register(BTPROTO_SCO, &sco_sock_family_ops))) {
BT_ERR("Can't register SCO socket layer"); BT_ERR("SCO socket registration failed");
return err; return err;
} }
if ((err = hci_register_proto(&sco_hci_proto))) { if ((err = hci_register_proto(&sco_hci_proto))) {
BT_ERR("Can't register SCO protocol"); BT_ERR("SCO protocol registration failed");
return err; return err;
} }
create_proc_read_entry("bluetooth/sco", 0, 0, sco_read_proc, NULL); create_proc_read_entry("bluetooth/sco", 0, 0, sco_read_proc, NULL);
BT_INFO("Bluetooth SCO ver %s Copyright (C) 2000,2001 Qualcomm Inc", VERSION); BT_INFO("SCO (Voice Link) ver %s", VERSION);
BT_INFO("Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>"); BT_INFO("SCO socket layer initialized");
return 0; return 0;
} }
...@@ -993,10 +994,10 @@ void sco_cleanup(void) ...@@ -993,10 +994,10 @@ void sco_cleanup(void)
/* Unregister socket, protocol and notifier */ /* Unregister socket, protocol and notifier */
if ((err = bt_sock_unregister(BTPROTO_SCO))) if ((err = bt_sock_unregister(BTPROTO_SCO)))
BT_ERR("Can't unregister SCO socket layer %d", err); BT_ERR("SCO socket unregistration failed. %d", err);
if ((err = hci_unregister_proto(&sco_hci_proto))) if ((err = hci_unregister_proto(&sco_hci_proto)))
BT_ERR("Can't unregister SCO protocol %d", err); BT_ERR("SCO protocol unregistration failed. %d", err);
} }
module_init(sco_init); module_init(sco_init);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment