Lines Matching refs:ept
173 static void virtio_rpmsg_destroy_ept(struct rpmsg_endpoint *ept);
174 static int virtio_rpmsg_send(struct rpmsg_endpoint *ept, void *data, int len);
175 static int virtio_rpmsg_sendto(struct rpmsg_endpoint *ept, void *data, int len,
177 static int virtio_rpmsg_send_offchannel(struct rpmsg_endpoint *ept, u32 src,
179 static int virtio_rpmsg_trysend(struct rpmsg_endpoint *ept, void *data, int len);
180 static int virtio_rpmsg_trysendto(struct rpmsg_endpoint *ept, void *data,
182 static int virtio_rpmsg_trysend_offchannel(struct rpmsg_endpoint *ept, u32 src,
228 struct rpmsg_endpoint *ept = container_of(kref, struct rpmsg_endpoint, in __ept_release() local
234 kfree(ept); in __ept_release()
244 struct rpmsg_endpoint *ept; in __rpmsg_create_ept() local
247 ept = kzalloc(sizeof(*ept), GFP_KERNEL); in __rpmsg_create_ept()
248 if (!ept) in __rpmsg_create_ept()
251 kref_init(&ept->refcount); in __rpmsg_create_ept()
252 mutex_init(&ept->cb_lock); in __rpmsg_create_ept()
254 ept->rpdev = rpdev; in __rpmsg_create_ept()
255 ept->cb = cb; in __rpmsg_create_ept()
256 ept->priv = priv; in __rpmsg_create_ept()
257 ept->ops = &virtio_endpoint_ops; in __rpmsg_create_ept()
271 id = idr_alloc(&vrp->endpoints, ept, id_min, id_max, GFP_KERNEL); in __rpmsg_create_ept()
276 ept->addr = id; in __rpmsg_create_ept()
280 return ept; in __rpmsg_create_ept()
284 kref_put(&ept->refcount, __ept_release); in __rpmsg_create_ept()
309 __rpmsg_destroy_ept(struct virtproc_info *vrp, struct rpmsg_endpoint *ept) in __rpmsg_destroy_ept() argument
313 idr_remove(&vrp->endpoints, ept->addr); in __rpmsg_destroy_ept()
317 mutex_lock(&ept->cb_lock); in __rpmsg_destroy_ept()
318 ept->cb = NULL; in __rpmsg_destroy_ept()
319 mutex_unlock(&ept->cb_lock); in __rpmsg_destroy_ept()
321 kref_put(&ept->refcount, __ept_release); in __rpmsg_destroy_ept()
324 static void virtio_rpmsg_destroy_ept(struct rpmsg_endpoint *ept) in virtio_rpmsg_destroy_ept() argument
326 struct virtio_rpmsg_channel *vch = to_virtio_rpmsg_channel(ept->rpdev); in virtio_rpmsg_destroy_ept()
328 __rpmsg_destroy_ept(vch->vrp, ept); in virtio_rpmsg_destroy_ept()
339 if (rpdev->announce && rpdev->ept && in virtio_rpmsg_announce_create()
344 nsm.addr = cpu_to_virtio32(vrp->vdev, rpdev->ept->addr); in virtio_rpmsg_announce_create()
347 err = rpmsg_sendto(rpdev->ept, &nsm, sizeof(nsm), RPMSG_NS_ADDR); in virtio_rpmsg_announce_create()
363 if (rpdev->announce && rpdev->ept && in virtio_rpmsg_announce_destroy()
368 nsm.addr = cpu_to_virtio32(vrp->vdev, rpdev->ept->addr); in virtio_rpmsg_announce_destroy()
371 err = rpmsg_sendto(rpdev->ept, &nsm, sizeof(nsm), RPMSG_NS_ADDR); in virtio_rpmsg_announce_destroy()
658 static int virtio_rpmsg_send(struct rpmsg_endpoint *ept, void *data, int len) in virtio_rpmsg_send() argument
660 struct rpmsg_device *rpdev = ept->rpdev; in virtio_rpmsg_send()
661 u32 src = ept->addr, dst = rpdev->dst; in virtio_rpmsg_send()
666 static int virtio_rpmsg_sendto(struct rpmsg_endpoint *ept, void *data, int len, in virtio_rpmsg_sendto() argument
669 struct rpmsg_device *rpdev = ept->rpdev; in virtio_rpmsg_sendto()
670 u32 src = ept->addr; in virtio_rpmsg_sendto()
675 static int virtio_rpmsg_send_offchannel(struct rpmsg_endpoint *ept, u32 src, in virtio_rpmsg_send_offchannel() argument
678 struct rpmsg_device *rpdev = ept->rpdev; in virtio_rpmsg_send_offchannel()
683 static int virtio_rpmsg_trysend(struct rpmsg_endpoint *ept, void *data, int len) in virtio_rpmsg_trysend() argument
685 struct rpmsg_device *rpdev = ept->rpdev; in virtio_rpmsg_trysend()
686 u32 src = ept->addr, dst = rpdev->dst; in virtio_rpmsg_trysend()
691 static int virtio_rpmsg_trysendto(struct rpmsg_endpoint *ept, void *data, in virtio_rpmsg_trysendto() argument
694 struct rpmsg_device *rpdev = ept->rpdev; in virtio_rpmsg_trysendto()
695 u32 src = ept->addr; in virtio_rpmsg_trysendto()
700 static int virtio_rpmsg_trysend_offchannel(struct rpmsg_endpoint *ept, u32 src, in virtio_rpmsg_trysend_offchannel() argument
703 struct rpmsg_device *rpdev = ept->rpdev; in virtio_rpmsg_trysend_offchannel()
711 struct rpmsg_endpoint *ept; in rpmsg_recv_single() local
739 ept = idr_find(&vrp->endpoints, virtio32_to_cpu(vrp->vdev, msg->dst)); in rpmsg_recv_single()
742 if (ept) in rpmsg_recv_single()
743 kref_get(&ept->refcount); in rpmsg_recv_single()
747 if (ept) { in rpmsg_recv_single()
749 mutex_lock(&ept->cb_lock); in rpmsg_recv_single()
751 if (ept->cb) in rpmsg_recv_single()
752 ept->cb(ept->rpdev, msg->data, msg_len, ept->priv, in rpmsg_recv_single()
755 mutex_unlock(&ept->cb_lock); in rpmsg_recv_single()
758 kref_put(&ept->refcount, __ept_release); in rpmsg_recv_single()