Lines Matching refs:ept

167 static void virtio_rpmsg_destroy_ept(struct rpmsg_endpoint *ept);
168 static int virtio_rpmsg_send(struct rpmsg_endpoint *ept, void *data, int len);
169 static int virtio_rpmsg_sendto(struct rpmsg_endpoint *ept, void *data, int len,
171 static int virtio_rpmsg_send_offchannel(struct rpmsg_endpoint *ept, u32 src,
173 static int virtio_rpmsg_trysend(struct rpmsg_endpoint *ept, void *data, int len);
174 static int virtio_rpmsg_trysendto(struct rpmsg_endpoint *ept, void *data,
176 static int virtio_rpmsg_trysend_offchannel(struct rpmsg_endpoint *ept, u32 src,
222 struct rpmsg_endpoint *ept = container_of(kref, struct rpmsg_endpoint, in __ept_release() local
228 kfree(ept); in __ept_release()
238 struct rpmsg_endpoint *ept; in __rpmsg_create_ept() local
241 ept = kzalloc(sizeof(*ept), GFP_KERNEL); in __rpmsg_create_ept()
242 if (!ept) in __rpmsg_create_ept()
245 kref_init(&ept->refcount); in __rpmsg_create_ept()
246 mutex_init(&ept->cb_lock); in __rpmsg_create_ept()
248 ept->rpdev = rpdev; in __rpmsg_create_ept()
249 ept->cb = cb; in __rpmsg_create_ept()
250 ept->priv = priv; in __rpmsg_create_ept()
251 ept->ops = &virtio_endpoint_ops; in __rpmsg_create_ept()
265 id = idr_alloc(&vrp->endpoints, ept, id_min, id_max, GFP_KERNEL); in __rpmsg_create_ept()
270 ept->addr = id; in __rpmsg_create_ept()
274 return ept; in __rpmsg_create_ept()
278 kref_put(&ept->refcount, __ept_release); in __rpmsg_create_ept()
303 __rpmsg_destroy_ept(struct virtproc_info *vrp, struct rpmsg_endpoint *ept) in __rpmsg_destroy_ept() argument
307 idr_remove(&vrp->endpoints, ept->addr); in __rpmsg_destroy_ept()
311 mutex_lock(&ept->cb_lock); in __rpmsg_destroy_ept()
312 ept->cb = NULL; in __rpmsg_destroy_ept()
313 mutex_unlock(&ept->cb_lock); in __rpmsg_destroy_ept()
315 kref_put(&ept->refcount, __ept_release); in __rpmsg_destroy_ept()
318 static void virtio_rpmsg_destroy_ept(struct rpmsg_endpoint *ept) in virtio_rpmsg_destroy_ept() argument
320 struct virtio_rpmsg_channel *vch = to_virtio_rpmsg_channel(ept->rpdev); in virtio_rpmsg_destroy_ept()
322 __rpmsg_destroy_ept(vch->vrp, ept); in virtio_rpmsg_destroy_ept()
333 if (rpdev->announce && rpdev->ept && in virtio_rpmsg_announce_create()
338 nsm.addr = rpdev->ept->addr; in virtio_rpmsg_announce_create()
341 err = rpmsg_sendto(rpdev->ept, &nsm, sizeof(nsm), RPMSG_NS_ADDR); in virtio_rpmsg_announce_create()
357 if (rpdev->announce && rpdev->ept && in virtio_rpmsg_announce_destroy()
362 nsm.addr = rpdev->ept->addr; in virtio_rpmsg_announce_destroy()
365 err = rpmsg_sendto(rpdev->ept, &nsm, sizeof(nsm), RPMSG_NS_ADDR); in virtio_rpmsg_announce_destroy()
652 static int virtio_rpmsg_send(struct rpmsg_endpoint *ept, void *data, int len) in virtio_rpmsg_send() argument
654 struct rpmsg_device *rpdev = ept->rpdev; in virtio_rpmsg_send()
655 u32 src = ept->addr, dst = rpdev->dst; in virtio_rpmsg_send()
660 static int virtio_rpmsg_sendto(struct rpmsg_endpoint *ept, void *data, int len, in virtio_rpmsg_sendto() argument
663 struct rpmsg_device *rpdev = ept->rpdev; in virtio_rpmsg_sendto()
664 u32 src = ept->addr; in virtio_rpmsg_sendto()
669 static int virtio_rpmsg_send_offchannel(struct rpmsg_endpoint *ept, u32 src, in virtio_rpmsg_send_offchannel() argument
672 struct rpmsg_device *rpdev = ept->rpdev; in virtio_rpmsg_send_offchannel()
677 static int virtio_rpmsg_trysend(struct rpmsg_endpoint *ept, void *data, int len) in virtio_rpmsg_trysend() argument
679 struct rpmsg_device *rpdev = ept->rpdev; in virtio_rpmsg_trysend()
680 u32 src = ept->addr, dst = rpdev->dst; in virtio_rpmsg_trysend()
685 static int virtio_rpmsg_trysendto(struct rpmsg_endpoint *ept, void *data, in virtio_rpmsg_trysendto() argument
688 struct rpmsg_device *rpdev = ept->rpdev; in virtio_rpmsg_trysendto()
689 u32 src = ept->addr; in virtio_rpmsg_trysendto()
694 static int virtio_rpmsg_trysend_offchannel(struct rpmsg_endpoint *ept, u32 src, in virtio_rpmsg_trysend_offchannel() argument
697 struct rpmsg_device *rpdev = ept->rpdev; in virtio_rpmsg_trysend_offchannel()
705 struct rpmsg_endpoint *ept; in rpmsg_recv_single() local
729 ept = idr_find(&vrp->endpoints, msg->dst); in rpmsg_recv_single()
732 if (ept) in rpmsg_recv_single()
733 kref_get(&ept->refcount); in rpmsg_recv_single()
737 if (ept) { in rpmsg_recv_single()
739 mutex_lock(&ept->cb_lock); in rpmsg_recv_single()
741 if (ept->cb) in rpmsg_recv_single()
742 ept->cb(ept->rpdev, msg->data, msg->len, ept->priv, in rpmsg_recv_single()
745 mutex_unlock(&ept->cb_lock); in rpmsg_recv_single()
748 kref_put(&ept->refcount, __ept_release); in rpmsg_recv_single()