Lines Matching refs:pcb

417 			ng_btsocket_l2cap_raw_pcb_p	pcb = NULL;
421 LIST_FOREACH(pcb,&ng_btsocket_l2cap_raw_sockets,next) {
422 mtx_lock(&pcb->pcb_mtx);
424 if (pcb->token == msg->header.token) {
425 pcb->msg = msg;
427 wakeup(&pcb->msg);
428 mtx_unlock(&pcb->pcb_mtx);
432 mtx_unlock(&pcb->pcb_mtx);
459 ng_btsocket_l2cap_raw_pcb_p pcb = NULL;
468 LIST_FOREACH(pcb, &ng_btsocket_l2cap_raw_sockets, next) {
469 mtx_lock(&pcb->pcb_mtx);
471 if (pcb->rt != NULL &&
472 pcb->rt->hook != NULL && NG_HOOK_NOT_VALID(pcb->rt->hook)) {
473 if (pcb->so != NULL &&
474 pcb->so->so_state & SS_ISCONNECTED)
475 soisdisconnected(pcb->so);
477 pcb->rt = NULL;
480 mtx_unlock(&pcb->pcb_mtx);
609 ng_btsocket_l2cap_raw_pcb_p pcb = so2l2cap_raw_pcb(so);
612 if (pcb != NULL)
627 pcb = malloc(sizeof(*pcb),
629 if (pcb == NULL)
633 so->so_pcb = (caddr_t) pcb;
634 pcb->so = so;
637 pcb->flags |= NG_BTSOCKET_L2CAP_RAW_PRIVILEGED;
639 mtx_init(&pcb->pcb_mtx, "btsocks_l2cap_raw_pcb_mtx", NULL, MTX_DEF);
643 LIST_INSERT_HEAD(&ng_btsocket_l2cap_raw_sockets, pcb, next);
657 ng_btsocket_l2cap_raw_pcb_t *pcb = so2l2cap_raw_pcb(so);
661 if (pcb == NULL)
694 mtx_lock(&pcb->pcb_mtx);
695 bcopy(&sa->l2cap_bdaddr, &pcb->src, sizeof(pcb->src));
696 pcb->rt = rt;
697 mtx_unlock(&pcb->pcb_mtx);
710 ng_btsocket_l2cap_raw_pcb_t *pcb = so2l2cap_raw_pcb(so);
715 if (pcb == NULL)
731 mtx_lock(&pcb->pcb_mtx);
733 bcopy(&sa->l2cap_bdaddr, &pcb->dst, sizeof(pcb->dst));
735 if (bcmp(&pcb->src, &pcb->dst, sizeof(pcb->src)) == 0) {
736 mtx_unlock(&pcb->pcb_mtx);
745 if (pcb->rt != NULL) {
747 mtx_unlock(&pcb->pcb_mtx);
762 if (bcmp(&pcb->dst, &rt->src, sizeof(rt->src)) != 0)
769 pcb->rt = rt;
770 bcopy(&rt->src, &pcb->src, sizeof(pcb->src));
777 mtx_unlock(&pcb->pcb_mtx);
790 ng_btsocket_l2cap_raw_pcb_p pcb = so2l2cap_raw_pcb(so);
794 if (pcb == NULL)
799 mtx_lock(&pcb->pcb_mtx);
802 if (pcb->rt == NULL) {
803 mtx_unlock(&pcb->pcb_mtx);
808 if (pcb->token != 0) {
809 mtx_unlock(&pcb->pcb_mtx);
818 error = ng_btsocket_l2cap_raw_send_sync_ngmsg(pcb,
827 error = ng_btsocket_l2cap_raw_send_sync_ngmsg(pcb,
836 if (pcb->flags & NG_BTSOCKET_L2CAP_RAW_PRIVILEGED)
837 error = ng_btsocket_l2cap_raw_send_ngmsg(pcb->rt->hook,
864 pcb->token = msg->header.token;
865 pcb->msg = NULL;
868 pcb->rt->hook, 0);
870 pcb->token = 0;
874 error = msleep(&pcb->msg, &pcb->pcb_mtx, PZERO|PCATCH, "l2ctl",
876 pcb->token = 0;
881 if (pcb->msg != NULL &&
882 pcb->msg->header.cmd == NGM_L2CAP_NODE_GET_CON_LIST) {
884 p1 = (ng_l2cap_node_con_list_ep *)(pcb->msg->data);
896 NG_FREE_MSG(pcb->msg); /* checks for != NULL */
919 pcb->token = msg->header.token;
920 pcb->msg = NULL;
923 pcb->rt->hook, 0);
925 pcb->token = 0;
929 error = msleep(&pcb->msg, &pcb->pcb_mtx, PZERO|PCATCH, "l2ctl",
931 pcb->token = 0;
936 if (pcb->msg != NULL &&
937 pcb->msg->header.cmd == NGM_L2CAP_NODE_GET_CHAN_LIST) {
939 p1 = (ng_l2cap_node_chan_list_ep *)(pcb->msg->data);
951 NG_FREE_MSG(pcb->msg); /* checks for != NULL */
974 pcb->token = msg->header.token;
975 pcb->msg = NULL;
978 bcopy(&pcb->dst, &ip->bdaddr, sizeof(ip->bdaddr));
985 pcb->token = 0;
991 pcb->rt->hook, 0);
993 pcb->token = 0;
997 error = msleep(&pcb->msg, &pcb->pcb_mtx, PZERO|PCATCH, "l2ctl",
999 pcb->token = 0;
1004 if (pcb->msg != NULL &&
1005 pcb->msg->header.cmd == NGM_L2CAP_L2CA_PING) {
1007 op = (ng_l2cap_l2ca_ping_op *)(pcb->msg->data);
1017 NG_FREE_MSG(pcb->msg); /* checks for != NULL */
1026 if (!(pcb->flags & NG_BTSOCKET_L2CAP_RAW_PRIVILEGED)) {
1044 pcb->token = msg->header.token;
1045 pcb->msg = NULL;
1048 bcopy(&pcb->dst, &ip->bdaddr, sizeof(ip->bdaddr));
1052 pcb->rt->hook, 0);
1054 pcb->token = 0;
1058 error = msleep(&pcb->msg, &pcb->pcb_mtx, PZERO|PCATCH, "l2ctl",
1060 pcb->token = 0;
1065 if (pcb->msg != NULL &&
1066 pcb->msg->header.cmd == NGM_L2CAP_L2CA_GET_INFO) {
1068 op = (ng_l2cap_l2ca_get_info_op *)(pcb->msg->data);
1078 NG_FREE_MSG(pcb->msg); /* checks for != NULL */
1085 error = ng_btsocket_l2cap_raw_send_sync_ngmsg(pcb,
1094 if (pcb->flags & NG_BTSOCKET_L2CAP_RAW_PRIVILEGED)
1095 error = ng_btsocket_l2cap_raw_send_ngmsg(pcb->rt->hook,
1107 mtx_unlock(&pcb->pcb_mtx);
1119 ng_btsocket_l2cap_raw_pcb_p pcb = so2l2cap_raw_pcb(so);
1121 KASSERT(pcb != NULL, ("nt_btsocket_l2cap_raw_detach: pcb == NULL"));
1126 mtx_lock(&pcb->pcb_mtx);
1128 LIST_REMOVE(pcb, next);
1130 mtx_unlock(&pcb->pcb_mtx);
1133 mtx_destroy(&pcb->pcb_mtx);
1135 bzero(pcb, sizeof(*pcb));
1136 free(pcb, M_NETGRAPH_BTSOCKET_L2CAP_RAW);
1148 ng_btsocket_l2cap_raw_pcb_p pcb = so2l2cap_raw_pcb(so);
1150 if (pcb == NULL)
1155 mtx_lock(&pcb->pcb_mtx);
1156 pcb->rt = NULL;
1158 mtx_unlock(&pcb->pcb_mtx);
1170 ng_btsocket_l2cap_raw_pcb_p pcb = so2l2cap_raw_pcb(so);
1173 if (pcb == NULL)
1178 mtx_lock(&pcb->pcb_mtx);
1179 bcopy(&pcb->dst, &sa.l2cap_bdaddr, sizeof(sa.l2cap_bdaddr));
1180 mtx_unlock(&pcb->pcb_mtx);
1214 ng_btsocket_l2cap_raw_pcb_p pcb = so2l2cap_raw_pcb(so);
1217 if (pcb == NULL)
1222 mtx_lock(&pcb->pcb_mtx);
1223 bcopy(&pcb->src, &sa.l2cap_bdaddr, sizeof(sa.l2cap_bdaddr));
1224 mtx_unlock(&pcb->pcb_mtx);
1280 ng_btsocket_l2cap_raw_send_sync_ngmsg(ng_btsocket_l2cap_raw_pcb_p pcb,
1286 mtx_assert(&pcb->pcb_mtx, MA_OWNED);
1293 pcb->token = msg->header.token;
1294 pcb->msg = NULL;
1297 pcb->rt->hook, 0);
1299 pcb->token = 0;
1303 error = msleep(&pcb->msg, &pcb->pcb_mtx, PZERO|PCATCH, "l2ctl",
1305 pcb->token = 0;
1310 if (pcb->msg != NULL && pcb->msg->header.cmd == cmd)
1311 bcopy(pcb->msg->data, rsp, rsplen);
1315 NG_FREE_MSG(pcb->msg); /* checks for != NULL */