Lines Matching full:pcb
381 ng_btsocket_sco_pcb_t *pcb = NULL; in ng_btsocket_sco_process_lp_con_cfm() local
392 pcb = ng_btsocket_sco_pcb_by_addrs(&rt->src, &ep->bdaddr); in ng_btsocket_sco_process_lp_con_cfm()
393 if (pcb == NULL) { in ng_btsocket_sco_process_lp_con_cfm()
398 /* pcb is locked */ in ng_btsocket_sco_process_lp_con_cfm()
404 pcb->src.b[5], pcb->src.b[4], pcb->src.b[3], in ng_btsocket_sco_process_lp_con_cfm()
405 pcb->src.b[2], pcb->src.b[1], pcb->src.b[0], in ng_btsocket_sco_process_lp_con_cfm()
406 pcb->dst.b[5], pcb->dst.b[4], pcb->dst.b[3], in ng_btsocket_sco_process_lp_con_cfm()
407 pcb->dst.b[2], pcb->dst.b[1], pcb->dst.b[0], in ng_btsocket_sco_process_lp_con_cfm()
408 ep->status, ep->con_handle, pcb->state); in ng_btsocket_sco_process_lp_con_cfm()
410 if (pcb->state != NG_BTSOCKET_SCO_CONNECTING) { in ng_btsocket_sco_process_lp_con_cfm()
411 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_sco_process_lp_con_cfm()
417 ng_btsocket_sco_untimeout(pcb); in ng_btsocket_sco_process_lp_con_cfm()
425 pcb->con_handle = ep->con_handle; in ng_btsocket_sco_process_lp_con_cfm()
426 pcb->state = NG_BTSOCKET_SCO_OPEN; in ng_btsocket_sco_process_lp_con_cfm()
427 soisconnected(pcb->so); in ng_btsocket_sco_process_lp_con_cfm()
433 pcb->so->so_error = ECONNREFUSED; /* XXX convert status ??? */ in ng_btsocket_sco_process_lp_con_cfm()
434 pcb->state = NG_BTSOCKET_SCO_CLOSED; in ng_btsocket_sco_process_lp_con_cfm()
435 soisdisconnected(pcb->so); in ng_btsocket_sco_process_lp_con_cfm()
438 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_sco_process_lp_con_cfm()
454 ng_btsocket_sco_pcb_t *pcb = NULL, *pcb1 = NULL; in ng_btsocket_sco_process_lp_con_ind() local
474 pcb = ng_btsocket_sco_pcb_by_addr(&rt->src); in ng_btsocket_sco_process_lp_con_ind()
475 if (pcb != NULL) { in ng_btsocket_sco_process_lp_con_ind()
478 /* pcb is locked */ in ng_btsocket_sco_process_lp_con_ind()
480 CURVNET_SET(pcb->so->so_vnet); in ng_btsocket_sco_process_lp_con_ind()
481 so1 = sonewconn(pcb->so, 0); in ng_btsocket_sco_process_lp_con_ind()
502 if (bcmp(&pcb->src, NG_HCI_BDADDR_ANY, sizeof(pcb->src)) != 0) in ng_btsocket_sco_process_lp_con_ind()
503 bcopy(&pcb->src, &pcb1->src, sizeof(pcb1->src)); in ng_btsocket_sco_process_lp_con_ind()
532 if (pcb != NULL) in ng_btsocket_sco_process_lp_con_ind()
533 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_sco_process_lp_con_ind()
549 ng_btsocket_sco_pcb_t *pcb = NULL; in ng_btsocket_sco_process_lp_discon_ind() local
560 pcb = ng_btsocket_sco_pcb_by_handle(&rt->src, ep->con_handle); in ng_btsocket_sco_process_lp_discon_ind()
561 if (pcb == NULL) { in ng_btsocket_sco_process_lp_discon_ind()
571 /* pcb is locked */ in ng_btsocket_sco_process_lp_discon_ind()
577 pcb->src.b[5], pcb->src.b[4], pcb->src.b[3], in ng_btsocket_sco_process_lp_discon_ind()
578 pcb->src.b[2], pcb->src.b[1], pcb->src.b[0], in ng_btsocket_sco_process_lp_discon_ind()
579 pcb->dst.b[5], pcb->dst.b[4], pcb->dst.b[3], in ng_btsocket_sco_process_lp_discon_ind()
580 pcb->dst.b[2], pcb->dst.b[1], pcb->dst.b[0], in ng_btsocket_sco_process_lp_discon_ind()
581 pcb->con_handle, pcb->state); in ng_btsocket_sco_process_lp_discon_ind()
583 if (pcb->flags & NG_BTSOCKET_SCO_TIMO) in ng_btsocket_sco_process_lp_discon_ind()
584 ng_btsocket_sco_untimeout(pcb); in ng_btsocket_sco_process_lp_discon_ind()
586 pcb->state = NG_BTSOCKET_SCO_CLOSED; in ng_btsocket_sco_process_lp_discon_ind()
587 soisdisconnected(pcb->so); in ng_btsocket_sco_process_lp_discon_ind()
589 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_sco_process_lp_discon_ind()
600 ng_btsocket_sco_send_lp_con_req(ng_btsocket_sco_pcb_p pcb) in ng_btsocket_sco_send_lp_con_req() argument
606 mtx_assert(&pcb->pcb_mtx, MA_OWNED); in ng_btsocket_sco_send_lp_con_req()
608 if (pcb->rt == NULL || in ng_btsocket_sco_send_lp_con_req()
609 pcb->rt->hook == NULL || NG_HOOK_NOT_VALID(pcb->rt->hook)) in ng_btsocket_sco_send_lp_con_req()
619 bcopy(&pcb->dst, &ep->bdaddr, sizeof(ep->bdaddr)); in ng_btsocket_sco_send_lp_con_req()
621 NG_SEND_MSG_HOOK(error, ng_btsocket_sco_node, msg, pcb->rt->hook, 0); in ng_btsocket_sco_send_lp_con_req()
660 ng_btsocket_sco_send_lp_discon_req(ng_btsocket_sco_pcb_p pcb) in ng_btsocket_sco_send_lp_discon_req() argument
666 mtx_assert(&pcb->pcb_mtx, MA_OWNED); in ng_btsocket_sco_send_lp_discon_req()
668 if (pcb->rt == NULL || in ng_btsocket_sco_send_lp_discon_req()
669 pcb->rt->hook == NULL || NG_HOOK_NOT_VALID(pcb->rt->hook)) in ng_btsocket_sco_send_lp_discon_req()
678 ep->con_handle = pcb->con_handle; in ng_btsocket_sco_send_lp_discon_req()
681 NG_SEND_MSG_HOOK(error, ng_btsocket_sco_node, msg, pcb->rt->hook, 0); in ng_btsocket_sco_send_lp_discon_req()
700 ng_btsocket_sco_pcb_t *pcb = NULL; in ng_btsocket_sco_data_input() local
757 pcb = ng_btsocket_sco_pcb_by_handle(&rt->src, con_handle); in ng_btsocket_sco_data_input()
758 if (pcb == NULL) { in ng_btsocket_sco_data_input()
763 /* pcb is locked */ in ng_btsocket_sco_data_input()
765 if (pcb->state != NG_BTSOCKET_SCO_OPEN) { in ng_btsocket_sco_data_input()
771 pcb->state); in ng_btsocket_sco_data_input()
773 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_sco_data_input()
779 if (m->m_pkthdr.len > sbspace(&pcb->so->so_rcv)) { in ng_btsocket_sco_data_input()
787 sbspace(&pcb->so->so_rcv)); in ng_btsocket_sco_data_input()
789 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_sco_data_input()
795 sbappendrecord(&pcb->so->so_rcv, m); in ng_btsocket_sco_data_input()
798 sorwakeup(pcb->so); in ng_btsocket_sco_data_input()
800 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_sco_data_input()
862 ng_btsocket_sco_pcb_t *pcb = NULL; in ng_btsocket_sco_default_msg_input() local
886 pcb = ng_btsocket_sco_pcb_by_handle(&rt->src, ep->con_handle); in ng_btsocket_sco_default_msg_input()
887 if (pcb == NULL) { in ng_btsocket_sco_default_msg_input()
892 /* pcb is locked */ in ng_btsocket_sco_default_msg_input()
895 if (pcb->state == NG_BTSOCKET_SCO_OPEN) { in ng_btsocket_sco_default_msg_input()
897 ng_btsocket_sco_untimeout(pcb); in ng_btsocket_sco_default_msg_input()
901 sbdroprecord(&pcb->so->so_snd); in ng_btsocket_sco_default_msg_input()
904 if (sbavail(&pcb->so->so_snd) > 0) in ng_btsocket_sco_default_msg_input()
905 if (ng_btsocket_sco_send2(pcb) == 0) in ng_btsocket_sco_default_msg_input()
906 ng_btsocket_sco_timeout(pcb); in ng_btsocket_sco_default_msg_input()
909 sowwakeup(pcb->so); in ng_btsocket_sco_default_msg_input()
912 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_sco_default_msg_input()
1041 ng_btsocket_sco_pcb_p pcb = NULL, pcb_next = NULL; in ng_btsocket_sco_rtclean() local
1050 for(pcb = LIST_FIRST(&ng_btsocket_sco_sockets); pcb != NULL; ) { in ng_btsocket_sco_rtclean()
1051 mtx_lock(&pcb->pcb_mtx); in ng_btsocket_sco_rtclean()
1052 pcb_next = LIST_NEXT(pcb, next); in ng_btsocket_sco_rtclean()
1054 if (pcb->rt != NULL && in ng_btsocket_sco_rtclean()
1055 pcb->rt->hook != NULL && NG_HOOK_NOT_VALID(pcb->rt->hook)) { in ng_btsocket_sco_rtclean()
1056 if (pcb->flags & NG_BTSOCKET_SCO_TIMO) in ng_btsocket_sco_rtclean()
1057 ng_btsocket_sco_untimeout(pcb); in ng_btsocket_sco_rtclean()
1059 pcb->rt = NULL; in ng_btsocket_sco_rtclean()
1060 pcb->so->so_error = ENETDOWN; in ng_btsocket_sco_rtclean()
1061 pcb->state = NG_BTSOCKET_SCO_CLOSED; in ng_btsocket_sco_rtclean()
1062 soisdisconnected(pcb->so); in ng_btsocket_sco_rtclean()
1065 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_sco_rtclean()
1066 pcb = pcb_next; in ng_btsocket_sco_rtclean()
1186 ng_btsocket_sco_pcb_p pcb = so2sco_pcb(so); in ng_btsocket_sco_attach() local
1201 if (pcb != NULL) in ng_btsocket_sco_attach()
1212 /* Allocate the PCB */ in ng_btsocket_sco_attach()
1213 pcb = malloc(sizeof(*pcb), in ng_btsocket_sco_attach()
1215 if (pcb == NULL) in ng_btsocket_sco_attach()
1218 /* Link the PCB and the socket */ in ng_btsocket_sco_attach()
1219 so->so_pcb = (caddr_t) pcb; in ng_btsocket_sco_attach()
1220 pcb->so = so; in ng_btsocket_sco_attach()
1221 pcb->state = NG_BTSOCKET_SCO_CLOSED; in ng_btsocket_sco_attach()
1223 callout_init(&pcb->timo, 1); in ng_btsocket_sco_attach()
1226 * Mark PCB mutex as DUPOK to prevent "duplicated lock of in ng_btsocket_sco_attach()
1228 * ng_btsocket_sco_process_lp_con_ind() holds both PCB mutexes in ng_btsocket_sco_attach()
1229 * for "old" (accepting) PCB and "new" (created) PCB. in ng_btsocket_sco_attach()
1232 mtx_init(&pcb->pcb_mtx, "btsocks_sco_pcb_mtx", NULL, in ng_btsocket_sco_attach()
1236 * Add the PCB to the list in ng_btsocket_sco_attach()
1259 LIST_INSERT_HEAD(&ng_btsocket_sco_sockets, pcb, next); in ng_btsocket_sco_attach()
1275 ng_btsocket_sco_pcb_t *pcb = NULL; in ng_btsocket_sco_bind() local
1297 LIST_FOREACH(pcb, &ng_btsocket_sco_sockets, next) { in ng_btsocket_sco_bind()
1298 mtx_lock(&pcb->pcb_mtx); in ng_btsocket_sco_bind()
1300 if (bcmp(&pcb->src, &sa->sco_bdaddr, sizeof(bdaddr_t)) == 0) { in ng_btsocket_sco_bind()
1301 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_sco_bind()
1307 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_sco_bind()
1311 pcb = so2sco_pcb(so); in ng_btsocket_sco_bind()
1312 if (pcb == NULL) { in ng_btsocket_sco_bind()
1317 mtx_lock(&pcb->pcb_mtx); in ng_btsocket_sco_bind()
1318 bcopy(&sa->sco_bdaddr, &pcb->src, sizeof(pcb->src)); in ng_btsocket_sco_bind()
1319 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_sco_bind()
1334 ng_btsocket_sco_pcb_t *pcb = so2sco_pcb(so); in ng_btsocket_sco_connect() local
1340 if (pcb == NULL) in ng_btsocket_sco_connect()
1363 mtx_lock(&pcb->pcb_mtx); in ng_btsocket_sco_connect()
1365 if (pcb->state == NG_BTSOCKET_SCO_CONNECTING) { in ng_btsocket_sco_connect()
1366 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_sco_connect()
1372 if (bcmp(&sa->sco_bdaddr, &pcb->src, sizeof(pcb->src)) == 0) { in ng_btsocket_sco_connect()
1373 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_sco_connect()
1380 bcopy(&sa->sco_bdaddr, &pcb->dst, sizeof(pcb->dst)); in ng_btsocket_sco_connect()
1382 pcb->rt = NULL; in ng_btsocket_sco_connect()
1383 have_src = bcmp(&pcb->src, NG_HCI_BDADDR_ANY, sizeof(pcb->src)); in ng_btsocket_sco_connect()
1391 if (bcmp(&pcb->src, &rt->src, sizeof(rt->src)) == 0) in ng_btsocket_sco_connect()
1394 if (bcmp(&pcb->dst, &rt->src, sizeof(rt->src)) != 0) in ng_btsocket_sco_connect()
1400 pcb->rt = rt; in ng_btsocket_sco_connect()
1403 bcopy(&rt->src, &pcb->src, sizeof(pcb->src)); in ng_btsocket_sco_connect()
1412 error = ng_btsocket_sco_send_lp_con_req(pcb); in ng_btsocket_sco_connect()
1414 pcb->flags |= NG_BTSOCKET_SCO_CLIENT; in ng_btsocket_sco_connect()
1415 pcb->state = NG_BTSOCKET_SCO_CONNECTING; in ng_btsocket_sco_connect()
1416 soisconnecting(pcb->so); in ng_btsocket_sco_connect()
1418 ng_btsocket_sco_timeout(pcb); in ng_btsocket_sco_connect()
1422 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_sco_connect()
1446 ng_btsocket_sco_pcb_p pcb = so2sco_pcb(so); in ng_btsocket_sco_ctloutput() local
1451 if (pcb == NULL) in ng_btsocket_sco_ctloutput()
1457 mtx_lock(&pcb->pcb_mtx); in ng_btsocket_sco_ctloutput()
1461 if (pcb->state != NG_BTSOCKET_SCO_OPEN) { in ng_btsocket_sco_ctloutput()
1468 tmp = pcb->rt->pkt_size; in ng_btsocket_sco_ctloutput()
1473 tmp = pcb->con_handle; in ng_btsocket_sco_ctloutput()
1492 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_sco_ctloutput()
1504 ng_btsocket_sco_pcb_p pcb = so2sco_pcb(so); in ng_btsocket_sco_detach() local
1506 KASSERT(pcb != NULL, ("ng_btsocket_sco_detach: pcb == NULL")); in ng_btsocket_sco_detach()
1512 mtx_lock(&pcb->pcb_mtx); in ng_btsocket_sco_detach()
1514 if (pcb->flags & NG_BTSOCKET_SCO_TIMO) in ng_btsocket_sco_detach()
1515 ng_btsocket_sco_untimeout(pcb); in ng_btsocket_sco_detach()
1517 if (pcb->state == NG_BTSOCKET_SCO_OPEN) in ng_btsocket_sco_detach()
1518 ng_btsocket_sco_send_lp_discon_req(pcb); in ng_btsocket_sco_detach()
1520 pcb->state = NG_BTSOCKET_SCO_CLOSED; in ng_btsocket_sco_detach()
1522 LIST_REMOVE(pcb, next); in ng_btsocket_sco_detach()
1524 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_sco_detach()
1527 mtx_destroy(&pcb->pcb_mtx); in ng_btsocket_sco_detach()
1528 bzero(pcb, sizeof(*pcb)); in ng_btsocket_sco_detach()
1529 free(pcb, M_NETGRAPH_BTSOCKET_SCO); in ng_btsocket_sco_detach()
1542 ng_btsocket_sco_pcb_p pcb = so2sco_pcb(so); in ng_btsocket_sco_disconnect() local
1544 if (pcb == NULL) in ng_btsocket_sco_disconnect()
1549 mtx_lock(&pcb->pcb_mtx); in ng_btsocket_sco_disconnect()
1551 if (pcb->state == NG_BTSOCKET_SCO_DISCONNECTING) { in ng_btsocket_sco_disconnect()
1552 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_sco_disconnect()
1557 if (pcb->flags & NG_BTSOCKET_SCO_TIMO) in ng_btsocket_sco_disconnect()
1558 ng_btsocket_sco_untimeout(pcb); in ng_btsocket_sco_disconnect()
1560 if (pcb->state == NG_BTSOCKET_SCO_OPEN) { in ng_btsocket_sco_disconnect()
1561 ng_btsocket_sco_send_lp_discon_req(pcb); in ng_btsocket_sco_disconnect()
1563 pcb->state = NG_BTSOCKET_SCO_DISCONNECTING; in ng_btsocket_sco_disconnect()
1566 ng_btsocket_sco_timeout(pcb); in ng_btsocket_sco_disconnect()
1568 pcb->state = NG_BTSOCKET_SCO_CLOSED; in ng_btsocket_sco_disconnect()
1572 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_sco_disconnect()
1584 ng_btsocket_sco_pcb_p pcb = so2sco_pcb(so); in ng_btsocket_sco_listen() local
1587 if (pcb == NULL) in ng_btsocket_sco_listen()
1593 mtx_lock(&pcb->pcb_mtx); in ng_btsocket_sco_listen()
1599 if (bcmp(&pcb->src, NG_HCI_BDADDR_ANY, sizeof(bdaddr_t)) == 0) { in ng_btsocket_sco_listen()
1606 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_sco_listen()
1619 ng_btsocket_sco_pcb_p pcb = so2sco_pcb(so); in ng_btsocket_sco_peeraddr() local
1622 if (pcb == NULL) in ng_btsocket_sco_peeraddr()
1631 mtx_lock(&pcb->pcb_mtx); in ng_btsocket_sco_peeraddr()
1632 bcopy(&pcb->dst, &sco->sco_bdaddr, sizeof(sco->sco_bdaddr)); in ng_btsocket_sco_peeraddr()
1633 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_sco_peeraddr()
1646 ng_btsocket_sco_pcb_t *pcb = so2sco_pcb(so); in ng_btsocket_sco_send() local
1655 if (pcb == NULL || m == NULL || control != NULL) { in ng_btsocket_sco_send()
1660 mtx_lock(&pcb->pcb_mtx); in ng_btsocket_sco_send()
1663 if (pcb->state != NG_BTSOCKET_SCO_OPEN) { in ng_btsocket_sco_send()
1664 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_sco_send()
1670 if (pcb->rt == NULL || in ng_btsocket_sco_send()
1671 pcb->rt->hook == NULL || NG_HOOK_NOT_VALID(pcb->rt->hook)) { in ng_btsocket_sco_send()
1672 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_sco_send()
1678 if (m->m_pkthdr.len > pcb->rt->pkt_size) { in ng_btsocket_sco_send()
1681 __func__, m->m_pkthdr.len, pcb->rt->pkt_size); in ng_btsocket_sco_send()
1683 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_sco_send()
1695 sbappendrecord(&pcb->so->so_snd, m); in ng_btsocket_sco_send()
1698 if (!(pcb->flags & NG_BTSOCKET_SCO_TIMO)) { in ng_btsocket_sco_send()
1699 error = ng_btsocket_sco_send2(pcb); in ng_btsocket_sco_send()
1701 ng_btsocket_sco_timeout(pcb); in ng_btsocket_sco_send()
1703 sbdroprecord(&pcb->so->so_snd); /* XXX */ in ng_btsocket_sco_send()
1706 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_sco_send()
1719 ng_btsocket_sco_send2(ng_btsocket_sco_pcb_p pcb) in ng_btsocket_sco_send2() argument
1725 mtx_assert(&pcb->pcb_mtx, MA_OWNED); in ng_btsocket_sco_send2()
1727 while (pcb->rt->pending < pcb->rt->num_pkts && in ng_btsocket_sco_send2()
1728 sbavail(&pcb->so->so_snd) > 0) { in ng_btsocket_sco_send2()
1730 m = m_dup(pcb->so->so_snd.sb_mb, M_NOWAIT); in ng_btsocket_sco_send2()
1750 hdr->con_handle = htole16(NG_HCI_MK_CON_HANDLE(pcb->con_handle, 0, 0)); in ng_btsocket_sco_send2()
1754 NG_SEND_DATA_ONLY(error, pcb->rt->hook, m); in ng_btsocket_sco_send2()
1758 pcb->rt->pending ++; in ng_btsocket_sco_send2()
1761 return ((pcb->rt->pending > 0)? 0 : error); in ng_btsocket_sco_send2()
1771 ng_btsocket_sco_pcb_p pcb = so2sco_pcb(so); in ng_btsocket_sco_sockaddr() local
1774 if (pcb == NULL) in ng_btsocket_sco_sockaddr()
1783 mtx_lock(&pcb->pcb_mtx); in ng_btsocket_sco_sockaddr()
1784 bcopy(&pcb->src, &sco->sco_bdaddr, sizeof(sco->sco_bdaddr)); in ng_btsocket_sco_sockaddr()
1785 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_sco_sockaddr()
1800 * Returns with locked pcb.
1819 return (p); /* return with locked pcb */ in ng_btsocket_sco_pcb_by_addr()
1836 * Returns with locked pcb.
1851 return (p); /* return with locked pcb */ in ng_btsocket_sco_pcb_by_handle()
1862 * Returns with locked pcb.
1878 return (p); /* return with locked pcb */ in ng_btsocket_sco_pcb_by_addrs()
1891 ng_btsocket_sco_timeout(ng_btsocket_sco_pcb_p pcb) in ng_btsocket_sco_timeout() argument
1893 mtx_assert(&pcb->pcb_mtx, MA_OWNED); in ng_btsocket_sco_timeout()
1895 if (!(pcb->flags & NG_BTSOCKET_SCO_TIMO)) { in ng_btsocket_sco_timeout()
1896 pcb->flags |= NG_BTSOCKET_SCO_TIMO; in ng_btsocket_sco_timeout()
1897 callout_reset(&pcb->timo, bluetooth_sco_rtx_timeout(), in ng_btsocket_sco_timeout()
1898 ng_btsocket_sco_process_timeout, pcb); in ng_btsocket_sco_timeout()
1909 ng_btsocket_sco_untimeout(ng_btsocket_sco_pcb_p pcb) in ng_btsocket_sco_untimeout() argument
1911 mtx_assert(&pcb->pcb_mtx, MA_OWNED); in ng_btsocket_sco_untimeout()
1913 if (pcb->flags & NG_BTSOCKET_SCO_TIMO) { in ng_btsocket_sco_untimeout()
1914 callout_stop(&pcb->timo); in ng_btsocket_sco_untimeout()
1915 pcb->flags &= ~NG_BTSOCKET_SCO_TIMO; in ng_btsocket_sco_untimeout()
1928 ng_btsocket_sco_pcb_p pcb = (ng_btsocket_sco_pcb_p) xpcb; in ng_btsocket_sco_process_timeout() local
1930 mtx_lock(&pcb->pcb_mtx); in ng_btsocket_sco_process_timeout()
1932 pcb->flags &= ~NG_BTSOCKET_SCO_TIMO; in ng_btsocket_sco_process_timeout()
1933 pcb->so->so_error = ETIMEDOUT; in ng_btsocket_sco_process_timeout()
1935 switch (pcb->state) { in ng_btsocket_sco_process_timeout()
1938 pcb->state = NG_BTSOCKET_SCO_CLOSED; in ng_btsocket_sco_process_timeout()
1939 soisdisconnected(pcb->so); in ng_btsocket_sco_process_timeout()
1944 sbdroprecord(&pcb->so->so_snd); in ng_btsocket_sco_process_timeout()
1945 sowwakeup(pcb->so); in ng_btsocket_sco_process_timeout()
1946 /* XXX FIXME what to do with pcb->rt->pending??? */ in ng_btsocket_sco_process_timeout()
1951 pcb->state = NG_BTSOCKET_SCO_CLOSED; in ng_btsocket_sco_process_timeout()
1952 soisdisconnected(pcb->so); in ng_btsocket_sco_process_timeout()
1957 "%s: Invalid socket state=%d\n", __func__, pcb->state); in ng_btsocket_sco_process_timeout()
1961 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_sco_process_timeout()