NFC: NFC core layer should not set the target_idx
authorIlan Elias <ilane@ti.com>
Wed, 18 Jan 2012 11:16:13 +0000 (13:16 +0200)
committerJohn W. Linville <linville@tuxdriver.com>
Tue, 24 Jan 2012 19:32:28 +0000 (14:32 -0500)
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: Ilan Elias <ilane@ti.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
include/net/nfc/nfc.h
net/nfc/core.c
net/nfc/rawsock.c

index 819530d0e37f8826f1ad463a31f61308def7b221..d253278e5a96e9af9ca8775b446f8811c807770d 100644 (file)
@@ -87,7 +87,6 @@ struct nfc_genl_data {
 
 struct nfc_dev {
        unsigned idx;
-       unsigned target_idx;
        struct nfc_target *targets;
        int n_targets;
        int targets_generation;
index 3ddf6e698df0569c2f8aafbb19cecd4fa15b9aa4..6089aca67b14de1b3396d3eea1d8baa83c676547 100644 (file)
@@ -431,15 +431,10 @@ EXPORT_SYMBOL(nfc_alloc_recv_skb);
 int nfc_targets_found(struct nfc_dev *dev, struct nfc_target *targets,
                                                        int n_targets)
 {
-       int i;
-
        pr_debug("dev_name=%s n_targets=%d\n", dev_name(&dev->dev), n_targets);
 
        dev->polling = false;
 
-       for (i = 0; i < n_targets; i++)
-               targets[i].idx = dev->target_idx++;
-
        spin_lock_bh(&dev->targets_lock);
 
        dev->targets_generation++;
index 2e2f8c6a61fe90579486c553032d14af2a7f0588..5325439b0c60872d4bd003074e2fbb8713f21157 100644 (file)
@@ -92,18 +92,6 @@ static int rawsock_connect(struct socket *sock, struct sockaddr *_addr,
                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);
        if (rc)
                goto put_dev;