• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/net/bluetooth/

Lines Matching defs:conn

48 void hci_acl_connect(struct hci_conn *conn)
50 struct hci_dev *hdev = conn->hdev;
54 BT_DBG("%p", conn);
56 conn->state = BT_CONNECT;
57 conn->out = 1;
59 conn->link_mode = HCI_LM_MASTER;
61 conn->attempt++;
63 conn->link_policy = hdev->link_policy;
66 bacpy(&cp.bdaddr, &conn->dst);
69 if ((ie = hci_inquiry_cache_lookup(hdev, &conn->dst))) {
77 memcpy(conn->dev_class, ie->data.dev_class, 3);
78 conn->ssp_mode = ie->data.ssp_mode;
81 cp.pkt_type = cpu_to_le16(conn->pkt_type);
90 static void hci_acl_connect_cancel(struct hci_conn *conn)
94 BT_DBG("%p", conn);
96 if (conn->hdev->hci_ver < 2)
99 bacpy(&cp.bdaddr, &conn->dst);
100 hci_send_cmd(conn->hdev, HCI_OP_CREATE_CONN_CANCEL, sizeof(cp), &cp);
103 void hci_acl_disconn(struct hci_conn *conn, __u8 reason)
107 BT_DBG("%p", conn);
109 conn->state = BT_DISCONN;
111 cp.handle = cpu_to_le16(conn->handle);
113 hci_send_cmd(conn->hdev, HCI_OP_DISCONNECT, sizeof(cp), &cp);
116 void hci_add_sco(struct hci_conn *conn, __u16 handle)
118 struct hci_dev *hdev = conn->hdev;
121 BT_DBG("%p", conn);
123 conn->state = BT_CONNECT;
124 conn->out = 1;
126 conn->attempt++;
129 cp.pkt_type = cpu_to_le16(conn->pkt_type);
134 void hci_setup_sync(struct hci_conn *conn, __u16 handle)
136 struct hci_dev *hdev = conn->hdev;
139 BT_DBG("%p", conn);
141 conn->state = BT_CONNECT;
142 conn->out = 1;
144 conn->attempt++;
147 cp.pkt_type = cpu_to_le16(conn->pkt_type);
159 void hci_sco_setup(struct hci_conn *conn, __u8 status)
161 struct hci_conn *sco = conn->link;
163 BT_DBG("%p", conn);
169 if (lmp_esco_capable(conn->hdev))
170 hci_setup_sync(sco, conn->handle);
172 hci_add_sco(sco, conn->handle);
181 struct hci_conn *conn = (void *) arg;
182 struct hci_dev *hdev = conn->hdev;
185 BT_DBG("conn %p state %d", conn, conn->state);
187 if (atomic_read(&conn->refcnt))
192 switch (conn->state) {
195 if (conn->type == ACL_LINK && conn->out)
196 hci_acl_connect_cancel(conn);
200 reason = hci_proto_disconn_ind(conn);
201 hci_acl_disconn(conn, reason);
204 conn->state = BT_CLOSED;
213 struct hci_conn *conn = (void *) arg;
215 BT_DBG("conn %p mode %d", conn, conn->mode);
217 hci_conn_enter_sniff_mode(conn);
222 struct hci_conn *conn;
226 conn = kzalloc(sizeof(struct hci_conn), GFP_ATOMIC);
227 if (!conn)
230 bacpy(&conn->dst, dst);
231 conn->hdev = hdev;
232 conn->type = type;
233 conn->mode = HCI_CM_ACTIVE;
234 conn->state = BT_OPEN;
235 conn->auth_type = HCI_AT_GENERAL_BONDING;
237 conn->power_save = 1;
238 conn->disc_timeout = HCI_DISCONN_TIMEOUT;
242 conn->pkt_type = hdev->pkt_type & ACL_PTYPE_MASK;
246 conn->pkt_type = (hdev->esco_type & SCO_ESCO_MASK) |
249 conn->pkt_type = hdev->pkt_type & SCO_PTYPE_MASK;
252 conn->pkt_type = hdev->esco_type & ~EDR_ESCO_MASK;
256 skb_queue_head_init(&conn->data_q);
258 setup_timer(&conn->disc_timer, hci_conn_timeout, (unsigned long)conn);
259 setup_timer(&conn->idle_timer, hci_conn_idle, (unsigned long)conn);
261 atomic_set(&conn->refcnt, 0);
267 hci_conn_hash_add(hdev, conn);
271 atomic_set(&conn->devref, 0);
273 hci_conn_init_sysfs(conn);
277 return conn;
280 int hci_conn_del(struct hci_conn *conn)
282 struct hci_dev *hdev = conn->hdev;
284 BT_DBG("%s conn %p handle %d", hdev->name, conn, conn->handle);
286 del_timer(&conn->idle_timer);
288 del_timer(&conn->disc_timer);
290 if (conn->type == ACL_LINK) {
291 struct hci_conn *sco = conn->link;
296 hdev->acl_cnt += conn->sent;
298 struct hci_conn *acl = conn->link;
307 hci_conn_hash_del(hdev, conn);
313 skb_queue_purge(&conn->data_q);
315 hci_conn_put_device(conn);
423 int hci_conn_check_link_mode(struct hci_conn *conn)
425 BT_DBG("conn %p", conn);
427 if (conn->ssp_mode > 0 && conn->hdev->ssp_mode > 0 &&
428 !(conn->link_mode & HCI_LM_ENCRYPT))
436 static int hci_conn_auth(struct hci_conn *conn, __u8 sec_level, __u8 auth_type)
438 BT_DBG("conn %p", conn);
440 if (sec_level > conn->sec_level)
441 conn->sec_level = sec_level;
442 else if (conn->link_mode & HCI_LM_AUTH)
445 conn->auth_type = auth_type;
447 if (!test_and_set_bit(HCI_CONN_AUTH_PEND, &conn->pend)) {
449 cp.handle = cpu_to_le16(conn->handle);
450 hci_send_cmd(conn->hdev, HCI_OP_AUTH_REQUESTED,
458 int hci_conn_security(struct hci_conn *conn, __u8 sec_level, __u8 auth_type)
460 BT_DBG("conn %p", conn);
466 (!conn->ssp_mode || !conn->hdev->ssp_mode))
469 if (conn->link_mode & HCI_LM_ENCRYPT)
470 return hci_conn_auth(conn, sec_level, auth_type);
472 if (test_and_set_bit(HCI_CONN_ENCRYPT_PEND, &conn->pend))
475 if (hci_conn_auth(conn, sec_level, auth_type)) {
477 cp.handle = cpu_to_le16(conn->handle);
479 hci_send_cmd(conn->hdev, HCI_OP_SET_CONN_ENCRYPT,
488 int hci_conn_change_link_key(struct hci_conn *conn)
490 BT_DBG("conn %p", conn);
492 if (!test_and_set_bit(HCI_CONN_AUTH_PEND, &conn->pend)) {
494 cp.handle = cpu_to_le16(conn->handle);
495 hci_send_cmd(conn->hdev, HCI_OP_CHANGE_CONN_LINK_KEY,
504 int hci_conn_switch_role(struct hci_conn *conn, __u8 role)
506 BT_DBG("conn %p", conn);
508 if (!role && conn->link_mode & HCI_LM_MASTER)
511 if (!test_and_set_bit(HCI_CONN_RSWITCH_PEND, &conn->pend)) {
513 bacpy(&cp.bdaddr, &conn->dst);
515 hci_send_cmd(conn->hdev, HCI_OP_SWITCH_ROLE, sizeof(cp), &cp);
523 void hci_conn_enter_active_mode(struct hci_conn *conn)
525 struct hci_dev *hdev = conn->hdev;
527 BT_DBG("conn %p mode %d", conn, conn->mode);
532 if (conn->mode != HCI_CM_SNIFF || !conn->power_save)
535 if (!test_and_set_bit(HCI_CONN_MODE_CHANGE_PEND, &conn->pend)) {
537 cp.handle = cpu_to_le16(conn->handle);
543 mod_timer(&conn->idle_timer,
548 void hci_conn_enter_sniff_mode(struct hci_conn *conn)
550 struct hci_dev *hdev = conn->hdev;
552 BT_DBG("conn %p mode %d", conn, conn->mode);
557 if (!lmp_sniff_capable(hdev) || !lmp_sniff_capable(conn))
560 if (conn->mode != HCI_CM_ACTIVE || !(conn->link_policy & HCI_LP_SNIFF))
563 if (lmp_sniffsubr_capable(hdev) && lmp_sniffsubr_capable(conn)) {
565 cp.handle = cpu_to_le16(conn->handle);
572 if (!test_and_set_bit(HCI_CONN_MODE_CHANGE_PEND, &conn->pend)) {
574 cp.handle = cpu_to_le16(conn->handle);
608 struct hci_conn *conn;
614 conn = hci_conn_hash_lookup_state(hdev, ACL_LINK, BT_CONNECT2);
615 if (conn)
616 hci_acl_connect(conn);
621 void hci_conn_hold_device(struct hci_conn *conn)
623 atomic_inc(&conn->devref);
627 void hci_conn_put_device(struct hci_conn *conn)
629 if (atomic_dec_and_test(&conn->devref))
630 hci_conn_del_sysfs(conn);
692 struct hci_conn *conn;
699 conn = hci_conn_hash_lookup_ba(hdev, req.type, &req.bdaddr);
700 if (conn) {
701 bacpy(&ci.bdaddr, &conn->dst);
702 ci.handle = conn->handle;
703 ci.type = conn->type;
704 ci.out = conn->out;
705 ci.state = conn->state;
706 ci.link_mode = conn->link_mode;
710 if (!conn)
719 struct hci_conn *conn;
725 conn = hci_conn_hash_lookup_ba(hdev, ACL_LINK, &req.bdaddr);
726 if (conn)
727 req.type = conn->auth_type;
730 if (!conn)