NFC: implicitly deactivate in nci_start_poll
authorIlan Elias <ilane@ti.com>
Thu, 22 Sep 2011 08:13:01 +0000 (11:13 +0300)
committerJohn W. Linville <linville@tuxdriver.com>
Tue, 27 Sep 2011 18:34:04 +0000 (14:34 -0400)
When start_poll is called, and a target was implicitly activated,
we need to implicitly deactivate it.
On the other hand, when the target was activated by the user,
we should not deactivate it.

Signed-off-by: Ilan Elias <ilane@ti.com>
Acked-by: Lauro Ramos Venancio <lauro.venancio@openbossa.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
net/nfc/nci/core.c

index c3dfd4e13bd5c93843bfe1d691247036f96373a8..9f17e8ec0ab9e9dc0660b572bb6e5c500bbc09cf 100644 (file)
@@ -361,8 +361,13 @@ static int nci_start_poll(struct nfc_dev *nfc_dev, __u32 protocols)
                return -EBUSY;
        }
 
+       if (ndev->target_active_prot) {
+               nfc_err("there is an active target");
+               return -EBUSY;
+       }
+
        if (test_bit(NCI_POLL_ACTIVE, &ndev->flags)) {
-               nfc_dbg("target already active, first deactivate...");
+               nfc_dbg("target is active, implicitly deactivate...");
 
                rc = nci_request(ndev, nci_rf_deactivate_req, 0,
                        msecs_to_jiffies(NCI_RF_DEACTIVATE_TIMEOUT));