Skip to content

Commit

Permalink
NFC: HCI check presence must not fail when driver doesn't support it
Browse files Browse the repository at this point in the history
When the driver does not support checking the tag is still present, it
must return -EOPNOTSUPP. The NFC Core will then stop asking and not
report a tag lost event to user space.

Signed-off-by: Eric Lapuyade <eric.lapuyade@intel.com>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
  • Loading branch information
Eric Lapuyade authored and Samuel Ortiz committed Oct 26, 2012
1 parent da05285 commit 632c016
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 1 deletion.
2 changes: 1 addition & 1 deletion drivers/nfc/pn544_hci.c
Original file line number Diff line number Diff line change
Expand Up @@ -986,7 +986,7 @@ static int pn544_hci_check_presence(struct nfc_hci_dev *hdev,
} else if (target->supported_protocols & NFC_PROTO_MIFARE_MASK) {
if (target->nfcid1_len != 4 && target->nfcid1_len != 7 &&
target->nfcid1_len != 10)
return -EPROTO;
return -EOPNOTSUPP;

return nfc_hci_send_cmd(hdev, NFC_HCI_RF_READER_A_GATE,
PN544_RF_READER_CMD_ACTIVATE_NEXT,
Expand Down
3 changes: 3 additions & 0 deletions net/nfc/core.c
Original file line number Diff line number Diff line change
Expand Up @@ -697,6 +697,8 @@ static void nfc_check_pres_work(struct work_struct *work)

if (dev->active_target && timer_pending(&dev->check_pres_timer) == 0) {
rc = dev->ops->check_presence(dev, dev->active_target);
if (rc == -EOPNOTSUPP)
goto exit;
if (!rc) {
mod_timer(&dev->check_pres_timer, jiffies +
msecs_to_jiffies(NFC_CHECK_PRES_FREQ_MS));
Expand All @@ -708,6 +710,7 @@ static void nfc_check_pres_work(struct work_struct *work)
}
}

exit:
device_unlock(&dev->dev);
}

Expand Down

0 comments on commit 632c016

Please sign in to comment.