Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 25a1d9dc authored by Ilan Elias's avatar Ilan Elias Committed by John W. Linville
Browse files

NFC: NFC core layer should not set the target_idx



The NFC core layer should not set the target_idx.
Instead, the driver layer (e.g. NCI, PN533) should set the
target_idx, so that it will be able to identify the target
when its I/F (e.g. activate_target) is called.
This is required in order to support multiple targets.
Note that currently supported drivers (PN533 and NCI) don't
use the target_idx in their implementation.

Signed-off-by: default avatarIlan Elias <ilane@ti.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 8939e47f
Loading
Loading
Loading
Loading
+0 −1
Original line number Original line Diff line number Diff line
@@ -87,7 +87,6 @@ struct nfc_genl_data {


struct nfc_dev {
struct nfc_dev {
	unsigned idx;
	unsigned idx;
	unsigned target_idx;
	struct nfc_target *targets;
	struct nfc_target *targets;
	int n_targets;
	int n_targets;
	int targets_generation;
	int targets_generation;
+0 −5
Original line number Original line Diff line number Diff line
@@ -431,15 +431,10 @@ EXPORT_SYMBOL(nfc_alloc_recv_skb);
int nfc_targets_found(struct nfc_dev *dev, struct nfc_target *targets,
int nfc_targets_found(struct nfc_dev *dev, struct nfc_target *targets,
							int n_targets)
							int n_targets)
{
{
	int i;

	pr_debug("dev_name=%s n_targets=%d\n", dev_name(&dev->dev), n_targets);
	pr_debug("dev_name=%s n_targets=%d\n", dev_name(&dev->dev), n_targets);


	dev->polling = false;
	dev->polling = false;


	for (i = 0; i < n_targets; i++)
		targets[i].idx = dev->target_idx++;

	spin_lock_bh(&dev->targets_lock);
	spin_lock_bh(&dev->targets_lock);


	dev->targets_generation++;
	dev->targets_generation++;
+0 −12
Original line number Original line Diff line number Diff line
@@ -92,18 +92,6 @@ static int rawsock_connect(struct socket *sock, struct sockaddr *_addr,
		goto error;
		goto error;
	}
	}


	if (addr->target_idx > dev->target_idx - 1 ||
		addr->target_idx < dev->target_idx - dev->n_targets) {
		rc = -EINVAL;
		goto error;
	}

	if (addr->target_idx > dev->target_idx - 1 ||
		addr->target_idx < dev->target_idx - dev->n_targets) {
		rc = -EINVAL;
		goto error;
	}

	rc = nfc_activate_target(dev, addr->target_idx, addr->nfc_protocol);
	rc = nfc_activate_target(dev, addr->target_idx, addr->nfc_protocol);
	if (rc)
	if (rc)
		goto put_dev;
		goto put_dev;