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)
if (info->rx_count == 0) {
int dlen;
hci_event_hdr *eh;
hci_acl_hdr *ah;
hci_sco_hdr *sh;
struct hci_event_hdr *eh;
struct hci_acl_hdr *ah;
struct hci_sco_hdr *sh;
switch (info->rx_state) {
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_count = eh->plen;
break;
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);
info->rx_state = RECV_WAIT_DATA;
info->rx_count = dlen;
break;
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_count = sh->dlen;
break;
......
......@@ -318,27 +318,27 @@ static void bt3c_receive(bt3c_info_t *info)
if (info->rx_count == 0) {
int dlen;
hci_event_hdr *eh;
hci_acl_hdr *ah;
hci_sco_hdr *sh;
struct hci_event_hdr *eh;
struct hci_acl_hdr *ah;
struct hci_sco_hdr *sh;
switch (info->rx_state) {
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_count = eh->plen;
break;
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);
info->rx_state = RECV_WAIT_DATA;
info->rx_count = dlen;
break;
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_count = sh->dlen;
break;
......
......@@ -701,7 +701,13 @@ static struct hci_uart_proto bcsp = {
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)
......
......@@ -269,7 +269,13 @@ static struct hci_uart_proto h4p = {
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)
......
......@@ -521,9 +521,7 @@ int __init hci_uart_init(void)
static struct tty_ldisc hci_uart_ldisc;
int err;
BT_INFO("Bluetooth HCI UART driver ver %s Copyright (C) 2000,2001 Qualcomm Inc",
VERSION);
BT_INFO("Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>");
BT_INFO("HCI UART driver ver %s", VERSION);
/* Register the tty discipline */
......@@ -541,7 +539,7 @@ int __init hci_uart_init(void)
hci_uart_ldisc.write_wakeup= hci_uart_tty_wakeup;
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;
}
......
......@@ -781,9 +781,7 @@ int hci_usb_init(void)
{
int err;
BT_INFO("Bluetooth HCI USB driver ver %s Copyright (C) 2000,2001 Qualcomm Inc",
VERSION);
BT_INFO("Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>");
BT_INFO("HCI USB driver ver %s", VERSION);
if ((err = usb_register(&hci_usb_driver)) < 0)
BT_ERR("Failed to register HCI USB driver");
......
......@@ -331,9 +331,7 @@ static struct miscdevice hci_vhci_miscdev=
int __init hci_vhci_init(void)
{
BT_INFO("Bluetooth VHCI driver ver %s Copyright (C) 2000,2001 Qualcomm Inc",
VERSION);
BT_INFO("Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>");
BT_INFO("VHCI driver ver %s", VERSION);
if (misc_register(&hci_vhci_miscdev)) {
BT_ERR("Can't register misc device %d\n", VHCI_MINOR);
......
......@@ -53,7 +53,7 @@
#define SOL_SCO 17
#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_ERR(fmt, arg...) printk(KERN_ERR "%s: " fmt "\n" , __FUNCTION__ , ## arg)
......
......@@ -326,9 +326,7 @@ extern int hci_sock_cleanup(void);
static int __init bt_init(void)
{
BT_INFO("Bluetooth Core ver %s Copyright (C) 2000,2001 Qualcomm Inc",
VERSION);
BT_INFO("Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>");
BT_INFO("Core ver %s", VERSION);
proc_mkdir("bluetooth", NULL);
......@@ -338,12 +336,14 @@ static int __init bt_init(void)
SLAB_HWCACHE_ALIGN, 0, 0);
if (!bt_sock_cache) {
BT_ERR("Bluetooth socket cache creation failed");
BT_ERR("Socket cache creation failed");
return -ENOMEM;
}
sock_register(&bt_sock_family_ops);
BT_INFO("HCI device and connection manager initialized");
hci_sock_init();
return 0;
}
......
......@@ -703,17 +703,22 @@ int bnep_get_coninfo(struct bnep_coninfo *ci)
}
static int __init bnep_init_module(void)
{
BT_INFO("BNEP: BNEP2 ver %s\n"
"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);
{
char flt[50] = "";
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;
}
......@@ -725,6 +730,6 @@ static void __exit bnep_cleanup_module(void)
module_init(bnep_init_module);
module_exit(bnep_cleanup_module);
MODULE_DESCRIPTION("BNEP ver " VERSION);
MODULE_AUTHOR("David Libault <david.libault@inventel.fr> Maxim Krasnyanskiy <maxk@qualcomm.com>");
MODULE_DESCRIPTION("Bluetooth BNEP ver " VERSION);
MODULE_AUTHOR("David Libault <david.libault@inventel.fr>, Maxim Krasnyanskiy <maxk@qualcomm.com>");
MODULE_LICENSE("GPL");
......@@ -628,18 +628,21 @@ struct notifier_block hci_sock_nblock = {
int hci_sock_init(void)
{
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;
}
hci_register_notifier(&hci_sock_nblock);
BT_INFO("HCI socket layer initialized");
return 0;
}
int hci_sock_cleanup(void)
{
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);
return 0;
......
......@@ -2079,19 +2079,20 @@ int __init l2cap_init(void)
int err;
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;
}
if ((err = hci_register_proto(&l2cap_hci_proto))) {
BT_ERR("Can't register L2CAP protocol");
BT_ERR("L2CAP protocol registration failed");
return err;
}
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("Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>");
BT_INFO("L2CAP ver %s", VERSION);
BT_INFO("L2CAP socket layer initialized");
return 0;
}
......@@ -2101,10 +2102,10 @@ void l2cap_cleanup(void)
/* Unregister socket and protocol */
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))
BT_ERR("Can't unregister L2CAP protocol");
BT_ERR("L2CAP protocol unregistration failed");
}
module_init(l2cap_init);
......
......@@ -1783,6 +1783,8 @@ int __init rfcomm_init(void)
{
kernel_thread(rfcomm_run, NULL, CLONE_FS | CLONE_FILES | CLONE_SIGHAND);
BT_INFO("RFCOMM ver %s", VERSION);
rfcomm_init_sockets();
#ifdef CONFIG_BT_RFCOMM_TTY
......@@ -1791,9 +1793,6 @@ int __init rfcomm_init(void)
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;
}
......
......@@ -822,10 +822,11 @@ int rfcomm_init_sockets(void)
int err;
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;
}
BT_INFO("RFCOMM socket layer initialized");
return 0;
}
......@@ -835,5 +836,5 @@ void rfcomm_cleanup_sockets(void)
/* Unregister socket, protocol and notifier */
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)
BT_DBG("dlc %p dev %p v24_sig 0x%02x", dlc, dev, v24_sig);
dev->modem_status =
(v24_sig & RFCOMM_V24_RTC) ? (TIOCM_DSR | TIOCM_DTR) : 0 |
(v24_sig & RFCOMM_V24_RTR) ? (TIOCM_RTS | TIOCM_CTS) : 0 |
(v24_sig & RFCOMM_V24_IC) ? TIOCM_RI : 0 |
(v24_sig & RFCOMM_V24_DV) ? TIOCM_CD : 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_IC) ? TIOCM_RI : 0) |
((v24_sig & RFCOMM_V24_DV) ? TIOCM_CD : 0);
}
/* ---- TTY functions ---- */
......@@ -572,6 +572,11 @@ static int rfcomm_tty_open(struct tty_struct *tty, struct file *filp)
if (dlc->state == BT_CONNECTED)
break;
if (signal_pending(current)) {
err = -EINTR;
break;
}
schedule();
}
set_current_state(TASK_RUNNING);
......@@ -899,6 +904,8 @@ int rfcomm_init_ttys(void)
return -1;
}
BT_INFO("RFCOMM TTY layer initialized");
return 0;
}
......
......@@ -969,19 +969,20 @@ int __init sco_init(void)
int err;
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;
}
if ((err = hci_register_proto(&sco_hci_proto))) {
BT_ERR("Can't register SCO protocol");
BT_ERR("SCO protocol registration failed");
return err;
}
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("Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>");
BT_INFO("SCO (Voice Link) ver %s", VERSION);
BT_INFO("SCO socket layer initialized");
return 0;
}
......@@ -993,10 +994,10 @@ void sco_cleanup(void)
/* Unregister socket, protocol and notifier */
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)))
BT_ERR("Can't unregister SCO protocol %d", err);
BT_ERR("SCO protocol unregistration failed. %d", err);
}
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