Skip to content

Commit

Permalink
Merge branch 'nci-ext'
Browse files Browse the repository at this point in the history
Bongsu Jeon says:

====================
Update the virtual NCI device driver and add the NCI testcase

This series updates the virtual NCI device driver and NCI selftest code
and add the NCI test case in selftests.

1/8 to use wait queue in virtual device driver.
2/8 to remove the polling code in selftests.
3/8 to fix a typo.
4/8 to fix the next nlattr offset calculation.
5/8 to fix the wrong condition in if statement.
6/8 to add a flag parameter to the Netlink send function.
7/8 to extract the start/stop discovery function.
8/8 to add the NCI testcase in selftests.
====================

Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
David S. Miller committed Aug 18, 2021
2 parents ec18e84 + 6161251 commit 93e2716
Show file tree
Hide file tree
Showing 2 changed files with 362 additions and 63 deletions.
9 changes: 7 additions & 2 deletions drivers/nfc/virtual_ncidev.c
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
#include <linux/module.h>
#include <linux/miscdevice.h>
#include <linux/mutex.h>
#include <linux/wait.h>
#include <net/nfc/nci_core.h>

enum virtual_ncidev_mode {
Expand All @@ -27,6 +28,7 @@ enum virtual_ncidev_mode {
NFC_PROTO_ISO15693_MASK)

static enum virtual_ncidev_mode state;
static DECLARE_WAIT_QUEUE_HEAD(wq);
static struct miscdevice miscdev;
static struct sk_buff *send_buff;
static struct nci_dev *ndev;
Expand Down Expand Up @@ -61,6 +63,7 @@ static int virtual_nci_send(struct nci_dev *ndev, struct sk_buff *skb)
}
send_buff = skb_copy(skb, GFP_KERNEL);
mutex_unlock(&nci_mutex);
wake_up_interruptible(&wq);

return 0;
}
Expand All @@ -77,9 +80,11 @@ static ssize_t virtual_ncidev_read(struct file *file, char __user *buf,
size_t actual_len;

mutex_lock(&nci_mutex);
if (!send_buff) {
while (!send_buff) {
mutex_unlock(&nci_mutex);
return 0;
if (wait_event_interruptible(wq, send_buff))
return -EFAULT;
mutex_lock(&nci_mutex);
}

actual_len = min_t(size_t, count, send_buff->len);
Expand Down
Loading

0 comments on commit 93e2716

Please sign in to comment.