Lines Matching refs:pcb

418 			ng_btsocket_l2cap_raw_pcb_p	pcb = NULL;  in ng_btsocket_l2cap_raw_input()  local
422 LIST_FOREACH(pcb,&ng_btsocket_l2cap_raw_sockets,next) { in ng_btsocket_l2cap_raw_input()
423 mtx_lock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_input()
425 if (pcb->token == msg->header.token) { in ng_btsocket_l2cap_raw_input()
426 pcb->msg = msg; in ng_btsocket_l2cap_raw_input()
428 wakeup(&pcb->msg); in ng_btsocket_l2cap_raw_input()
429 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_input()
433 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_input()
460 ng_btsocket_l2cap_raw_pcb_p pcb = NULL; in ng_btsocket_l2cap_raw_rtclean() local
469 LIST_FOREACH(pcb, &ng_btsocket_l2cap_raw_sockets, next) { in ng_btsocket_l2cap_raw_rtclean()
470 mtx_lock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_rtclean()
472 if (pcb->rt != NULL && in ng_btsocket_l2cap_raw_rtclean()
473 pcb->rt->hook != NULL && NG_HOOK_NOT_VALID(pcb->rt->hook)) { in ng_btsocket_l2cap_raw_rtclean()
474 if (pcb->so != NULL && in ng_btsocket_l2cap_raw_rtclean()
475 pcb->so->so_state & SS_ISCONNECTED) in ng_btsocket_l2cap_raw_rtclean()
476 soisdisconnected(pcb->so); in ng_btsocket_l2cap_raw_rtclean()
478 pcb->rt = NULL; in ng_btsocket_l2cap_raw_rtclean()
481 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_rtclean()
608 ng_btsocket_l2cap_raw_pcb_p pcb = so2l2cap_raw_pcb(so); in ng_btsocket_l2cap_raw_attach() local
611 if (pcb != NULL) in ng_btsocket_l2cap_raw_attach()
626 pcb = malloc(sizeof(*pcb), in ng_btsocket_l2cap_raw_attach()
628 if (pcb == NULL) in ng_btsocket_l2cap_raw_attach()
632 so->so_pcb = (caddr_t) pcb; in ng_btsocket_l2cap_raw_attach()
633 pcb->so = so; in ng_btsocket_l2cap_raw_attach()
636 pcb->flags |= NG_BTSOCKET_L2CAP_RAW_PRIVILEGED; in ng_btsocket_l2cap_raw_attach()
638 mtx_init(&pcb->pcb_mtx, "btsocks_l2cap_raw_pcb_mtx", NULL, MTX_DEF); in ng_btsocket_l2cap_raw_attach()
642 LIST_INSERT_HEAD(&ng_btsocket_l2cap_raw_sockets, pcb, next); in ng_btsocket_l2cap_raw_attach()
656 ng_btsocket_l2cap_raw_pcb_t *pcb = so2l2cap_raw_pcb(so); in ng_btsocket_l2cap_raw_bind() local
660 if (pcb == NULL) in ng_btsocket_l2cap_raw_bind()
693 mtx_lock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_bind()
694 bcopy(&sa->l2cap_bdaddr, &pcb->src, sizeof(pcb->src)); in ng_btsocket_l2cap_raw_bind()
695 pcb->rt = rt; in ng_btsocket_l2cap_raw_bind()
696 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_bind()
709 ng_btsocket_l2cap_raw_pcb_t *pcb = so2l2cap_raw_pcb(so); in ng_btsocket_l2cap_raw_connect() local
714 if (pcb == NULL) in ng_btsocket_l2cap_raw_connect()
730 mtx_lock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_connect()
732 bcopy(&sa->l2cap_bdaddr, &pcb->dst, sizeof(pcb->dst)); in ng_btsocket_l2cap_raw_connect()
734 if (bcmp(&pcb->src, &pcb->dst, sizeof(pcb->src)) == 0) { in ng_btsocket_l2cap_raw_connect()
735 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_connect()
744 if (pcb->rt != NULL) { in ng_btsocket_l2cap_raw_connect()
746 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_connect()
761 if (bcmp(&pcb->dst, &rt->src, sizeof(rt->src)) != 0) in ng_btsocket_l2cap_raw_connect()
768 pcb->rt = rt; in ng_btsocket_l2cap_raw_connect()
769 bcopy(&rt->src, &pcb->src, sizeof(pcb->src)); in ng_btsocket_l2cap_raw_connect()
776 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_connect()
789 ng_btsocket_l2cap_raw_pcb_p pcb = so2l2cap_raw_pcb(so); in ng_btsocket_l2cap_raw_control() local
793 if (pcb == NULL) in ng_btsocket_l2cap_raw_control()
798 mtx_lock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_control()
801 if (pcb->rt == NULL) { in ng_btsocket_l2cap_raw_control()
802 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_control()
807 if (pcb->token != 0) { in ng_btsocket_l2cap_raw_control()
808 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_control()
817 error = ng_btsocket_l2cap_raw_send_sync_ngmsg(pcb, in ng_btsocket_l2cap_raw_control()
826 error = ng_btsocket_l2cap_raw_send_sync_ngmsg(pcb, in ng_btsocket_l2cap_raw_control()
835 if (pcb->flags & NG_BTSOCKET_L2CAP_RAW_PRIVILEGED) in ng_btsocket_l2cap_raw_control()
836 error = ng_btsocket_l2cap_raw_send_ngmsg(pcb->rt->hook, in ng_btsocket_l2cap_raw_control()
852 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_control()
859 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_control()
863 pcb->token = msg->header.token; in ng_btsocket_l2cap_raw_control()
864 pcb->msg = NULL; in ng_btsocket_l2cap_raw_control()
867 pcb->rt->hook, 0); in ng_btsocket_l2cap_raw_control()
869 pcb->token = 0; in ng_btsocket_l2cap_raw_control()
870 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_control()
874 error = msleep(&pcb->msg, &pcb->pcb_mtx, PZERO|PCATCH, "l2ctl", in ng_btsocket_l2cap_raw_control()
876 pcb->token = 0; in ng_btsocket_l2cap_raw_control()
879 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_control()
883 msg = pcb->msg; in ng_btsocket_l2cap_raw_control()
884 pcb->msg = NULL; in ng_btsocket_l2cap_raw_control()
886 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_control()
916 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_control()
923 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_control()
927 pcb->token = msg->header.token; in ng_btsocket_l2cap_raw_control()
928 pcb->msg = NULL; in ng_btsocket_l2cap_raw_control()
931 pcb->rt->hook, 0); in ng_btsocket_l2cap_raw_control()
933 pcb->token = 0; in ng_btsocket_l2cap_raw_control()
934 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_control()
938 error = msleep(&pcb->msg, &pcb->pcb_mtx, PZERO|PCATCH, "l2ctl", in ng_btsocket_l2cap_raw_control()
940 pcb->token = 0; in ng_btsocket_l2cap_raw_control()
943 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_control()
947 msg = pcb->msg; in ng_btsocket_l2cap_raw_control()
948 pcb->msg = NULL; in ng_btsocket_l2cap_raw_control()
950 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_control()
979 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_control()
987 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_control()
991 pcb->token = msg->header.token; in ng_btsocket_l2cap_raw_control()
992 pcb->msg = NULL; in ng_btsocket_l2cap_raw_control()
995 bcopy(&pcb->dst, &ip->bdaddr, sizeof(ip->bdaddr)); in ng_btsocket_l2cap_raw_control()
999 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_control()
1001 mtx_lock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_control()
1005 pcb->token = 0; in ng_btsocket_l2cap_raw_control()
1006 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_control()
1012 pcb->rt->hook, 0); in ng_btsocket_l2cap_raw_control()
1014 pcb->token = 0; in ng_btsocket_l2cap_raw_control()
1015 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_control()
1019 error = msleep(&pcb->msg, &pcb->pcb_mtx, PZERO|PCATCH, "l2ctl", in ng_btsocket_l2cap_raw_control()
1021 pcb->token = 0; in ng_btsocket_l2cap_raw_control()
1024 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_control()
1028 msg = pcb->msg; in ng_btsocket_l2cap_raw_control()
1029 pcb->msg = NULL; in ng_btsocket_l2cap_raw_control()
1031 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_control()
1056 if (!(pcb->flags & NG_BTSOCKET_L2CAP_RAW_PRIVILEGED)) { in ng_btsocket_l2cap_raw_control()
1057 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_control()
1062 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_control()
1070 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_control()
1074 pcb->token = msg->header.token; in ng_btsocket_l2cap_raw_control()
1075 pcb->msg = NULL; in ng_btsocket_l2cap_raw_control()
1078 bcopy(&pcb->dst, &ip->bdaddr, sizeof(ip->bdaddr)); in ng_btsocket_l2cap_raw_control()
1082 pcb->rt->hook, 0); in ng_btsocket_l2cap_raw_control()
1084 pcb->token = 0; in ng_btsocket_l2cap_raw_control()
1085 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_control()
1089 error = msleep(&pcb->msg, &pcb->pcb_mtx, PZERO|PCATCH, "l2ctl", in ng_btsocket_l2cap_raw_control()
1091 pcb->token = 0; in ng_btsocket_l2cap_raw_control()
1094 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_control()
1098 msg = pcb->msg; in ng_btsocket_l2cap_raw_control()
1099 pcb->msg = NULL; in ng_btsocket_l2cap_raw_control()
1101 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_control()
1124 error = ng_btsocket_l2cap_raw_send_sync_ngmsg(pcb, in ng_btsocket_l2cap_raw_control()
1133 if (pcb->flags & NG_BTSOCKET_L2CAP_RAW_PRIVILEGED) in ng_btsocket_l2cap_raw_control()
1134 error = ng_btsocket_l2cap_raw_send_ngmsg(pcb->rt->hook, in ng_btsocket_l2cap_raw_control()
1146 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_control()
1158 ng_btsocket_l2cap_raw_pcb_p pcb = so2l2cap_raw_pcb(so); in ng_btsocket_l2cap_raw_detach() local
1160 KASSERT(pcb != NULL, ("nt_btsocket_l2cap_raw_detach: pcb == NULL")); in ng_btsocket_l2cap_raw_detach()
1165 mtx_lock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_detach()
1167 LIST_REMOVE(pcb, next); in ng_btsocket_l2cap_raw_detach()
1169 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_detach()
1172 mtx_destroy(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_detach()
1174 bzero(pcb, sizeof(*pcb)); in ng_btsocket_l2cap_raw_detach()
1175 free(pcb, M_NETGRAPH_BTSOCKET_L2CAP_RAW); in ng_btsocket_l2cap_raw_detach()
1187 ng_btsocket_l2cap_raw_pcb_p pcb = so2l2cap_raw_pcb(so); in ng_btsocket_l2cap_raw_disconnect() local
1189 if (pcb == NULL) in ng_btsocket_l2cap_raw_disconnect()
1194 mtx_lock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_disconnect()
1195 pcb->rt = NULL; in ng_btsocket_l2cap_raw_disconnect()
1197 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_disconnect()
1209 ng_btsocket_l2cap_raw_pcb_p pcb = so2l2cap_raw_pcb(so); in ng_btsocket_l2cap_raw_peeraddr() local
1212 if (pcb == NULL) in ng_btsocket_l2cap_raw_peeraddr()
1223 mtx_lock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_peeraddr()
1224 bcopy(&pcb->dst, &l2cap->l2cap_bdaddr, sizeof(l2cap->l2cap_bdaddr)); in ng_btsocket_l2cap_raw_peeraddr()
1225 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_peeraddr()
1251 ng_btsocket_l2cap_raw_pcb_p pcb = so2l2cap_raw_pcb(so); in ng_btsocket_l2cap_raw_sockaddr() local
1254 if (pcb == NULL) in ng_btsocket_l2cap_raw_sockaddr()
1265 mtx_lock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_sockaddr()
1266 bcopy(&pcb->src, &l2cap->l2cap_bdaddr, sizeof(l2cap->l2cap_bdaddr)); in ng_btsocket_l2cap_raw_sockaddr()
1267 mtx_unlock(&pcb->pcb_mtx); in ng_btsocket_l2cap_raw_sockaddr()
1316 ng_btsocket_l2cap_raw_send_sync_ngmsg(ng_btsocket_l2cap_raw_pcb_p pcb, in ng_btsocket_l2cap_raw_send_sync_ngmsg() argument
1322 mtx_assert(&pcb->pcb_mtx, MA_OWNED); in ng_btsocket_l2cap_raw_send_sync_ngmsg()
1329 pcb->token = msg->header.token; in ng_btsocket_l2cap_raw_send_sync_ngmsg()
1330 pcb->msg = NULL; in ng_btsocket_l2cap_raw_send_sync_ngmsg()
1333 pcb->rt->hook, 0); in ng_btsocket_l2cap_raw_send_sync_ngmsg()
1335 pcb->token = 0; in ng_btsocket_l2cap_raw_send_sync_ngmsg()
1339 error = msleep(&pcb->msg, &pcb->pcb_mtx, PZERO|PCATCH, "l2ctl", in ng_btsocket_l2cap_raw_send_sync_ngmsg()
1341 pcb->token = 0; in ng_btsocket_l2cap_raw_send_sync_ngmsg()
1346 if (pcb->msg != NULL && pcb->msg->header.cmd == cmd) in ng_btsocket_l2cap_raw_send_sync_ngmsg()
1347 bcopy(pcb->msg->data, rsp, rsplen); in ng_btsocket_l2cap_raw_send_sync_ngmsg()
1351 NG_FREE_MSG(pcb->msg); /* checks for != NULL */ in ng_btsocket_l2cap_raw_send_sync_ngmsg()