summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Ortiz <sameo@linux.intel.com>2013-08-21 12:46:20 (GMT)
committerSamuel Ortiz <sameo@linux.intel.com>2013-09-24 23:35:41 (GMT)
commite29a9e2ae165620d202f3ce45abd3a219b13ffb7 (patch)
tree123d29e6ee22d24c36b89387d624733afac3d17d
parentfa544fff62aeeb0cf8008c61077aae10fb1407a9 (diff)
downloadlinux-e29a9e2ae165620d202f3ce45abd3a219b13ffb7.tar.xz
NFC: Set active target upon DEP up event reception
As we can potentially get DEP up events without having sent a netlink command, we need to set the active target properly from dep_link_is_up. Spontaneous DEP up events can come from devices that detected an active p2p target. In that case there is no need to call the netlink DEP up command as the link is already up and running. Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
-rw-r--r--net/nfc/core.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/net/nfc/core.c b/net/nfc/core.c
index 269ffc5..8725291 100644
--- a/net/nfc/core.c
+++ b/net/nfc/core.c
@@ -384,6 +384,19 @@ int nfc_dep_link_is_up(struct nfc_dev *dev, u32 target_idx,
{
dev->dep_link_up = true;
+ if (!dev->active_target) {
+ struct nfc_target *target;
+
+ target = nfc_find_target(dev, target_idx);
+ if (target == NULL)
+ return -ENOTCONN;
+
+ dev->active_target = target;
+ }
+
+ dev->polling = false;
+ dev->rf_mode = rf_mode;
+
nfc_llcp_mac_is_up(dev, target_idx, comm_mode, rf_mode);
return nfc_genl_dep_link_up_event(dev, target_idx, comm_mode, rf_mode);