Lines Matching refs:ipc
159 static void qrtr_port_put(struct qrtr_sock *ipc);
432 struct qrtr_sock *ipc;
519 ipc = qrtr_port_lookup(cb->dst_port);
520 if (!ipc)
523 if (sock_queue_rcv_skb(&ipc->sk, skb)) {
524 qrtr_port_put(ipc);
528 qrtr_port_put(ipc);
648 struct qrtr_sock *ipc;
654 ipc = xa_load(&qrtr_ports, port);
655 if (ipc)
656 sock_hold(&ipc->sk);
659 return ipc;
663 static void qrtr_port_put(struct qrtr_sock *ipc)
665 sock_put(&ipc->sk);
669 static void qrtr_port_remove(struct qrtr_sock *ipc)
673 int port = ipc->us.sq_port;
683 pkt->client.node = cpu_to_le32(ipc->us.sq_node);
684 pkt->client.port = cpu_to_le32(ipc->us.sq_port);
686 skb_set_owner_w(skb, &ipc->sk);
687 qrtr_bcast_enqueue(NULL, skb, QRTR_TYPE_DEL_CLIENT, &ipc->us,
694 __sock_put(&ipc->sk);
713 static int qrtr_port_assign(struct qrtr_sock *ipc, int *port)
718 rc = xa_alloc(&qrtr_ports, port, ipc, QRTR_EPH_PORT_RANGE,
723 rc = xa_insert(&qrtr_ports, 0, ipc, GFP_KERNEL);
725 rc = xa_insert(&qrtr_ports, *port, ipc, GFP_KERNEL);
733 sock_hold(&ipc->sk);
741 struct qrtr_sock *ipc;
745 xa_for_each_start(&qrtr_ports, index, ipc, 1) {
746 sock_hold(&ipc->sk);
747 ipc->sk.sk_err = ENETRESET;
748 ipc->sk.sk_error_report(&ipc->sk);
749 sock_put(&ipc->sk);
761 struct qrtr_sock *ipc = qrtr_sk(sock->sk);
767 if (!zapped && addr->sq_port == ipc->us.sq_port)
771 rc = qrtr_port_assign(ipc, &port);
777 qrtr_port_remove(ipc);
778 ipc->us.sq_port = port;
809 struct qrtr_sock *ipc = qrtr_sk(sock->sk);
816 if (addr->sq_node != ipc->us.sq_node)
831 struct qrtr_sock *ipc;
834 ipc = qrtr_port_lookup(to->sq_port);
835 if (!ipc || &ipc->sk == skb->sk) { /* do not send to self */
836 if (ipc)
837 qrtr_port_put(ipc);
846 if (sock_queue_rcv_skb(&ipc->sk, skb)) {
847 qrtr_port_put(ipc);
852 qrtr_port_put(ipc);
885 struct qrtr_sock *ipc = qrtr_sk(sock->sk);
918 addr = &ipc->peer;
932 } else if (addr->sq_node == ipc->us.sq_node) {
959 if (ipc->us.sq_port == QRTR_PORT_CTRL) {
971 rc = enqueue_fn(node, skb, type, &ipc->us, addr);
1071 struct qrtr_sock *ipc = qrtr_sk(sock->sk);
1089 ipc->peer = *addr;
1101 struct qrtr_sock *ipc = qrtr_sk(sock->sk);
1112 qaddr = ipc->peer;
1114 qaddr = ipc->us;
1128 struct qrtr_sock *ipc = qrtr_sk(sock->sk);
1158 *sq = ipc->us;
1188 struct qrtr_sock *ipc;
1195 ipc = qrtr_sk(sk);
1205 qrtr_port_remove(ipc);
1244 struct qrtr_sock *ipc;
1259 ipc = qrtr_sk(sk);
1260 ipc->us.sq_family = AF_QIPCRTR;
1261 ipc->us.sq_node = qrtr_local_nid;
1262 ipc->us.sq_port = 0;