diff options
-rw-r--r-- | include/linux/nfc.h | 2 | ||||
-rw-r--r-- | include/net/nfc/nfc.h | 3 | ||||
-rw-r--r-- | net/nfc/nci/ntf.c | 6 | ||||
-rw-r--r-- | net/nfc/netlink.c | 3 |
4 files changed, 14 insertions, 0 deletions
diff --git a/include/linux/nfc.h b/include/linux/nfc.h index 89fee4ab1904..01d4e5d60325 100644 --- a/include/linux/nfc.h +++ b/include/linux/nfc.h | |||
@@ -88,6 +88,7 @@ enum nfc_commands { | |||
88 | * @NFC_ATTR_TARGET_SENS_RES: NFC-A targets extra information such as NFCID | 88 | * @NFC_ATTR_TARGET_SENS_RES: NFC-A targets extra information such as NFCID |
89 | * @NFC_ATTR_TARGET_SEL_RES: NFC-A targets extra information (useful if the | 89 | * @NFC_ATTR_TARGET_SEL_RES: NFC-A targets extra information (useful if the |
90 | * target is not NFC-Forum compliant) | 90 | * target is not NFC-Forum compliant) |
91 | * @NFC_ATTR_TARGET_NFCID1: NFC-A targets identifier, max 10 bytes | ||
91 | * @NFC_ATTR_COMM_MODE: Passive or active mode | 92 | * @NFC_ATTR_COMM_MODE: Passive or active mode |
92 | * @NFC_ATTR_RF_MODE: Initiator or target | 93 | * @NFC_ATTR_RF_MODE: Initiator or target |
93 | */ | 94 | */ |
@@ -99,6 +100,7 @@ enum nfc_attrs { | |||
99 | NFC_ATTR_TARGET_INDEX, | 100 | NFC_ATTR_TARGET_INDEX, |
100 | NFC_ATTR_TARGET_SENS_RES, | 101 | NFC_ATTR_TARGET_SENS_RES, |
101 | NFC_ATTR_TARGET_SEL_RES, | 102 | NFC_ATTR_TARGET_SEL_RES, |
103 | NFC_ATTR_TARGET_NFCID1, | ||
102 | NFC_ATTR_COMM_MODE, | 104 | NFC_ATTR_COMM_MODE, |
103 | NFC_ATTR_RF_MODE, | 105 | NFC_ATTR_RF_MODE, |
104 | /* private: internal use only */ | 106 | /* private: internal use only */ |
diff --git a/include/net/nfc/nfc.h b/include/net/nfc/nfc.h index ccfe757a94ec..8696b773a695 100644 --- a/include/net/nfc/nfc.h +++ b/include/net/nfc/nfc.h | |||
@@ -65,12 +65,15 @@ struct nfc_ops { | |||
65 | 65 | ||
66 | #define NFC_TARGET_IDX_ANY -1 | 66 | #define NFC_TARGET_IDX_ANY -1 |
67 | #define NFC_MAX_GT_LEN 48 | 67 | #define NFC_MAX_GT_LEN 48 |
68 | #define NFC_MAX_NFCID1_LEN 10 | ||
68 | 69 | ||
69 | struct nfc_target { | 70 | struct nfc_target { |
70 | u32 idx; | 71 | u32 idx; |
71 | u32 supported_protocols; | 72 | u32 supported_protocols; |
72 | u16 sens_res; | 73 | u16 sens_res; |
73 | u8 sel_res; | 74 | u8 sel_res; |
75 | u8 nfcid1_len; | ||
76 | u8 nfcid1[NFC_MAX_NFCID1_LEN]; | ||
74 | }; | 77 | }; |
75 | 78 | ||
76 | struct nfc_genl_data { | 79 | struct nfc_genl_data { |
diff --git a/net/nfc/nci/ntf.c b/net/nfc/nci/ntf.c index 352f7a2321d9..b16a8dc2afbe 100644 --- a/net/nfc/nci/ntf.c +++ b/net/nfc/nci/ntf.c | |||
@@ -154,6 +154,12 @@ static void nci_target_found(struct nci_dev *ndev, | |||
154 | 154 | ||
155 | nfc_tgt.sens_res = ntf->rf_tech_specific_params.nfca_poll.sens_res; | 155 | nfc_tgt.sens_res = ntf->rf_tech_specific_params.nfca_poll.sens_res; |
156 | nfc_tgt.sel_res = ntf->rf_tech_specific_params.nfca_poll.sel_res; | 156 | nfc_tgt.sel_res = ntf->rf_tech_specific_params.nfca_poll.sel_res; |
157 | nfc_tgt.nfcid1_len = ntf->rf_tech_specific_params.nfca_poll.nfcid1_len; | ||
158 | if (nfc_tgt.nfcid1_len > 0) { | ||
159 | memcpy(nfc_tgt.nfcid1, | ||
160 | ntf->rf_tech_specific_params.nfca_poll.nfcid1, | ||
161 | nfc_tgt.nfcid1_len); | ||
162 | } | ||
157 | 163 | ||
158 | if (!(nfc_tgt.supported_protocols & ndev->poll_prots)) { | 164 | if (!(nfc_tgt.supported_protocols & ndev->poll_prots)) { |
159 | pr_debug("the target found does not have the desired protocol\n"); | 165 | pr_debug("the target found does not have the desired protocol\n"); |
diff --git a/net/nfc/netlink.c b/net/nfc/netlink.c index 43a1c47756a7..6989dfa28ee2 100644 --- a/net/nfc/netlink.c +++ b/net/nfc/netlink.c | |||
@@ -67,6 +67,9 @@ static int nfc_genl_send_target(struct sk_buff *msg, struct nfc_target *target, | |||
67 | target->supported_protocols); | 67 | target->supported_protocols); |
68 | NLA_PUT_U16(msg, NFC_ATTR_TARGET_SENS_RES, target->sens_res); | 68 | NLA_PUT_U16(msg, NFC_ATTR_TARGET_SENS_RES, target->sens_res); |
69 | NLA_PUT_U8(msg, NFC_ATTR_TARGET_SEL_RES, target->sel_res); | 69 | NLA_PUT_U8(msg, NFC_ATTR_TARGET_SEL_RES, target->sel_res); |
70 | if (target->nfcid1_len > 0) | ||
71 | NLA_PUT(msg, NFC_ATTR_TARGET_NFCID1, target->nfcid1_len, | ||
72 | target->nfcid1); | ||
70 | 73 | ||
71 | return genlmsg_end(msg, hdr); | 74 | return genlmsg_end(msg, hdr); |
72 | 75 | ||