Lines Matching refs:unit
68 static void hci_cmd_create_con(struct hci_unit *unit, uint8_t status);
164 hci_event(struct mbuf *m, struct hci_unit *unit)
181 device_xname(unit->hci_dev), hci_eventstr(hdr.event));
185 hci_event_command_status(unit, m);
189 hci_event_command_compl(unit, m);
193 hci_event_num_compl_pkts(unit, m);
197 hci_event_inquiry_result(unit, m);
201 hci_event_rssi_result(unit, m);
205 hci_event_extended_result(unit, m);
209 hci_event_con_compl(unit, m);
213 hci_event_discon_compl(unit, m);
217 hci_event_con_req(unit, m);
221 hci_event_auth_compl(unit, m);
225 hci_event_encryption_change(unit, m);
229 hci_event_change_con_link_key_compl(unit, m);
233 hci_event_read_clock_offset_compl(unit, m);
250 hci_event_command_status(struct hci_unit *unit, struct mbuf *m)
263 device_xname(unit->hci_dev),
268 hci_num_cmds(unit, ep.num_cmd_pkts);
275 hci_cmd_create_con(unit, ep.status);
282 aprint_error_dev(unit->hci_dev,
297 hci_event_command_compl(struct hci_unit *unit, struct mbuf *m)
309 device_xname(unit->hci_dev),
313 hci_num_cmds(unit, ep.num_cmd_pkts);
323 aprint_error_dev(unit->hci_dev,
334 hci_cmd_read_bdaddr(unit, m);
338 hci_cmd_read_buffer_size(unit, m);
342 hci_cmd_read_local_features(unit, m);
346 hci_cmd_read_local_extended_features(unit, m);
350 hci_cmd_read_local_ver(unit, m);
354 hci_cmd_read_local_commands(unit, m);
358 hci_cmd_read_encryption_key_size(unit, m);
362 hci_cmd_reset(unit, m);
380 hci_event_num_compl_pkts(struct hci_unit *unit, struct mbuf *m)
405 link = hci_link_lookup_handle(unit, handle);
416 aprint_error_dev(unit->hci_dev,
430 unit->hci_num_acl_pkts += num_acl;
431 unit->hci_num_sco_pkts += num_sco;
433 link = TAILQ_FIRST(&unit->hci_links);
434 while (link && (unit->hci_num_acl_pkts > 0 || unit->hci_num_sco_pkts > 0)) {
438 if (unit->hci_num_acl_pkts > 0 && link->hl_txqlen > 0)
441 if (unit->hci_num_sco_pkts > 0 && link->hl_txqlen > 0)
452 * keep a note of devices seen, so we know which unit to use
456 hci_event_inquiry_result(struct hci_unit *unit, struct mbuf *m)
482 memo = hci_memo_new(unit, &ir.bdaddr);
497 hci_event_rssi_result(struct hci_unit *unit, struct mbuf *m)
523 memo = hci_memo_new(unit, &rr.bdaddr);
538 hci_event_extended_result(struct hci_unit *unit, struct mbuf *m)
556 memo = hci_memo_new(unit, &ep.bdaddr);
572 hci_event_con_compl(struct hci_unit *unit, struct mbuf *m)
587 device_xname(unit->hci_dev),
593 link = hci_link_lookup_bdaddr(unit, &ep.bdaddr, ep.link_type);
627 hci_send_cmd(unit, HCI_CMD_DISCONNECT, &dp, sizeof(dp));
642 cp.settings = htole16(unit->hci_link_policy);
643 err = hci_send_cmd(unit, HCI_CMD_WRITE_LINK_POLICY_SETTINGS,
646 aprint_error_dev(unit->hci_dev,
649 err = hci_send_cmd(unit, HCI_CMD_READ_CLOCK_OFFSET,
652 aprint_error_dev(unit->hci_dev,
672 hci_event_discon_compl(struct hci_unit *unit, struct mbuf *m)
687 link = hci_link_lookup_handle(unit, HCI_CON_HANDLE(ep.con_handle));
699 hci_event_con_req(struct hci_unit *unit, struct mbuf *m)
720 link = hci_acl_newconn(unit, &ep.bdaddr);
722 link = hci_sco_newconn(unit, &ep.bdaddr);
729 hci_send_cmd(unit, HCI_CMD_REJECT_CON, &rp, sizeof(rp));
733 if (unit->hci_flags & BTF_MASTER)
738 hci_send_cmd(unit, HCI_CMD_ACCEPT_CON, &ap, sizeof(ap));
749 hci_event_auth_compl(struct hci_unit *unit, struct mbuf *m)
765 link = hci_link_lookup_handle(unit, ep.con_handle);
791 hci_event_encryption_change(struct hci_unit *unit, struct mbuf *m)
809 link = hci_link_lookup_handle(unit, con_handle);
816 } else if (unit->hci_cmds[20] & (1<<4)) {
817 err = hci_send_cmd(unit, HCI_CMD_READ_ENCRYPTION_KEY_SIZE,
845 hci_event_change_con_link_key_compl(struct hci_unit *unit, struct mbuf *m)
861 link = hci_link_lookup_handle(unit, ep.con_handle);
888 hci_event_read_clock_offset_compl(struct hci_unit *unit, struct mbuf *m)
903 link = hci_link_lookup_handle(unit, ep.con_handle);
915 hci_cmd_read_bdaddr(struct hci_unit *unit, struct mbuf *m)
928 if ((unit->hci_flags & BTF_INIT_BDADDR) == 0)
931 bdaddr_copy(&unit->hci_bdaddr, &rp.bdaddr);
933 unit->hci_flags &= ~BTF_INIT_BDADDR;
935 cv_broadcast(&unit->hci_init);
942 hci_cmd_read_buffer_size(struct hci_unit *unit, struct mbuf *m)
955 if ((unit->hci_flags & BTF_INIT_BUFFER_SIZE) == 0)
958 unit->hci_max_acl_size = le16toh(rp.max_acl_size);
959 unit->hci_num_acl_pkts = le16toh(rp.num_acl_pkts);
960 unit->hci_max_acl_pkts = le16toh(rp.num_acl_pkts);
961 unit->hci_max_sco_size = rp.max_sco_size;
962 unit->hci_num_sco_pkts = le16toh(rp.num_sco_pkts);
963 unit->hci_max_sco_pkts = le16toh(rp.num_sco_pkts);
965 unit->hci_flags &= ~BTF_INIT_BUFFER_SIZE;
967 cv_broadcast(&unit->hci_init);
974 hci_cmd_read_local_features(struct hci_unit *unit, struct mbuf *m)
987 if ((unit->hci_flags & BTF_INIT_FEATURES) == 0)
990 memcpy(unit->hci_feat0, rp.features, HCI_FEATURES_SIZE);
992 unit->hci_lmp_mask = 0;
995 unit->hci_lmp_mask |= HCI_LINK_POLICY_ENABLE_ROLE_SWITCH;
998 unit->hci_lmp_mask |= HCI_LINK_POLICY_ENABLE_HOLD_MODE;
1001 unit->hci_lmp_mask |= HCI_LINK_POLICY_ENABLE_SNIFF_MODE;
1004 unit->hci_lmp_mask |= HCI_LINK_POLICY_ENABLE_PARK_MODE;
1007 device_xname(unit->hci_dev), unit->hci_lmp_mask);
1010 unit->hci_acl_mask = HCI_PKT_DM1 | HCI_PKT_DH1;
1013 unit->hci_acl_mask |= HCI_PKT_DM3 | HCI_PKT_DH3;
1016 unit->hci_acl_mask |= HCI_PKT_DM5 | HCI_PKT_DH5;
1019 unit->hci_acl_mask |= HCI_PKT_2MBPS_DH1
1024 unit->hci_acl_mask |= HCI_PKT_3MBPS_DH1
1029 unit->hci_acl_mask |= HCI_PKT_2MBPS_DH3
1033 unit->hci_acl_mask |= HCI_PKT_2MBPS_DH5
1037 device_xname(unit->hci_dev), unit->hci_acl_mask);
1039 unit->hci_packet_type = unit->hci_acl_mask;
1042 unit->hci_sco_mask = 0;
1044 unit->hci_sco_mask |= HCI_PKT_HV1;
1047 unit->hci_sco_mask |= HCI_PKT_HV2;
1050 unit->hci_sco_mask |= HCI_PKT_HV3;
1053 unit->hci_sco_mask |= HCI_PKT_EV3;
1056 unit->hci_sco_mask |= HCI_PKT_EV4;
1059 unit->hci_sco_mask |= HCI_PKT_EV5;
1064 device_xname(unit->hci_dev), unit->hci_sco_mask);
1071 hci_send_cmd(unit, HCI_CMD_READ_LOCAL_EXTENDED_FEATURES,
1077 unit->hci_flags &= ~BTF_INIT_FEATURES;
1078 cv_broadcast(&unit->hci_init);
1085 hci_cmd_read_local_extended_features(struct hci_unit *unit, struct mbuf *m)
1098 if ((unit->hci_flags & BTF_INIT_FEATURES) == 0)
1101 DPRINTFN(1, "%s: page %d of %d\n", device_xname(unit->hci_dev),
1106 memcpy(unit->hci_feat2, rp.features, HCI_FEATURES_SIZE);
1110 memcpy(unit->hci_feat1, rp.features, HCI_FEATURES_SIZE);
1122 hci_send_cmd(unit, HCI_CMD_READ_LOCAL_EXTENDED_FEATURES,
1128 unit->hci_flags &= ~BTF_INIT_FEATURES;
1129 cv_broadcast(&unit->hci_init);
1138 hci_cmd_read_local_ver(struct hci_unit *unit, struct mbuf *m)
1151 if ((unit->hci_flags & BTF_INIT_COMMANDS) == 0)
1155 unit->hci_flags &= ~BTF_INIT_COMMANDS;
1156 cv_broadcast(&unit->hci_init);
1160 hci_send_cmd(unit, HCI_CMD_READ_LOCAL_COMMANDS, NULL, 0);
1167 hci_cmd_read_local_commands(struct hci_unit *unit, struct mbuf *m)
1180 if ((unit->hci_flags & BTF_INIT_COMMANDS) == 0)
1183 unit->hci_flags &= ~BTF_INIT_COMMANDS;
1184 memcpy(unit->hci_cmds, rp.commands, HCI_COMMANDS_SIZE);
1186 cv_broadcast(&unit->hci_init);
1193 hci_cmd_read_encryption_key_size(struct hci_unit *unit, struct mbuf *m)
1213 link = hci_link_lookup_handle(unit, rp.con_handle);
1244 * and reinitialise the unit.
1247 hci_cmd_reset(struct hci_unit *unit, struct mbuf *m)
1267 next = TAILQ_FIRST(&unit->hci_links);
1275 unit->hci_num_acl_pkts = 0;
1276 unit->hci_num_sco_pkts = 0;
1278 if (hci_send_cmd(unit, HCI_CMD_READ_BDADDR, NULL, 0))
1281 if (hci_send_cmd(unit, HCI_CMD_READ_BUFFER_SIZE, NULL, 0))
1284 if (hci_send_cmd(unit, HCI_CMD_READ_LOCAL_FEATURES, NULL, 0))
1287 if (hci_send_cmd(unit, HCI_CMD_READ_LOCAL_VER, NULL, 0))
1306 hci_cmd_create_con(struct hci_unit *unit, uint8_t status)
1310 TAILQ_FOREACH(link, &unit->hci_links, hl_next) {