Lines Matching refs:pcb
419 ng_btsocket_l2cap_raw_pcb_p pcb = NULL; in ng_btsocket_l2cap_raw_input() local
423 LIST_FOREACH(pcb,&ng_btsocket_l2cap_raw_sockets,next) { in ng_btsocket_l2cap_raw_input()
424 mtx_lock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_input()
426 if (pcb->token == msg->header.token) { in ng_btsocket_l2cap_raw_input()
427 pcb->msg = msg; in ng_btsocket_l2cap_raw_input()
429 wakeup(&pcb->msg); in ng_btsocket_l2cap_raw_input()
430 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_input()
434 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_input()
461 ng_btsocket_l2cap_raw_pcb_p pcb = NULL; in ng_btsocket_l2cap_raw_rtclean() local
470 LIST_FOREACH(pcb, &ng_btsocket_l2cap_raw_sockets, next) { in ng_btsocket_l2cap_raw_rtclean()
471 mtx_lock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_rtclean()
473 if (pcb->rt != NULL && in ng_btsocket_l2cap_raw_rtclean()
474 pcb->rt->hook != NULL && NG_HOOK_NOT_VALID(pcb->rt->hook)) { in ng_btsocket_l2cap_raw_rtclean()
475 if (pcb->so != NULL && in ng_btsocket_l2cap_raw_rtclean()
476 pcb->so->so_state & SS_ISCONNECTED) in ng_btsocket_l2cap_raw_rtclean()
477 soisdisconnected(pcb->so); in ng_btsocket_l2cap_raw_rtclean()
479 pcb->rt = NULL; in ng_btsocket_l2cap_raw_rtclean()
482 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_rtclean()
611 ng_btsocket_l2cap_raw_pcb_p pcb = so2l2cap_raw_pcb(so); in ng_btsocket_l2cap_raw_attach() local
614 if (pcb != NULL) in ng_btsocket_l2cap_raw_attach()
629 pcb = malloc(sizeof(*pcb), in ng_btsocket_l2cap_raw_attach()
631 if (pcb == NULL) in ng_btsocket_l2cap_raw_attach()
635 so->so_pcb = (caddr_t) pcb; in ng_btsocket_l2cap_raw_attach()
636 pcb->so = so; in ng_btsocket_l2cap_raw_attach()
639 pcb->flags |= NG_BTSOCKET_L2CAP_RAW_PRIVILEGED; in ng_btsocket_l2cap_raw_attach()
641 mtx_init(&pcb->pcb_mtx, "btsocks_l2cap_raw_pcb_mtx", NULL, MTX_DEF); in ng_btsocket_l2cap_raw_attach()
645 LIST_INSERT_HEAD(&ng_btsocket_l2cap_raw_sockets, pcb, next); in ng_btsocket_l2cap_raw_attach()
659 ng_btsocket_l2cap_raw_pcb_t *pcb = so2l2cap_raw_pcb(so); in ng_btsocket_l2cap_raw_bind() local
663 if (pcb == NULL) in ng_btsocket_l2cap_raw_bind()
696 mtx_lock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_bind()
697 bcopy(&sa->l2cap_bdaddr, &pcb->src, sizeof(pcb->src)); in ng_btsocket_l2cap_raw_bind()
698 pcb->rt = rt; in ng_btsocket_l2cap_raw_bind()
699 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_bind()
712 ng_btsocket_l2cap_raw_pcb_t *pcb = so2l2cap_raw_pcb(so); in ng_btsocket_l2cap_raw_connect() local
717 if (pcb == NULL) in ng_btsocket_l2cap_raw_connect()
733 mtx_lock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_connect()
735 bcopy(&sa->l2cap_bdaddr, &pcb->dst, sizeof(pcb->dst)); in ng_btsocket_l2cap_raw_connect()
737 if (bcmp(&pcb->src, &pcb->dst, sizeof(pcb->src)) == 0) { in ng_btsocket_l2cap_raw_connect()
738 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_connect()
747 if (pcb->rt != NULL) { in ng_btsocket_l2cap_raw_connect()
749 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_connect()
764 if (bcmp(&pcb->dst, &rt->src, sizeof(rt->src)) != 0) in ng_btsocket_l2cap_raw_connect()
771 pcb->rt = rt; in ng_btsocket_l2cap_raw_connect()
772 bcopy(&rt->src, &pcb->src, sizeof(pcb->src)); in ng_btsocket_l2cap_raw_connect()
779 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_connect()
792 ng_btsocket_l2cap_raw_pcb_p pcb = so2l2cap_raw_pcb(so); in ng_btsocket_l2cap_raw_control() local
796 if (pcb == NULL) in ng_btsocket_l2cap_raw_control()
801 mtx_lock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_control()
804 if (pcb->rt == NULL) { in ng_btsocket_l2cap_raw_control()
805 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_control()
810 if (pcb->token != 0) { in ng_btsocket_l2cap_raw_control()
811 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_control()
820 error = ng_btsocket_l2cap_raw_send_sync_ngmsg(pcb, in ng_btsocket_l2cap_raw_control()
829 error = ng_btsocket_l2cap_raw_send_sync_ngmsg(pcb, in ng_btsocket_l2cap_raw_control()
838 if (pcb->flags & NG_BTSOCKET_L2CAP_RAW_PRIVILEGED) in ng_btsocket_l2cap_raw_control()
839 error = ng_btsocket_l2cap_raw_send_ngmsg(pcb->rt->hook, in ng_btsocket_l2cap_raw_control()
866 pcb->token = msg->header.token; in ng_btsocket_l2cap_raw_control()
867 pcb->msg = NULL; in ng_btsocket_l2cap_raw_control()
870 pcb->rt->hook, 0); in ng_btsocket_l2cap_raw_control()
872 pcb->token = 0; in ng_btsocket_l2cap_raw_control()
876 error = msleep(&pcb->msg, &pcb->pcb_mtx, PZERO|PCATCH, "l2ctl", in ng_btsocket_l2cap_raw_control()
878 pcb->token = 0; in ng_btsocket_l2cap_raw_control()
883 if (pcb->msg != NULL && in ng_btsocket_l2cap_raw_control()
884 pcb->msg->header.cmd == NGM_L2CAP_NODE_GET_CON_LIST) { in ng_btsocket_l2cap_raw_control()
886 p1 = (ng_l2cap_node_con_list_ep *)(pcb->msg->data); in ng_btsocket_l2cap_raw_control()
898 NG_FREE_MSG(pcb->msg); /* checks for != NULL */ in ng_btsocket_l2cap_raw_control()
921 pcb->token = msg->header.token; in ng_btsocket_l2cap_raw_control()
922 pcb->msg = NULL; in ng_btsocket_l2cap_raw_control()
925 pcb->rt->hook, 0); in ng_btsocket_l2cap_raw_control()
927 pcb->token = 0; in ng_btsocket_l2cap_raw_control()
931 error = msleep(&pcb->msg, &pcb->pcb_mtx, PZERO|PCATCH, "l2ctl", in ng_btsocket_l2cap_raw_control()
933 pcb->token = 0; in ng_btsocket_l2cap_raw_control()
938 if (pcb->msg != NULL && in ng_btsocket_l2cap_raw_control()
939 pcb->msg->header.cmd == NGM_L2CAP_NODE_GET_CHAN_LIST) { in ng_btsocket_l2cap_raw_control()
941 p1 = (ng_l2cap_node_chan_list_ep *)(pcb->msg->data); in ng_btsocket_l2cap_raw_control()
953 NG_FREE_MSG(pcb->msg); /* checks for != NULL */ in ng_btsocket_l2cap_raw_control()
976 pcb->token = msg->header.token; in ng_btsocket_l2cap_raw_control()
977 pcb->msg = NULL; in ng_btsocket_l2cap_raw_control()
980 bcopy(&pcb->dst, &ip->bdaddr, sizeof(ip->bdaddr)); in ng_btsocket_l2cap_raw_control()
987 pcb->token = 0; in ng_btsocket_l2cap_raw_control()
993 pcb->rt->hook, 0); in ng_btsocket_l2cap_raw_control()
995 pcb->token = 0; in ng_btsocket_l2cap_raw_control()
999 error = msleep(&pcb->msg, &pcb->pcb_mtx, PZERO|PCATCH, "l2ctl", in ng_btsocket_l2cap_raw_control()
1001 pcb->token = 0; in ng_btsocket_l2cap_raw_control()
1006 if (pcb->msg != NULL && in ng_btsocket_l2cap_raw_control()
1007 pcb->msg->header.cmd == NGM_L2CAP_L2CA_PING) { in ng_btsocket_l2cap_raw_control()
1009 op = (ng_l2cap_l2ca_ping_op *)(pcb->msg->data); in ng_btsocket_l2cap_raw_control()
1019 NG_FREE_MSG(pcb->msg); /* checks for != NULL */ in ng_btsocket_l2cap_raw_control()
1028 if (!(pcb->flags & NG_BTSOCKET_L2CAP_RAW_PRIVILEGED)) { in ng_btsocket_l2cap_raw_control()
1046 pcb->token = msg->header.token; in ng_btsocket_l2cap_raw_control()
1047 pcb->msg = NULL; in ng_btsocket_l2cap_raw_control()
1050 bcopy(&pcb->dst, &ip->bdaddr, sizeof(ip->bdaddr)); in ng_btsocket_l2cap_raw_control()
1054 pcb->rt->hook, 0); in ng_btsocket_l2cap_raw_control()
1056 pcb->token = 0; in ng_btsocket_l2cap_raw_control()
1060 error = msleep(&pcb->msg, &pcb->pcb_mtx, PZERO|PCATCH, "l2ctl", in ng_btsocket_l2cap_raw_control()
1062 pcb->token = 0; in ng_btsocket_l2cap_raw_control()
1067 if (pcb->msg != NULL && in ng_btsocket_l2cap_raw_control()
1068 pcb->msg->header.cmd == NGM_L2CAP_L2CA_GET_INFO) { in ng_btsocket_l2cap_raw_control()
1070 op = (ng_l2cap_l2ca_get_info_op *)(pcb->msg->data); in ng_btsocket_l2cap_raw_control()
1080 NG_FREE_MSG(pcb->msg); /* checks for != NULL */ in ng_btsocket_l2cap_raw_control()
1087 error = ng_btsocket_l2cap_raw_send_sync_ngmsg(pcb, in ng_btsocket_l2cap_raw_control()
1096 if (pcb->flags & NG_BTSOCKET_L2CAP_RAW_PRIVILEGED) in ng_btsocket_l2cap_raw_control()
1097 error = ng_btsocket_l2cap_raw_send_ngmsg(pcb->rt->hook, in ng_btsocket_l2cap_raw_control()
1109 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_control()
1121 ng_btsocket_l2cap_raw_pcb_p pcb = so2l2cap_raw_pcb(so); in ng_btsocket_l2cap_raw_detach() local
1123 KASSERT(pcb != NULL, ("nt_btsocket_l2cap_raw_detach: pcb == NULL")); in ng_btsocket_l2cap_raw_detach()
1128 mtx_lock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_detach()
1130 LIST_REMOVE(pcb, next); in ng_btsocket_l2cap_raw_detach()
1132 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_detach()
1135 mtx_destroy(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_detach()
1137 bzero(pcb, sizeof(*pcb)); in ng_btsocket_l2cap_raw_detach()
1138 free(pcb, M_NETGRAPH_BTSOCKET_L2CAP_RAW); in ng_btsocket_l2cap_raw_detach()
1150 ng_btsocket_l2cap_raw_pcb_p pcb = so2l2cap_raw_pcb(so); in ng_btsocket_l2cap_raw_disconnect() local
1152 if (pcb == NULL) in ng_btsocket_l2cap_raw_disconnect()
1157 mtx_lock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_disconnect()
1158 pcb->rt = NULL; in ng_btsocket_l2cap_raw_disconnect()
1160 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_disconnect()
1172 ng_btsocket_l2cap_raw_pcb_p pcb = so2l2cap_raw_pcb(so); in ng_btsocket_l2cap_raw_peeraddr() local
1175 if (pcb == NULL) in ng_btsocket_l2cap_raw_peeraddr()
1180 mtx_lock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_peeraddr()
1181 bcopy(&pcb->dst, &sa.l2cap_bdaddr, sizeof(sa.l2cap_bdaddr)); in ng_btsocket_l2cap_raw_peeraddr()
1182 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_peeraddr()
1216 ng_btsocket_l2cap_raw_pcb_p pcb = so2l2cap_raw_pcb(so); in ng_btsocket_l2cap_raw_sockaddr() local
1219 if (pcb == NULL) in ng_btsocket_l2cap_raw_sockaddr()
1224 mtx_lock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_sockaddr()
1225 bcopy(&pcb->src, &sa.l2cap_bdaddr, sizeof(sa.l2cap_bdaddr)); in ng_btsocket_l2cap_raw_sockaddr()
1226 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_sockaddr()
1282 ng_btsocket_l2cap_raw_send_sync_ngmsg(ng_btsocket_l2cap_raw_pcb_p pcb, in ng_btsocket_l2cap_raw_send_sync_ngmsg() argument
1288 mtx_assert(&pcb->pcb_mtx, MA_OWNED); in ng_btsocket_l2cap_raw_send_sync_ngmsg()
1295 pcb->token = msg->header.token; in ng_btsocket_l2cap_raw_send_sync_ngmsg()
1296 pcb->msg = NULL; in ng_btsocket_l2cap_raw_send_sync_ngmsg()
1299 pcb->rt->hook, 0); in ng_btsocket_l2cap_raw_send_sync_ngmsg()
1301 pcb->token = 0; in ng_btsocket_l2cap_raw_send_sync_ngmsg()
1305 error = msleep(&pcb->msg, &pcb->pcb_mtx, PZERO|PCATCH, "l2ctl", in ng_btsocket_l2cap_raw_send_sync_ngmsg()
1307 pcb->token = 0; in ng_btsocket_l2cap_raw_send_sync_ngmsg()
1312 if (pcb->msg != NULL && pcb->msg->header.cmd == cmd) in ng_btsocket_l2cap_raw_send_sync_ngmsg()
1313 bcopy(pcb->msg->data, rsp, rsplen); in ng_btsocket_l2cap_raw_send_sync_ngmsg()
1317 NG_FREE_MSG(pcb->msg); /* checks for != NULL */ in ng_btsocket_l2cap_raw_send_sync_ngmsg()