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()
855 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_control()
862 mtx_unlock(&pcb->pcb_mtx); 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()
873 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_control()
877 error = msleep(&pcb->msg, &pcb->pcb_mtx, PZERO|PCATCH, "l2ctl", in ng_btsocket_l2cap_raw_control()
879 pcb->token = 0; in ng_btsocket_l2cap_raw_control()
882 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_control()
886 msg = pcb->msg; in ng_btsocket_l2cap_raw_control()
887 pcb->msg = NULL; in ng_btsocket_l2cap_raw_control()
889 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_control()
919 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_control()
926 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_control()
930 pcb->token = msg->header.token; in ng_btsocket_l2cap_raw_control()
931 pcb->msg = NULL; in ng_btsocket_l2cap_raw_control()
934 pcb->rt->hook, 0); in ng_btsocket_l2cap_raw_control()
936 pcb->token = 0; in ng_btsocket_l2cap_raw_control()
937 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_control()
941 error = msleep(&pcb->msg, &pcb->pcb_mtx, PZERO|PCATCH, "l2ctl", in ng_btsocket_l2cap_raw_control()
943 pcb->token = 0; in ng_btsocket_l2cap_raw_control()
946 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_control()
950 msg = pcb->msg; in ng_btsocket_l2cap_raw_control()
951 pcb->msg = NULL; in ng_btsocket_l2cap_raw_control()
953 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_control()
982 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_control()
990 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_control()
994 pcb->token = msg->header.token; in ng_btsocket_l2cap_raw_control()
995 pcb->msg = NULL; in ng_btsocket_l2cap_raw_control()
998 bcopy(&pcb->dst, &ip->bdaddr, sizeof(ip->bdaddr)); in ng_btsocket_l2cap_raw_control()
1002 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_control()
1004 mtx_lock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_control()
1008 pcb->token = 0; in ng_btsocket_l2cap_raw_control()
1009 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_control()
1015 pcb->rt->hook, 0); in ng_btsocket_l2cap_raw_control()
1017 pcb->token = 0; in ng_btsocket_l2cap_raw_control()
1018 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_control()
1022 error = msleep(&pcb->msg, &pcb->pcb_mtx, PZERO|PCATCH, "l2ctl", in ng_btsocket_l2cap_raw_control()
1024 pcb->token = 0; in ng_btsocket_l2cap_raw_control()
1027 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_control()
1031 msg = pcb->msg; in ng_btsocket_l2cap_raw_control()
1032 pcb->msg = NULL; in ng_btsocket_l2cap_raw_control()
1034 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_control()
1059 if (!(pcb->flags & NG_BTSOCKET_L2CAP_RAW_PRIVILEGED)) { in ng_btsocket_l2cap_raw_control()
1060 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_control()
1065 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_control()
1073 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_control()
1077 pcb->token = msg->header.token; in ng_btsocket_l2cap_raw_control()
1078 pcb->msg = NULL; in ng_btsocket_l2cap_raw_control()
1081 bcopy(&pcb->dst, &ip->bdaddr, sizeof(ip->bdaddr)); in ng_btsocket_l2cap_raw_control()
1085 pcb->rt->hook, 0); in ng_btsocket_l2cap_raw_control()
1087 pcb->token = 0; in ng_btsocket_l2cap_raw_control()
1088 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_control()
1092 error = msleep(&pcb->msg, &pcb->pcb_mtx, PZERO|PCATCH, "l2ctl", in ng_btsocket_l2cap_raw_control()
1094 pcb->token = 0; in ng_btsocket_l2cap_raw_control()
1097 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_control()
1101 msg = pcb->msg; in ng_btsocket_l2cap_raw_control()
1102 pcb->msg = NULL; in ng_btsocket_l2cap_raw_control()
1104 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_control()
1127 error = ng_btsocket_l2cap_raw_send_sync_ngmsg(pcb, in ng_btsocket_l2cap_raw_control()
1136 if (pcb->flags & NG_BTSOCKET_L2CAP_RAW_PRIVILEGED) in ng_btsocket_l2cap_raw_control()
1137 error = ng_btsocket_l2cap_raw_send_ngmsg(pcb->rt->hook, in ng_btsocket_l2cap_raw_control()
1149 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_control()
1161 ng_btsocket_l2cap_raw_pcb_p pcb = so2l2cap_raw_pcb(so); in ng_btsocket_l2cap_raw_detach() local
1163 KASSERT(pcb != NULL, ("nt_btsocket_l2cap_raw_detach: pcb == NULL")); in ng_btsocket_l2cap_raw_detach()
1168 mtx_lock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_detach()
1170 LIST_REMOVE(pcb, next); in ng_btsocket_l2cap_raw_detach()
1172 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_detach()
1175 mtx_destroy(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_detach()
1177 bzero(pcb, sizeof(*pcb)); in ng_btsocket_l2cap_raw_detach()
1178 free(pcb, M_NETGRAPH_BTSOCKET_L2CAP_RAW); in ng_btsocket_l2cap_raw_detach()
1190 ng_btsocket_l2cap_raw_pcb_p pcb = so2l2cap_raw_pcb(so); in ng_btsocket_l2cap_raw_disconnect() local
1192 if (pcb == NULL) in ng_btsocket_l2cap_raw_disconnect()
1197 mtx_lock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_disconnect()
1198 pcb->rt = NULL; in ng_btsocket_l2cap_raw_disconnect()
1200 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_disconnect()
1212 ng_btsocket_l2cap_raw_pcb_p pcb = so2l2cap_raw_pcb(so); in ng_btsocket_l2cap_raw_peeraddr() local
1215 if (pcb == NULL) in ng_btsocket_l2cap_raw_peeraddr()
1220 mtx_lock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_peeraddr()
1221 bcopy(&pcb->dst, &sa.l2cap_bdaddr, sizeof(sa.l2cap_bdaddr)); in ng_btsocket_l2cap_raw_peeraddr()
1222 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_peeraddr()
1256 ng_btsocket_l2cap_raw_pcb_p pcb = so2l2cap_raw_pcb(so); in ng_btsocket_l2cap_raw_sockaddr() local
1259 if (pcb == NULL) in ng_btsocket_l2cap_raw_sockaddr()
1264 mtx_lock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_sockaddr()
1265 bcopy(&pcb->src, &sa.l2cap_bdaddr, sizeof(sa.l2cap_bdaddr)); in ng_btsocket_l2cap_raw_sockaddr()
1266 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_sockaddr()
1322 ng_btsocket_l2cap_raw_send_sync_ngmsg(ng_btsocket_l2cap_raw_pcb_p pcb, in ng_btsocket_l2cap_raw_send_sync_ngmsg() argument
1328 mtx_assert(&pcb->pcb_mtx, MA_OWNED); in ng_btsocket_l2cap_raw_send_sync_ngmsg()
1335 pcb->token = msg->header.token; in ng_btsocket_l2cap_raw_send_sync_ngmsg()
1336 pcb->msg = NULL; in ng_btsocket_l2cap_raw_send_sync_ngmsg()
1339 pcb->rt->hook, 0); in ng_btsocket_l2cap_raw_send_sync_ngmsg()
1341 pcb->token = 0; in ng_btsocket_l2cap_raw_send_sync_ngmsg()
1345 error = msleep(&pcb->msg, &pcb->pcb_mtx, PZERO|PCATCH, "l2ctl", in ng_btsocket_l2cap_raw_send_sync_ngmsg()
1347 pcb->token = 0; in ng_btsocket_l2cap_raw_send_sync_ngmsg()
1352 if (pcb->msg != NULL && pcb->msg->header.cmd == cmd) in ng_btsocket_l2cap_raw_send_sync_ngmsg()
1353 bcopy(pcb->msg->data, rsp, rsplen); in ng_btsocket_l2cap_raw_send_sync_ngmsg()
1357 NG_FREE_MSG(pcb->msg); /* checks for != NULL */ in ng_btsocket_l2cap_raw_send_sync_ngmsg()