On 4/23/2018 2:46 PM, Bjorn Andersson wrote:
This implements a misc character device named "qrtr-tun" for the purpose
of allowing user space applications to implement endpoints in the qrtr
network.

This allows more advanced (and dynamic) testing of the qrtr code as well
as opens up the ability of tunneling qrtr over a network or USB link.

Signed-off-by: Bjorn Andersson <bjorn.anders...@linaro.org>

Acked-by: Chris Lew <c...@codeaurora.org>

+static ssize_t qrtr_tun_read_iter(struct kiocb *iocb, struct iov_iter *to)
+{
+       struct file *filp = iocb->ki_filp;
+       struct qrtr_tun *tun = filp->private_data;
+       struct sk_buff *skb;
+       int count;
+
+       while (!(skb = skb_dequeue(&tun->queue))) {
+               if (filp->f_flags & O_NONBLOCK)
+                       return -EAGAIN;
+
+               /* Wait until we get data or the endpoint goes away */
+               if (wait_event_interruptible(tun->readq,
+                                            !skb_queue_empty(&tun->queue)))
+                       return -ERESTARTSYS;
+       }
+
+       count = min_t(size_t, iov_iter_count(to), skb->len);
+       if (copy_to_iter(skb->data, count, to) != count)
+               count = -EFAULT;
+
+       kfree_skb(skb);

Is it better to use consume_skb() since this is the expected behavior path?

+
+       return count;
+}
+

Thanks,
Chris

--
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
a Linux Foundation Collaborative Project

Reply via email to