Lines Matching refs:ipc

161 static void qrtr_port_put(struct qrtr_sock *ipc);
440 struct qrtr_sock *ipc;
530 ipc = qrtr_port_lookup(cb->dst_port);
531 if (!ipc)
534 if (sock_queue_rcv_skb(&ipc->sk, skb)) {
535 qrtr_port_put(ipc);
539 qrtr_port_put(ipc);
669 struct qrtr_sock *ipc;
675 ipc = xa_load(&qrtr_ports, port);
676 if (ipc)
677 sock_hold(&ipc->sk);
680 return ipc;
684 static void qrtr_port_put(struct qrtr_sock *ipc)
686 sock_put(&ipc->sk);
690 static void qrtr_port_remove(struct qrtr_sock *ipc)
694 int port = ipc->us.sq_port;
704 pkt->client.node = cpu_to_le32(ipc->us.sq_node);
705 pkt->client.port = cpu_to_le32(ipc->us.sq_port);
707 skb_set_owner_w(skb, &ipc->sk);
708 qrtr_bcast_enqueue(NULL, skb, QRTR_TYPE_DEL_CLIENT, &ipc->us,
715 __sock_put(&ipc->sk);
734 static int qrtr_port_assign(struct qrtr_sock *ipc, int *port)
739 rc = xa_alloc(&qrtr_ports, port, ipc, QRTR_EPH_PORT_RANGE,
744 rc = xa_insert(&qrtr_ports, 0, ipc, GFP_KERNEL);
746 rc = xa_insert(&qrtr_ports, *port, ipc, GFP_KERNEL);
754 sock_hold(&ipc->sk);
762 struct qrtr_sock *ipc;
766 xa_for_each_start(&qrtr_ports, index, ipc, 1) {
767 sock_hold(&ipc->sk);
768 ipc->sk.sk_err = ENETRESET;
769 sk_error_report(&ipc->sk);
770 sock_put(&ipc->sk);
782 struct qrtr_sock *ipc = qrtr_sk(sock->sk);
788 if (!zapped && addr->sq_port == ipc->us.sq_port)
792 rc = qrtr_port_assign(ipc, &port);
798 qrtr_port_remove(ipc);
799 ipc->us.sq_port = port;
830 struct qrtr_sock *ipc = qrtr_sk(sock->sk);
837 if (addr->sq_node != ipc->us.sq_node)
852 struct qrtr_sock *ipc;
855 ipc = qrtr_port_lookup(to->sq_port);
856 if (!ipc || &ipc->sk == skb->sk) { /* do not send to self */
857 if (ipc)
858 qrtr_port_put(ipc);
867 if (sock_queue_rcv_skb(&ipc->sk, skb)) {
868 qrtr_port_put(ipc);
873 qrtr_port_put(ipc);
906 struct qrtr_sock *ipc = qrtr_sk(sock->sk);
939 addr = &ipc->peer;
953 } else if (addr->sq_node == ipc->us.sq_node) {
980 if (ipc->us.sq_port == QRTR_PORT_CTRL) {
992 rc = enqueue_fn(node, skb, type, &ipc->us, addr);
1091 struct qrtr_sock *ipc = qrtr_sk(sock->sk);
1109 ipc->peer = *addr;
1121 struct qrtr_sock *ipc = qrtr_sk(sock->sk);
1132 qaddr = ipc->peer;
1134 qaddr = ipc->us;
1148 struct qrtr_sock *ipc = qrtr_sk(sock->sk);
1178 *sq = ipc->us;
1208 struct qrtr_sock *ipc;
1215 ipc = qrtr_sk(sk);
1225 qrtr_port_remove(ipc);
1263 struct qrtr_sock *ipc;
1278 ipc = qrtr_sk(sk);
1279 ipc->us.sq_family = AF_QIPCRTR;
1280 ipc->us.sq_node = qrtr_local_nid;
1281 ipc->us.sq_port = 0;