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_send_offchannel(struct rpmsg_endpoint *ept, u32 src,
146 static int virtio_rpmsg_trysend(struct rpmsg_endpoint *ept, void *data, int len);
147 static int virtio_rpmsg_trysendto(struct rpmsg_endpoint *ept, void *data,
149 static int virtio_rpmsg_trysend_offchannel(struct rpmsg_endpoint *ept, u32 src,
151 static ssize_t virtio_rpmsg_get_mtu(struct rpmsg_endpoint *ept);
199 struct rpmsg_endpoint *ept = container_of(kref, struct rpmsg_endpoint, in __ept_release() local
205 kfree(ept); in __ept_release()
215 struct rpmsg_endpoint *ept; in __rpmsg_create_ept() local
218 ept = kzalloc(sizeof(*ept), GFP_KERNEL); in __rpmsg_create_ept()
219 if (!ept) in __rpmsg_create_ept()
222 kref_init(&ept->refcount); in __rpmsg_create_ept()
223 mutex_init(&ept->cb_lock); in __rpmsg_create_ept()
225 ept->rpdev = rpdev; in __rpmsg_create_ept()
226 ept->cb = cb; in __rpmsg_create_ept()
227 ept->priv = priv; in __rpmsg_create_ept()
228 ept->ops = &virtio_endpoint_ops; in __rpmsg_create_ept()
242 id = idr_alloc(&vrp->endpoints, ept, id_min, id_max, GFP_KERNEL); in __rpmsg_create_ept()
247 ept->addr = id; in __rpmsg_create_ept()
251 return ept; in __rpmsg_create_ept()
255 kref_put(&ept->refcount, __ept_release); in __rpmsg_create_ept()
298 __rpmsg_destroy_ept(struct virtproc_info *vrp, struct rpmsg_endpoint *ept) in __rpmsg_destroy_ept() argument
302 idr_remove(&vrp->endpoints, ept->addr); in __rpmsg_destroy_ept()
306 mutex_lock(&ept->cb_lock); in __rpmsg_destroy_ept()
307 ept->cb = NULL; in __rpmsg_destroy_ept()
308 mutex_unlock(&ept->cb_lock); in __rpmsg_destroy_ept()
310 kref_put(&ept->refcount, __ept_release); in __rpmsg_destroy_ept()
313 static void virtio_rpmsg_destroy_ept(struct rpmsg_endpoint *ept) in virtio_rpmsg_destroy_ept() argument
315 struct virtio_rpmsg_channel *vch = to_virtio_rpmsg_channel(ept->rpdev); in virtio_rpmsg_destroy_ept()
317 __rpmsg_destroy_ept(vch->vrp, ept); in virtio_rpmsg_destroy_ept()
328 if (rpdev->announce && rpdev->ept && in virtio_rpmsg_announce_create()
333 nsm.addr = cpu_to_rpmsg32(rpdev, rpdev->ept->addr); in virtio_rpmsg_announce_create()
336 err = rpmsg_sendto(rpdev->ept, &nsm, sizeof(nsm), RPMSG_NS_ADDR); in virtio_rpmsg_announce_create()
352 if (rpdev->announce && rpdev->ept && in virtio_rpmsg_announce_destroy()
357 nsm.addr = cpu_to_rpmsg32(rpdev, rpdev->ept->addr); in virtio_rpmsg_announce_destroy()
360 err = rpmsg_sendto(rpdev->ept, &nsm, sizeof(nsm), RPMSG_NS_ADDR); in virtio_rpmsg_announce_destroy()
650 static int virtio_rpmsg_send(struct rpmsg_endpoint *ept, void *data, int len) in virtio_rpmsg_send() argument
652 struct rpmsg_device *rpdev = ept->rpdev; in virtio_rpmsg_send()
653 u32 src = ept->addr, dst = rpdev->dst; in virtio_rpmsg_send()
658 static int virtio_rpmsg_sendto(struct rpmsg_endpoint *ept, void *data, int len, in virtio_rpmsg_sendto() argument
661 struct rpmsg_device *rpdev = ept->rpdev; in virtio_rpmsg_sendto()
662 u32 src = ept->addr; in virtio_rpmsg_sendto()
667 static int virtio_rpmsg_send_offchannel(struct rpmsg_endpoint *ept, u32 src, in virtio_rpmsg_send_offchannel() argument
670 struct rpmsg_device *rpdev = ept->rpdev; in virtio_rpmsg_send_offchannel()
675 static int virtio_rpmsg_trysend(struct rpmsg_endpoint *ept, void *data, int len) in virtio_rpmsg_trysend() argument
677 struct rpmsg_device *rpdev = ept->rpdev; in virtio_rpmsg_trysend()
678 u32 src = ept->addr, dst = rpdev->dst; in virtio_rpmsg_trysend()
683 static int virtio_rpmsg_trysendto(struct rpmsg_endpoint *ept, void *data, in virtio_rpmsg_trysendto() argument
686 struct rpmsg_device *rpdev = ept->rpdev; in virtio_rpmsg_trysendto()
687 u32 src = ept->addr; in virtio_rpmsg_trysendto()
692 static int virtio_rpmsg_trysend_offchannel(struct rpmsg_endpoint *ept, u32 src, in virtio_rpmsg_trysend_offchannel() argument
695 struct rpmsg_device *rpdev = ept->rpdev; in virtio_rpmsg_trysend_offchannel()
700 static ssize_t virtio_rpmsg_get_mtu(struct rpmsg_endpoint *ept) in virtio_rpmsg_get_mtu() argument
702 struct rpmsg_device *rpdev = ept->rpdev; in virtio_rpmsg_get_mtu()
711 struct rpmsg_endpoint *ept; in rpmsg_recv_single() local
740 ept = idr_find(&vrp->endpoints, __rpmsg32_to_cpu(little_endian, msg->dst)); in rpmsg_recv_single()
743 if (ept) in rpmsg_recv_single()
744 kref_get(&ept->refcount); in rpmsg_recv_single()
748 if (ept) { in rpmsg_recv_single()
750 mutex_lock(&ept->cb_lock); in rpmsg_recv_single()
752 if (ept->cb) in rpmsg_recv_single()
753 ept->cb(ept->rpdev, msg->data, msg_len, ept->priv, in rpmsg_recv_single()
756 mutex_unlock(&ept->cb_lock); in rpmsg_recv_single()
759 kref_put(&ept->refcount, __ept_release); in rpmsg_recv_single()