Lines Matching full:unit

120  * Create new instance of HCI node (new unit)
126 ng_hci_unit_p unit = NULL; in ng_hci_constructor() local
128 unit = malloc(sizeof(*unit), M_NETGRAPH_HCI, M_WAITOK | M_ZERO); in ng_hci_constructor()
130 unit->node = node; in ng_hci_constructor()
131 unit->debug = NG_HCI_WARN_LEVEL; in ng_hci_constructor()
133 unit->link_policy_mask = 0xffff; /* Enable all supported modes */ in ng_hci_constructor()
134 unit->packet_mask = 0xffff; /* Enable all packet types */ in ng_hci_constructor()
135 unit->role_switch = 1; /* Enable role switch (if device supports it) */ in ng_hci_constructor()
145 NG_HCI_BUFF_CMD_SET(unit->buffer, 1); in ng_hci_constructor()
146 NG_HCI_BUFF_ACL_SET(unit->buffer, 1, 17, 1); in ng_hci_constructor()
147 NG_HCI_BUFF_SCO_SET(unit->buffer, 1, 10, 1); in ng_hci_constructor()
150 ng_callout_init(&unit->cmd_timo); in ng_hci_constructor()
151 NG_BT_MBUFQ_INIT(&unit->cmdq, NG_HCI_CMD_QUEUE_LEN); in ng_hci_constructor()
154 LIST_INIT(&unit->con_list); in ng_hci_constructor()
155 LIST_INIT(&unit->neighbors); in ng_hci_constructor()
163 NG_NODE_SET_PRIVATE(node, unit); in ng_hci_constructor()
175 ng_hci_unit_p unit = (ng_hci_unit_p) NG_NODE_PRIVATE(node); in ng_hci_shutdown() local
180 unit->node = NULL; in ng_hci_shutdown()
181 ng_hci_unit_clean(unit, 0x16 /* Connection terminated by local host */); in ng_hci_shutdown()
183 NG_BT_MBUFQ_DESTROY(&unit->cmdq); in ng_hci_shutdown()
185 bzero(unit, sizeof(*unit)); in ng_hci_shutdown()
186 free(unit, M_NETGRAPH_HCI); in ng_hci_shutdown()
192 * Give our OK for a hook to be added. Unit driver is connected to the driver
200 ng_hci_unit_p unit = (ng_hci_unit_p) NG_NODE_PRIVATE(node); in ng_hci_newhook() local
204 h = &unit->drv; in ng_hci_newhook()
206 h = &unit->acl; in ng_hci_newhook()
208 h = &unit->sco; in ng_hci_newhook()
210 h = &unit->raw; in ng_hci_newhook()
229 ng_hci_unit_p unit = (ng_hci_unit_p) NG_NODE_PRIVATE(NG_HOOK_NODE(hook)); in ng_hci_connect() local
231 if (hook != unit->drv) { in ng_hci_connect()
232 if (hook == unit->acl) { in ng_hci_connect()
235 } else if (hook == unit->sco) { in ng_hci_connect()
242 if (hook != unit->raw) in ng_hci_connect()
243 ng_send_fn(unit->node, hook, ng_hci_node_is_up, NULL,0); in ng_hci_connect()
245 unit->state |= NG_HCI_UNIT_CONNECTED; in ng_hci_connect()
257 ng_hci_unit_p unit = (ng_hci_unit_p) NG_NODE_PRIVATE(NG_HOOK_NODE(hook)); in ng_hci_disconnect() local
259 if (hook == unit->acl) in ng_hci_disconnect()
260 unit->acl = NULL; in ng_hci_disconnect()
261 else if (hook == unit->sco) in ng_hci_disconnect()
262 unit->sco = NULL; in ng_hci_disconnect()
263 else if (hook == unit->raw) in ng_hci_disconnect()
264 unit->raw = NULL; in ng_hci_disconnect()
265 else if (hook == unit->drv) { in ng_hci_disconnect()
266 unit->drv = NULL; in ng_hci_disconnect()
269 ng_hci_unit_clean(unit, 0x16); in ng_hci_disconnect()
270 unit->state &= ~(NG_HCI_UNIT_CONNECTED|NG_HCI_UNIT_INITED); in ng_hci_disconnect()
293 ng_hci_unit_p unit = (ng_hci_unit_p) NG_NODE_PRIVATE(node); in ng_hci_default_rcvmsg() local
313 NG_HCI_BUFF_CMD_GET(unit->buffer, cmd_avail); in ng_hci_default_rcvmsg()
315 NG_HCI_BUFF_ACL_AVAIL(unit->buffer, acl_avail); in ng_hci_default_rcvmsg()
316 NG_HCI_BUFF_ACL_TOTAL(unit->buffer, acl_total); in ng_hci_default_rcvmsg()
317 NG_HCI_BUFF_ACL_SIZE(unit->buffer, acl_size); in ng_hci_default_rcvmsg()
319 NG_HCI_BUFF_SCO_AVAIL(unit->buffer, sco_avail); in ng_hci_default_rcvmsg()
320 NG_HCI_BUFF_SCO_TOTAL(unit->buffer, sco_total); in ng_hci_default_rcvmsg()
321 NG_HCI_BUFF_SCO_SIZE(unit->buffer, sco_size); in ng_hci_default_rcvmsg()
329 unit->bdaddr.b[5], unit->bdaddr.b[4], in ng_hci_default_rcvmsg()
330 unit->bdaddr.b[3], unit->bdaddr.b[2], in ng_hci_default_rcvmsg()
331 unit->bdaddr.b[1], unit->bdaddr.b[0], in ng_hci_default_rcvmsg()
332 (unit->drv != NULL)? NG_HCI_HOOK_DRV : "", in ng_hci_default_rcvmsg()
333 (unit->acl != NULL)? NG_HCI_HOOK_ACL : "", in ng_hci_default_rcvmsg()
334 (unit->sco != NULL)? NG_HCI_HOOK_SCO : "", in ng_hci_default_rcvmsg()
335 (unit->raw != NULL)? NG_HCI_HOOK_RAW : "", in ng_hci_default_rcvmsg()
336 unit->state, in ng_hci_default_rcvmsg()
337 NG_BT_MBUFQ_LEN(&unit->cmdq), in ng_hci_default_rcvmsg()
353 NG_MKRESPONSE(rsp, msg, sizeof(unit->state), M_NOWAIT); in ng_hci_default_rcvmsg()
359 *((ng_hci_node_state_ep *)(rsp->data)) = unit->state; in ng_hci_default_rcvmsg()
364 if (bcmp(&unit->bdaddr, NG_HCI_BDADDR_ANY, in ng_hci_default_rcvmsg()
370 unit->state |= NG_HCI_UNIT_INITED; in ng_hci_default_rcvmsg()
372 ng_hci_node_is_up(unit->node, unit->acl, NULL, 0); in ng_hci_default_rcvmsg()
373 ng_hci_node_is_up(unit->node, unit->sco, NULL, 0); in ng_hci_default_rcvmsg()
378 NG_MKRESPONSE(rsp, msg, sizeof(unit->debug), M_NOWAIT); in ng_hci_default_rcvmsg()
384 *((ng_hci_node_debug_ep *)(rsp->data)) = unit->debug; in ng_hci_default_rcvmsg()
394 unit->debug = *((ng_hci_node_debug_ep *)(msg->data)); in ng_hci_default_rcvmsg()
410 NG_HCI_BUFF_CMD_GET(unit->buffer, ep->cmd_free); in ng_hci_default_rcvmsg()
411 NG_HCI_BUFF_ACL_AVAIL(unit->buffer, ep->acl_free); in ng_hci_default_rcvmsg()
412 NG_HCI_BUFF_ACL_TOTAL(unit->buffer, ep->acl_pkts); in ng_hci_default_rcvmsg()
413 NG_HCI_BUFF_ACL_SIZE(unit->buffer, ep->acl_size); in ng_hci_default_rcvmsg()
414 NG_HCI_BUFF_SCO_AVAIL(unit->buffer, ep->sco_free); in ng_hci_default_rcvmsg()
415 NG_HCI_BUFF_SCO_TOTAL(unit->buffer, ep->sco_pkts); in ng_hci_default_rcvmsg()
416 NG_HCI_BUFF_SCO_SIZE(unit->buffer, ep->sco_size); in ng_hci_default_rcvmsg()
427 bcopy(&unit->bdaddr, rsp->data, sizeof(bdaddr_t)); in ng_hci_default_rcvmsg()
432 NG_MKRESPONSE(rsp,msg,sizeof(unit->features),M_NOWAIT); in ng_hci_default_rcvmsg()
438 bcopy(&unit->features,rsp->data,sizeof(unit->features)); in ng_hci_default_rcvmsg()
443 NG_MKRESPONSE(rsp, msg, sizeof(unit->stat), M_NOWAIT); in ng_hci_default_rcvmsg()
449 bcopy(&unit->stat, rsp->data, sizeof(unit->stat)); in ng_hci_default_rcvmsg()
454 NG_HCI_STAT_RESET(unit->stat); in ng_hci_default_rcvmsg()
459 ng_hci_flush_neighbor_cache(unit); in ng_hci_default_rcvmsg()
470 for (n = LIST_FIRST(&unit->neighbors); n != NULL; ) { in ng_hci_default_rcvmsg()
496 LIST_FOREACH(n, &unit->neighbors, next) { in ng_hci_default_rcvmsg()
523 LIST_FOREACH(c, &unit->con_list, next) in ng_hci_default_rcvmsg()
541 LIST_FOREACH(c, &unit->con_list, next) { in ng_hci_default_rcvmsg()
564 NG_MKRESPONSE(rsp, msg, sizeof(unit->link_policy_mask), in ng_hci_default_rcvmsg()
572 unit->link_policy_mask; in ng_hci_default_rcvmsg()
583 unit->link_policy_mask = in ng_hci_default_rcvmsg()
590 NG_MKRESPONSE(rsp, msg, sizeof(unit->packet_mask), in ng_hci_default_rcvmsg()
598 unit->packet_mask; in ng_hci_default_rcvmsg()
609 unit->packet_mask = in ng_hci_default_rcvmsg()
615 NG_MKRESPONSE(rsp, msg, sizeof(unit->role_switch), in ng_hci_default_rcvmsg()
623 unit->role_switch; in ng_hci_default_rcvmsg()
634 unit->role_switch = in ng_hci_default_rcvmsg()
664 ng_hci_unit_p unit = (ng_hci_unit_p) NG_NODE_PRIVATE(node); in ng_hci_upper_rcvmsg() local
671 error = ng_hci_lp_con_req(unit, item, lasthook); in ng_hci_upper_rcvmsg()
675 error = ng_hci_lp_discon_req(unit, item, lasthook); in ng_hci_upper_rcvmsg()
679 error = ng_hci_lp_con_rsp(unit, item, lasthook); in ng_hci_upper_rcvmsg()
683 error = ng_hci_lp_qos_req(unit, item, lasthook); in ng_hci_upper_rcvmsg()
708 ng_hci_unit_p unit = (ng_hci_unit_p) NG_NODE_PRIVATE(NG_HOOK_NODE(hook)); in ng_hci_drv_rcvdata() local
716 NG_HCI_STAT_BYTES_RECV(unit->stat, m->m_pkthdr.len); in ng_hci_drv_rcvdata()
719 ng_hci_mtap(unit, m); in ng_hci_drv_rcvdata()
729 NG_HCI_STAT_ACL_RECV(unit->stat); in ng_hci_drv_rcvdata()
731 if ((unit->state & NG_HCI_UNIT_READY) != NG_HCI_UNIT_READY || in ng_hci_drv_rcvdata()
732 unit->acl == NULL || NG_HOOK_NOT_VALID(unit->acl)) { in ng_hci_drv_rcvdata()
735 __func__, NG_NODE_NAME(unit->node), in ng_hci_drv_rcvdata()
736 unit->state, unit->acl); in ng_hci_drv_rcvdata()
740 NG_FWD_ITEM_HOOK(error, item, unit->acl); in ng_hci_drv_rcvdata()
744 NG_HCI_STAT_SCO_RECV(unit->stat); in ng_hci_drv_rcvdata()
746 if ((unit->state & NG_HCI_UNIT_READY) != NG_HCI_UNIT_READY || in ng_hci_drv_rcvdata()
747 unit->sco == NULL || NG_HOOK_NOT_VALID(unit->sco)) { in ng_hci_drv_rcvdata()
750 __func__, NG_NODE_NAME(unit->node), in ng_hci_drv_rcvdata()
751 unit->state, unit->sco); in ng_hci_drv_rcvdata()
755 NG_FWD_ITEM_HOOK(error, item, unit->sco); in ng_hci_drv_rcvdata()
759 NG_HCI_STAT_EVNT_RECV(unit->stat); in ng_hci_drv_rcvdata()
765 error = ng_hci_process_event(unit, m); in ng_hci_drv_rcvdata()
771 __func__, NG_NODE_NAME(unit->node), in ng_hci_drv_rcvdata()
791 ng_hci_unit_p unit = (ng_hci_unit_p) NG_NODE_PRIVATE(NG_HOOK_NODE(hook)); in ng_hci_acl_rcvdata() local
797 NG_HCI_BUFF_ACL_SIZE(unit->buffer, size); in ng_hci_acl_rcvdata()
804 __func__, NG_NODE_NAME(unit->node), in ng_hci_acl_rcvdata()
814 __func__, NG_NODE_NAME(unit->node), in ng_hci_acl_rcvdata()
834 __func__, NG_NODE_NAME(unit->node), in ng_hci_acl_rcvdata()
842 con = ng_hci_con_by_handle(unit, con_handle); in ng_hci_acl_rcvdata()
846 "con_handle=%d\n", __func__, NG_NODE_NAME(unit->node), con_handle); in ng_hci_acl_rcvdata()
855 "link_type=%d\n", __func__, NG_NODE_NAME(unit->node), in ng_hci_acl_rcvdata()
865 "con_handle=%d\n", __func__, NG_NODE_NAME(unit->node), in ng_hci_acl_rcvdata()
875 __func__, NG_NODE_NAME(unit->node), con_handle, in ng_hci_acl_rcvdata()
890 ng_hci_send_data(unit); in ng_hci_acl_rcvdata()
908 ng_hci_unit_p unit = (ng_hci_unit_p) NG_NODE_PRIVATE(NG_HOOK_NODE(hook)); in ng_hci_sco_rcvdata() local
914 NG_HCI_BUFF_SCO_SIZE(unit->buffer, size); in ng_hci_sco_rcvdata()
922 __func__, NG_NODE_NAME(unit->node), in ng_hci_sco_rcvdata()
933 __func__, NG_NODE_NAME(unit->node), in ng_hci_sco_rcvdata()
953 __func__, NG_NODE_NAME(unit->node), in ng_hci_sco_rcvdata()
961 con = ng_hci_con_by_handle(unit, con_handle); in ng_hci_sco_rcvdata()
965 "con_handle=%d\n", __func__, NG_NODE_NAME(unit->node), con_handle); in ng_hci_sco_rcvdata()
974 "link_type=%d\n", __func__, NG_NODE_NAME(unit->node), in ng_hci_sco_rcvdata()
984 "con_handle=%d\n", __func__, NG_NODE_NAME(unit->node), in ng_hci_sco_rcvdata()
994 __func__, NG_NODE_NAME(unit->node), con_handle, in ng_hci_sco_rcvdata()
1009 ng_hci_send_data(unit); in ng_hci_sco_rcvdata()
1027 ng_hci_unit_p unit = (ng_hci_unit_p) NG_NODE_PRIVATE(NG_HOOK_NODE(hook)); in ng_hci_raw_rcvdata() local
1038 __func__, NG_NODE_NAME(unit->node), in ng_hci_raw_rcvdata()
1048 __func__, NG_NODE_NAME(unit->node), m->m_pkthdr.len); in ng_hci_raw_rcvdata()
1064 __func__, NG_NODE_NAME(unit->node), m->m_pkthdr.len, in ng_hci_raw_rcvdata()
1074 __func__, NG_NODE_NAME(unit->node)); in ng_hci_raw_rcvdata()
1080 if (NG_BT_MBUFQ_FULL(&unit->cmdq)) { in ng_hci_raw_rcvdata()
1083 __func__, NG_NODE_NAME(unit->node), m->m_pkthdr.len, in ng_hci_raw_rcvdata()
1084 NG_BT_MBUFQ_LEN(&unit->cmdq)); in ng_hci_raw_rcvdata()
1086 NG_BT_MBUFQ_DROP(&unit->cmdq); in ng_hci_raw_rcvdata()
1093 NG_BT_MBUFQ_ENQUEUE(&unit->cmdq, m); in ng_hci_raw_rcvdata()
1096 if (!(unit->state & NG_HCI_UNIT_COMMAND_PENDING)) in ng_hci_raw_rcvdata()
1097 error = ng_hci_send_command(unit); in ng_hci_raw_rcvdata()