Lines Matching refs:ept
140 static void virtio_rpmsg_destroy_ept(struct rpmsg_endpoint *ept);
141 static int virtio_rpmsg_send(struct rpmsg_endpoint *ept, void *data, int len);
142 static int virtio_rpmsg_sendto(struct rpmsg_endpoint *ept, void *data, int len,
144 static int virtio_rpmsg_trysend(struct rpmsg_endpoint *ept, void *data, int len);
145 static int virtio_rpmsg_trysendto(struct rpmsg_endpoint *ept, void *data,
147 static ssize_t virtio_rpmsg_get_mtu(struct rpmsg_endpoint *ept);
193 struct rpmsg_endpoint *ept = container_of(kref, struct rpmsg_endpoint, in __ept_release() local
199 kfree(ept); in __ept_release()
209 struct rpmsg_endpoint *ept; in __rpmsg_create_ept() local
212 ept = kzalloc(sizeof(*ept), GFP_KERNEL); in __rpmsg_create_ept()
213 if (!ept) in __rpmsg_create_ept()
216 kref_init(&ept->refcount); in __rpmsg_create_ept()
217 mutex_init(&ept->cb_lock); in __rpmsg_create_ept()
219 ept->rpdev = rpdev; in __rpmsg_create_ept()
220 ept->cb = cb; in __rpmsg_create_ept()
221 ept->priv = priv; in __rpmsg_create_ept()
222 ept->ops = &virtio_endpoint_ops; in __rpmsg_create_ept()
236 id = idr_alloc(&vrp->endpoints, ept, id_min, id_max, GFP_KERNEL); in __rpmsg_create_ept()
241 ept->addr = id; in __rpmsg_create_ept()
245 return ept; in __rpmsg_create_ept()
249 kref_put(&ept->refcount, __ept_release); in __rpmsg_create_ept()
292 __rpmsg_destroy_ept(struct virtproc_info *vrp, struct rpmsg_endpoint *ept) in __rpmsg_destroy_ept() argument
296 idr_remove(&vrp->endpoints, ept->addr); in __rpmsg_destroy_ept()
300 mutex_lock(&ept->cb_lock); in __rpmsg_destroy_ept()
301 ept->cb = NULL; in __rpmsg_destroy_ept()
302 mutex_unlock(&ept->cb_lock); in __rpmsg_destroy_ept()
304 kref_put(&ept->refcount, __ept_release); in __rpmsg_destroy_ept()
307 static void virtio_rpmsg_destroy_ept(struct rpmsg_endpoint *ept) in virtio_rpmsg_destroy_ept() argument
309 struct virtio_rpmsg_channel *vch = to_virtio_rpmsg_channel(ept->rpdev); in virtio_rpmsg_destroy_ept()
311 __rpmsg_destroy_ept(vch->vrp, ept); in virtio_rpmsg_destroy_ept()
322 if (rpdev->announce && rpdev->ept && in virtio_rpmsg_announce_create()
327 nsm.addr = cpu_to_rpmsg32(rpdev, rpdev->ept->addr); in virtio_rpmsg_announce_create()
330 err = rpmsg_sendto(rpdev->ept, &nsm, sizeof(nsm), RPMSG_NS_ADDR); in virtio_rpmsg_announce_create()
346 if (rpdev->announce && rpdev->ept && in virtio_rpmsg_announce_destroy()
351 nsm.addr = cpu_to_rpmsg32(rpdev, rpdev->ept->addr); in virtio_rpmsg_announce_destroy()
354 err = rpmsg_sendto(rpdev->ept, &nsm, sizeof(nsm), RPMSG_NS_ADDR); in virtio_rpmsg_announce_destroy()
645 static int virtio_rpmsg_send(struct rpmsg_endpoint *ept, void *data, int len) in virtio_rpmsg_send() argument
647 struct rpmsg_device *rpdev = ept->rpdev; in virtio_rpmsg_send()
648 u32 src = ept->addr, dst = rpdev->dst; in virtio_rpmsg_send()
653 static int virtio_rpmsg_sendto(struct rpmsg_endpoint *ept, void *data, int len, in virtio_rpmsg_sendto() argument
656 struct rpmsg_device *rpdev = ept->rpdev; in virtio_rpmsg_sendto()
657 u32 src = ept->addr; in virtio_rpmsg_sendto()
662 static int virtio_rpmsg_trysend(struct rpmsg_endpoint *ept, void *data, int len) in virtio_rpmsg_trysend() argument
664 struct rpmsg_device *rpdev = ept->rpdev; in virtio_rpmsg_trysend()
665 u32 src = ept->addr, dst = rpdev->dst; in virtio_rpmsg_trysend()
670 static int virtio_rpmsg_trysendto(struct rpmsg_endpoint *ept, void *data, in virtio_rpmsg_trysendto() argument
673 struct rpmsg_device *rpdev = ept->rpdev; in virtio_rpmsg_trysendto()
674 u32 src = ept->addr; in virtio_rpmsg_trysendto()
679 static ssize_t virtio_rpmsg_get_mtu(struct rpmsg_endpoint *ept) in virtio_rpmsg_get_mtu() argument
681 struct rpmsg_device *rpdev = ept->rpdev; in virtio_rpmsg_get_mtu()
690 struct rpmsg_endpoint *ept; in rpmsg_recv_single() local
719 ept = idr_find(&vrp->endpoints, __rpmsg32_to_cpu(little_endian, msg->dst)); in rpmsg_recv_single()
722 if (ept) in rpmsg_recv_single()
723 kref_get(&ept->refcount); in rpmsg_recv_single()
727 if (ept) { in rpmsg_recv_single()
729 mutex_lock(&ept->cb_lock); in rpmsg_recv_single()
731 if (ept->cb) in rpmsg_recv_single()
732 ept->cb(ept->rpdev, msg->data, msg_len, ept->priv, in rpmsg_recv_single()
735 mutex_unlock(&ept->cb_lock); in rpmsg_recv_single()
738 kref_put(&ept->refcount, __ept_release); in rpmsg_recv_single()