Lines Matching +full:protocol +full:- +full:node
5 /*-
6 * SPDX-License-Identifier: BSD-2-Clause
56 ** Lower Layer Protocol (HCI) Interface module
61 * Send LP_ConnectReq event to the lower layer protocol. Create new connection
79 "%s: %s - unexpected LP_ConnectReq event. " \ in ng_l2cap_lp_con_req()
81 __func__, NG_NODE_NAME(l2cap->node), con->state, in ng_l2cap_lp_con_req()
82 con->con_handle); in ng_l2cap_lp_con_req()
87 /* Check if lower layer protocol is still connected */ in ng_l2cap_lp_con_req()
88 if (l2cap->hci == NULL || NG_HOOK_NOT_VALID(l2cap->hci)) { in ng_l2cap_lp_con_req()
90 "%s: %s - hook \"%s\" is not connected or valid\n", in ng_l2cap_lp_con_req()
91 __func__, NG_NODE_NAME(l2cap->node), NG_L2CAP_HOOK_HCI); in ng_l2cap_lp_con_req()
110 ep = (ng_hci_lp_con_req_ep *) (msg->data); in ng_l2cap_lp_con_req()
111 bcopy(bdaddr, &ep->bdaddr, sizeof(ep->bdaddr)); in ng_l2cap_lp_con_req()
112 ep->link_type = type; in ng_l2cap_lp_con_req()
114 con->flags |= NG_L2CAP_CON_OUTGOING; in ng_l2cap_lp_con_req()
115 con->state = NG_L2CAP_W4_LP_CON_CFM; in ng_l2cap_lp_con_req()
118 NG_SEND_MSG_HOOK(error, l2cap->node, msg, l2cap->hci, 0); in ng_l2cap_lp_con_req()
134 * Process LP_ConnectCfm event from the lower layer protocol. It could be
147 if (msg->header.arglen != sizeof(*ep)) { in ng_l2cap_lp_con_cfm()
149 "%s: %s - invalid LP_ConnectCfm[Neg] message size\n", in ng_l2cap_lp_con_cfm()
150 __func__, NG_NODE_NAME(l2cap->node)); in ng_l2cap_lp_con_cfm()
155 ep = (ng_hci_lp_con_cfm_ep *) (msg->data); in ng_l2cap_lp_con_cfm()
157 con = ng_l2cap_con_by_addr(l2cap, &ep->bdaddr, ep->link_type); in ng_l2cap_lp_con_cfm()
160 "%s: %s - unexpected LP_ConnectCfm event. Connection does not exist\n", in ng_l2cap_lp_con_cfm()
161 __func__, NG_NODE_NAME(l2cap->node)); in ng_l2cap_lp_con_cfm()
167 if (con->state != NG_L2CAP_W4_LP_CON_CFM) { in ng_l2cap_lp_con_cfm()
169 "%s: %s - unexpected LP_ConnectCfm event. " \ in ng_l2cap_lp_con_cfm()
171 __func__, NG_NODE_NAME(l2cap->node), con->state, in ng_l2cap_lp_con_cfm()
172 con->con_handle); in ng_l2cap_lp_con_cfm()
187 if (ep->status == 0) { in ng_l2cap_lp_con_cfm()
188 con->state = NG_L2CAP_CON_OPEN; in ng_l2cap_lp_con_cfm()
189 con->con_handle = ep->con_handle; in ng_l2cap_lp_con_cfm()
191 } else /* Negative confirmation - remove connection descriptor */ in ng_l2cap_lp_con_cfm()
192 ng_l2cap_con_fail(con, ep->status); in ng_l2cap_lp_con_cfm()
198 * Process LP_ConnectInd event from the lower layer protocol. This is a good
216 if (msg->header.arglen != sizeof(*ep)) { in ng_l2cap_lp_con_ind()
218 "%s: %s - invalid LP_ConnectInd message size\n", in ng_l2cap_lp_con_ind()
219 __func__, NG_NODE_NAME(l2cap->node)); in ng_l2cap_lp_con_ind()
224 ep = (ng_hci_lp_con_ind_ep *) (msg->data); in ng_l2cap_lp_con_ind()
227 con = ng_l2cap_con_by_addr(l2cap, &ep->bdaddr, ep->link_type); in ng_l2cap_lp_con_ind()
230 "%s: %s - unexpected LP_ConnectInd event. " \ in ng_l2cap_lp_con_ind()
232 __func__, NG_NODE_NAME(l2cap->node), con->state, in ng_l2cap_lp_con_ind()
233 con->con_handle); in ng_l2cap_lp_con_ind()
238 /* Check if lower layer protocol is still connected */ in ng_l2cap_lp_con_ind()
239 if (l2cap->hci == NULL || NG_HOOK_NOT_VALID(l2cap->hci)) { in ng_l2cap_lp_con_ind()
241 "%s: %s - hook \"%s\" is not connected or valid", in ng_l2cap_lp_con_ind()
242 __func__, NG_NODE_NAME(l2cap->node), NG_L2CAP_HOOK_HCI); in ng_l2cap_lp_con_ind()
248 con = ng_l2cap_new_con(l2cap, &ep->bdaddr, ep->link_type); in ng_l2cap_lp_con_ind()
261 rp = (ng_hci_lp_con_rsp_ep *)(rsp->data); in ng_l2cap_lp_con_ind()
262 rp->status = 0x00; /* accept connection */ in ng_l2cap_lp_con_ind()
263 rp->link_type = NG_HCI_LINK_ACL; in ng_l2cap_lp_con_ind()
264 bcopy(&ep->bdaddr, &rp->bdaddr, sizeof(rp->bdaddr)); in ng_l2cap_lp_con_ind()
266 con->state = NG_L2CAP_W4_LP_CON_CFM; in ng_l2cap_lp_con_ind()
269 NG_SEND_MSG_HOOK(error, l2cap->node, rsp, l2cap->hci, 0); in ng_l2cap_lp_con_ind()
285 * Process LP_DisconnectInd event from the lower layer protocol. We have been
286 * disconnected from the remote unit. So notify the upper layer protocol.
297 if (msg->header.arglen != sizeof(*ep)) { in ng_l2cap_lp_discon_ind()
299 "%s: %s - invalid LP_DisconnectInd message size\n", in ng_l2cap_lp_discon_ind()
300 __func__, NG_NODE_NAME(l2cap->node)); in ng_l2cap_lp_discon_ind()
305 ep = (ng_hci_lp_discon_ind_ep *) (msg->data); in ng_l2cap_lp_discon_ind()
308 con = ng_l2cap_con_by_handle(l2cap, ep->con_handle); in ng_l2cap_lp_discon_ind()
311 "%s: %s - unexpected LP_DisconnectInd event. " \ in ng_l2cap_lp_discon_ind()
313 __func__, NG_NODE_NAME(l2cap->node), ep->con_handle); in ng_l2cap_lp_discon_ind()
318 /* XXX Verify connection state -- do we need to check this? */ in ng_l2cap_lp_discon_ind()
319 if (con->state != NG_L2CAP_CON_OPEN) { in ng_l2cap_lp_discon_ind()
321 "%s: %s - unexpected LP_DisconnectInd event. " \ in ng_l2cap_lp_discon_ind()
323 __func__, NG_NODE_NAME(l2cap->node), con->state, in ng_l2cap_lp_discon_ind()
324 con->con_handle); in ng_l2cap_lp_discon_ind()
336 if (con->flags & NG_L2CAP_CON_AUTO_DISCON_TIMO) in ng_l2cap_lp_discon_ind()
340 ng_l2cap_con_fail(con, ep->reason); in ng_l2cap_lp_discon_ind()
346 * Send LP_QoSSetupReq event to the lower layer protocol
362 "%s: %s - unexpected LP_QoSSetupReq event. " \ in ng_l2cap_lp_qos_req()
364 __func__, NG_NODE_NAME(l2cap->node), con_handle); in ng_l2cap_lp_qos_req()
370 if (con->state != NG_L2CAP_CON_OPEN) { in ng_l2cap_lp_qos_req()
372 "%s: %s - unexpected LP_QoSSetupReq event. " \ in ng_l2cap_lp_qos_req()
374 __func__, NG_NODE_NAME(l2cap->node), con->state, in ng_l2cap_lp_qos_req()
375 con->con_handle); in ng_l2cap_lp_qos_req()
380 /* Check if lower layer protocol is still connected */ in ng_l2cap_lp_qos_req()
381 if (l2cap->hci == NULL || NG_HOOK_NOT_VALID(l2cap->hci)) { in ng_l2cap_lp_qos_req()
383 "%s: %s - hook \"%s\" is not connected or valid", in ng_l2cap_lp_qos_req()
384 __func__, NG_NODE_NAME(l2cap->node), NG_L2CAP_HOOK_HCI); in ng_l2cap_lp_qos_req()
395 ep = (ng_hci_lp_qos_req_ep *) (msg->data); in ng_l2cap_lp_qos_req()
396 ep->con_handle = con_handle; in ng_l2cap_lp_qos_req()
397 ep->flags = flow->flags; in ng_l2cap_lp_qos_req()
398 ep->service_type = flow->service_type; in ng_l2cap_lp_qos_req()
399 ep->token_rate = flow->token_rate; in ng_l2cap_lp_qos_req()
400 ep->peak_bandwidth = flow->peak_bandwidth; in ng_l2cap_lp_qos_req()
401 ep->latency = flow->latency; in ng_l2cap_lp_qos_req()
402 ep->delay_variation = flow->delay_variation; in ng_l2cap_lp_qos_req()
404 NG_SEND_MSG_HOOK(error, l2cap->node, msg, l2cap->hci, 0); in ng_l2cap_lp_qos_req()
410 * Process LP_QoSSetupCfm from the lower layer protocol
420 if (msg->header.arglen != sizeof(*ep)) { in ng_l2cap_lp_qos_cfm()
422 "%s: %s - invalid LP_QoSSetupCfm[Neg] message size\n", in ng_l2cap_lp_qos_cfm()
423 __func__, NG_NODE_NAME(l2cap->node)); in ng_l2cap_lp_qos_cfm()
428 ep = (ng_hci_lp_qos_cfm_ep *) (msg->data); in ng_l2cap_lp_qos_cfm()
435 * Process LP_QoSViolationInd event from the lower layer protocol. Lower
436 * layer protocol has detected QoS Violation, so we MUST notify the
448 if (msg->header.arglen != sizeof(*ep)) { in ng_l2cap_lp_qos_ind()
450 "%s: %s - invalid LP_QoSViolation message size\n", in ng_l2cap_lp_qos_ind()
451 __func__, NG_NODE_NAME(l2cap->node)); in ng_l2cap_lp_qos_ind()
456 ep = (ng_hci_lp_qos_ind_ep *) (msg->data); in ng_l2cap_lp_qos_ind()
459 con = ng_l2cap_con_by_handle(l2cap, ep->con_handle); in ng_l2cap_lp_qos_ind()
462 "%s: %s - unexpected LP_QoSViolationInd event. " \ in ng_l2cap_lp_qos_ind()
464 __func__, NG_NODE_NAME(l2cap->node), ep->con_handle); in ng_l2cap_lp_qos_ind()
470 if (con->state != NG_L2CAP_CON_OPEN) { in ng_l2cap_lp_qos_ind()
472 "%s: %s - unexpected LP_QoSViolationInd event. " \ in ng_l2cap_lp_qos_ind()
474 __func__, NG_NODE_NAME(l2cap->node), con->state, in ng_l2cap_lp_qos_ind()
475 con->con_handle); in ng_l2cap_lp_qos_ind()
493 if (msg->header.arglen != sizeof(*ep)) { in ng_l2cap_lp_enc_change()
495 "%s: %s - invalid LP_ENCChange message size\n", in ng_l2cap_lp_enc_change()
496 __func__, NG_NODE_NAME(l2cap->node)); in ng_l2cap_lp_enc_change()
501 ep = (ng_hci_lp_enc_change_ep *) (msg->data); in ng_l2cap_lp_enc_change()
504 con = ng_l2cap_con_by_handle(l2cap, ep->con_handle); in ng_l2cap_lp_enc_change()
507 "%s: %s - unexpected LP_Enc Change Event. " \ in ng_l2cap_lp_enc_change()
509 __func__, NG_NODE_NAME(l2cap->node), ep->con_handle); in ng_l2cap_lp_enc_change()
515 if (con->state != NG_L2CAP_CON_OPEN) { in ng_l2cap_lp_enc_change()
517 "%s: %s - unexpected ENC_CHANGE event. " \ in ng_l2cap_lp_enc_change()
519 __func__, NG_NODE_NAME(l2cap->node), con->state, in ng_l2cap_lp_enc_change()
520 con->con_handle); in ng_l2cap_lp_enc_change()
525 con->encryption = ep->status; in ng_l2cap_lp_enc_change()
527 LIST_FOREACH(ch, &l2cap->chan_list, next){ in ng_l2cap_lp_enc_change()
528 if((ch->con->con_handle == ep->con_handle) && in ng_l2cap_lp_enc_change()
529 (ch->con->linktype == ep->link_type)) in ng_l2cap_lp_enc_change()
530 ng_l2cap_l2ca_encryption_change(ch, ep->status); in ng_l2cap_lp_enc_change()
545 ng_l2cap_p l2cap = con->l2cap; in ng_l2cap_lp_send()
549 …int len, flag = (con->linktype == NG_HCI_LINK_ACL) ? NG_HCI_PACKET_START : NG_HCI_LE_PACKET_STA… in ng_l2cap_lp_send()
551 KASSERT((con->tx_pkt == NULL), in ng_l2cap_lp_send()
552 ("%s: %s - another packet pending?!\n", __func__, NG_NODE_NAME(l2cap->node))); in ng_l2cap_lp_send()
553 KASSERT((l2cap->pkt_size > 0), in ng_l2cap_lp_send()
554 ("%s: %s - invalid l2cap->pkt_size?!\n", __func__, NG_NODE_NAME(l2cap->node))); in ng_l2cap_lp_send()
560 "%s: %s - ng_l2cap_prepend(%zd) failed\n", in ng_l2cap_lp_send()
561 __func__, NG_NODE_NAME(l2cap->node), in ng_l2cap_lp_send()
568 l2cap_hdr->length = htole16(m0->m_pkthdr.len - sizeof(*l2cap_hdr)); in ng_l2cap_lp_send()
569 l2cap_hdr->dcid = htole16(dcid); in ng_l2cap_lp_send()
581 len = m0->m_pkthdr.len; in ng_l2cap_lp_send()
582 if (len > l2cap->pkt_size) { in ng_l2cap_lp_send()
583 m = m_split(m0, l2cap->pkt_size, M_NOWAIT); in ng_l2cap_lp_send()
586 "%s: %s - m_split(%d) failed\n", __func__, NG_NODE_NAME(l2cap->node), in ng_l2cap_lp_send()
587 l2cap->pkt_size); in ng_l2cap_lp_send()
591 len = l2cap->pkt_size; in ng_l2cap_lp_send()
598 "%s: %s - ng_l2cap_prepend(%zd) failed\n", in ng_l2cap_lp_send()
599 __func__, NG_NODE_NAME(l2cap->node), in ng_l2cap_lp_send()
605 acl_hdr->type = NG_HCI_ACL_DATA_PKT; in ng_l2cap_lp_send()
606 acl_hdr->length = htole16(len); in ng_l2cap_lp_send()
607 acl_hdr->con_handle = htole16(NG_HCI_MK_CON_HANDLE( in ng_l2cap_lp_send()
608 con->con_handle, flag, 0)); in ng_l2cap_lp_send()
611 m0->m_nextpkt = NULL; in ng_l2cap_lp_send()
613 if (con->tx_pkt == NULL) in ng_l2cap_lp_send()
614 con->tx_pkt = m_last = m0; in ng_l2cap_lp_send()
616 m_last->m_nextpkt = m0; in ng_l2cap_lp_send()
621 "%s: %s - attaching ACL packet, con_handle=%d, PB=%#x, length=%d\n", in ng_l2cap_lp_send()
622 __func__, NG_NODE_NAME(l2cap->node), con->con_handle, in ng_l2cap_lp_send()
635 while (con->tx_pkt != NULL) { in ng_l2cap_lp_send()
636 m = con->tx_pkt->m_nextpkt; in ng_l2cap_lp_send()
637 m_freem(con->tx_pkt); in ng_l2cap_lp_send()
638 con->tx_pkt = m; in ng_l2cap_lp_send()
668 if (m->m_pkthdr.len < sizeof(*acl_hdr)) { in ng_l2cap_lp_receive()
670 "%s: %s - invalid ACL data packet. Packet too small, length=%d\n", in ng_l2cap_lp_receive()
671 __func__, NG_NODE_NAME(l2cap->node), m->m_pkthdr.len); in ng_l2cap_lp_receive()
685 acl_hdr->con_handle = le16toh(acl_hdr->con_handle); in ng_l2cap_lp_receive()
686 con_handle = NG_HCI_CON_HANDLE(acl_hdr->con_handle); in ng_l2cap_lp_receive()
687 pb = NG_HCI_PB_FLAG(acl_hdr->con_handle); in ng_l2cap_lp_receive()
688 length = le16toh(acl_hdr->length); in ng_l2cap_lp_receive()
691 "%s: %s - got ACL data packet, con_handle=%d, PB=%#x, length=%d\n", in ng_l2cap_lp_receive()
692 __func__, NG_NODE_NAME(l2cap->node), con_handle, pb, length); in ng_l2cap_lp_receive()
698 "%s: %s - unexpected ACL data packet. " \ in ng_l2cap_lp_receive()
700 __func__, NG_NODE_NAME(l2cap->node), con_handle); in ng_l2cap_lp_receive()
706 if (con->state != NG_L2CAP_CON_OPEN) { in ng_l2cap_lp_receive()
708 "%s: %s - unexpected ACL data packet. Invalid connection state=%d\n", in ng_l2cap_lp_receive()
709 __func__, NG_NODE_NAME(l2cap->node), con->state); in ng_l2cap_lp_receive()
717 if (con->rx_pkt != NULL) { in ng_l2cap_lp_receive()
719 "%s: %s - dropping incomplete L2CAP packet, got %d bytes, want %d bytes\n", in ng_l2cap_lp_receive()
720 __func__, NG_NODE_NAME(l2cap->node), in ng_l2cap_lp_receive()
721 con->rx_pkt->m_pkthdr.len, con->rx_pkt_len); in ng_l2cap_lp_receive()
722 NG_FREE_M(con->rx_pkt); in ng_l2cap_lp_receive()
723 con->rx_pkt_len = 0; in ng_l2cap_lp_receive()
727 if (m->m_pkthdr.len < sizeof(*l2cap_hdr)) { in ng_l2cap_lp_receive()
729 "%s: %s - invalid L2CAP packet start fragment. Packet too small, length=%d\n", in ng_l2cap_lp_receive()
730 __func__, NG_NODE_NAME(l2cap->node), in ng_l2cap_lp_receive()
731 m->m_pkthdr.len); in ng_l2cap_lp_receive()
743 "%s: %s - staring new L2CAP packet, con_handle=%d, length=%d\n", in ng_l2cap_lp_receive()
744 __func__, NG_NODE_NAME(l2cap->node), con_handle, in ng_l2cap_lp_receive()
745 le16toh(l2cap_hdr->length)); in ng_l2cap_lp_receive()
748 con->rx_pkt = m; in ng_l2cap_lp_receive()
749 con->rx_pkt_len = le16toh(l2cap_hdr->length)+sizeof(*l2cap_hdr); in ng_l2cap_lp_receive()
751 if (con->rx_pkt == NULL) { in ng_l2cap_lp_receive()
753 "%s: %s - unexpected ACL data packet fragment, con_handle=%d\n", in ng_l2cap_lp_receive()
754 __func__, NG_NODE_NAME(l2cap->node), in ng_l2cap_lp_receive()
755 con->con_handle); in ng_l2cap_lp_receive()
760 m_cat(con->rx_pkt, m); in ng_l2cap_lp_receive()
761 con->rx_pkt->m_pkthdr.len += length; in ng_l2cap_lp_receive()
764 "%s: %s - invalid ACL data packet. Invalid PB flag=%#x\n", in ng_l2cap_lp_receive()
765 __func__, NG_NODE_NAME(l2cap->node), pb); in ng_l2cap_lp_receive()
770 con->rx_pkt_len -= length; in ng_l2cap_lp_receive()
771 if (con->rx_pkt_len < 0) { in ng_l2cap_lp_receive()
773 "%s: %s - packet length mismatch. Got %d bytes, offset %d bytes\n", in ng_l2cap_lp_receive()
774 __func__, NG_NODE_NAME(l2cap->node), in ng_l2cap_lp_receive()
775 con->rx_pkt->m_pkthdr.len, con->rx_pkt_len); in ng_l2cap_lp_receive()
776 NG_FREE_M(con->rx_pkt); in ng_l2cap_lp_receive()
777 con->rx_pkt_len = 0; in ng_l2cap_lp_receive()
778 } else if (con->rx_pkt_len == 0) { in ng_l2cap_lp_receive()
781 con->rx_pkt = NULL; in ng_l2cap_lp_receive()
782 con->rx_pkt_len = 0; in ng_l2cap_lp_receive()
800 ng_l2cap_p l2cap = con->l2cap; in ng_l2cap_lp_deliver()
805 if (con->state != NG_L2CAP_CON_OPEN) in ng_l2cap_lp_deliver()
808 if (con->tx_pkt == NULL) in ng_l2cap_lp_deliver()
811 if (con->tx_pkt == NULL) in ng_l2cap_lp_deliver()
814 /* Check if lower layer protocol is still connected */ in ng_l2cap_lp_deliver()
815 if (l2cap->hci == NULL || NG_HOOK_NOT_VALID(l2cap->hci)) { in ng_l2cap_lp_deliver()
817 "%s: %s - hook \"%s\" is not connected or valid", in ng_l2cap_lp_deliver()
818 __func__, NG_NODE_NAME(l2cap->node), NG_L2CAP_HOOK_HCI); in ng_l2cap_lp_deliver()
824 while (con->pending < con->l2cap->num_pkts && con->tx_pkt != NULL) { in ng_l2cap_lp_deliver()
825 m = con->tx_pkt; in ng_l2cap_lp_deliver()
826 con->tx_pkt = con->tx_pkt->m_nextpkt; in ng_l2cap_lp_deliver()
827 m->m_nextpkt = NULL; in ng_l2cap_lp_deliver()
829 if(m->m_flags &M_PROTO2){ in ng_l2cap_lp_deliver()
830 ng_l2cap_lp_receive(con->l2cap, m); in ng_l2cap_lp_deliver()
834 "%s: %s - sending ACL packet, con_handle=%d, len=%d\n", in ng_l2cap_lp_deliver()
835 __func__, NG_NODE_NAME(l2cap->node), con->con_handle, in ng_l2cap_lp_deliver()
836 m->m_pkthdr.len); in ng_l2cap_lp_deliver()
838 NG_SEND_DATA_ONLY(error, l2cap->hci, m); in ng_l2cap_lp_deliver()
841 "%s: %s - could not send ACL data packet, con_handle=%d, error=%d\n", in ng_l2cap_lp_deliver()
842 __func__, NG_NODE_NAME(l2cap->node), in ng_l2cap_lp_deliver()
843 con->con_handle, error); in ng_l2cap_lp_deliver()
848 con->pending ++; in ng_l2cap_lp_deliver()
852 "%s: %s - %d ACL packets have been sent, con_handle=%d\n", in ng_l2cap_lp_deliver()
853 __func__, NG_NODE_NAME(l2cap->node), con->pending, in ng_l2cap_lp_deliver()
854 con->con_handle); in ng_l2cap_lp_deliver()
859 while (con->tx_pkt != NULL) { in ng_l2cap_lp_deliver()
860 m = con->tx_pkt->m_nextpkt; in ng_l2cap_lp_deliver()
861 m_freem(con->tx_pkt); in ng_l2cap_lp_deliver()
862 con->tx_pkt = m; in ng_l2cap_lp_deliver()
873 ng_l2cap_process_lp_timeout(node_p node, hook_p hook, void *arg1, int con_handle) in ng_l2cap_process_lp_timeout() argument
878 if (NG_NODE_NOT_VALID(node)) { in ng_l2cap_process_lp_timeout()
879 printf("%s: Netgraph node is not valid\n", __func__); in ng_l2cap_process_lp_timeout()
883 l2cap = (ng_l2cap_p) NG_NODE_PRIVATE(node); in ng_l2cap_process_lp_timeout()
888 "%s: %s - could not find connection, con_handle=%d\n", in ng_l2cap_process_lp_timeout()
889 __func__, NG_NODE_NAME(node), con_handle); in ng_l2cap_process_lp_timeout()
893 if (!(con->flags & NG_L2CAP_CON_LP_TIMO)) { in ng_l2cap_process_lp_timeout()
895 "%s: %s - no pending LP timeout, con_handle=%d, state=%d, flags=%#x\n", in ng_l2cap_process_lp_timeout()
896 __func__, NG_NODE_NAME(node), con_handle, con->state, in ng_l2cap_process_lp_timeout()
897 con->flags); in ng_l2cap_process_lp_timeout()
906 con->flags &= ~NG_L2CAP_CON_LP_TIMO; in ng_l2cap_process_lp_timeout()
912 * lower layer protocol
916 ng_l2cap_process_discon_timeout(node_p node, hook_p hook, void *arg1, int con_handle) in ng_l2cap_process_discon_timeout() argument
924 if (NG_NODE_NOT_VALID(node)) { in ng_l2cap_process_discon_timeout()
925 printf("%s: Netgraph node is not valid\n", __func__); in ng_l2cap_process_discon_timeout()
929 l2cap = (ng_l2cap_p) NG_NODE_PRIVATE(node); in ng_l2cap_process_discon_timeout()
934 "%s: %s - could not find connection, con_handle=%d\n", in ng_l2cap_process_discon_timeout()
935 __func__, NG_NODE_NAME(node), con_handle); in ng_l2cap_process_discon_timeout()
939 if (!(con->flags & NG_L2CAP_CON_AUTO_DISCON_TIMO)) { in ng_l2cap_process_discon_timeout()
941 "%s: %s - no pending disconnect timeout, con_handle=%d, state=%d, flags=%#x\n", in ng_l2cap_process_discon_timeout()
942 __func__, NG_NODE_NAME(node), con_handle, con->state, in ng_l2cap_process_discon_timeout()
943 con->flags); in ng_l2cap_process_discon_timeout()
947 con->flags &= ~NG_L2CAP_CON_AUTO_DISCON_TIMO; in ng_l2cap_process_discon_timeout()
949 /* Check if lower layer protocol is still connected */ in ng_l2cap_process_discon_timeout()
950 if (l2cap->hci == NULL || NG_HOOK_NOT_VALID(l2cap->hci)) { in ng_l2cap_process_discon_timeout()
952 "%s: %s - hook \"%s\" is not connected or valid\n", in ng_l2cap_process_discon_timeout()
953 __func__, NG_NODE_NAME(l2cap->node), NG_L2CAP_HOOK_HCI); in ng_l2cap_process_discon_timeout()
963 ep = (ng_hci_lp_discon_req_ep *) (msg->data); in ng_l2cap_process_discon_timeout()
964 ep->con_handle = con->con_handle; in ng_l2cap_process_discon_timeout()
965 ep->reason = 0x13; /* User Ended Connection */ in ng_l2cap_process_discon_timeout()
967 NG_SEND_MSG_HOOK(error, l2cap->node, msg, l2cap->hci, 0); in ng_l2cap_process_discon_timeout()