diff options
author | Christophe Ricard <christophe.ricard@gmail.com> | 2015-02-03 19:48:05 +0100 |
---|---|---|
committer | Samuel Ortiz <sameo@linux.intel.com> | 2015-02-04 09:10:50 +0100 |
commit | b16ae7160a836c4a1e443ea6efca31421e86bae1 (patch) | |
tree | 8d4185e4b41b0d71f5abe293c3183068a129a86c /include/net | |
parent | 12bdf27d46c9d5e490fa164551642e065105db78 (diff) | |
download | linux-b16ae7160a836c4a1e443ea6efca31421e86bae1.tar.gz linux-b16ae7160a836c4a1e443ea6efca31421e86bae1.tar.bz2 linux-b16ae7160a836c4a1e443ea6efca31421e86bae1.zip |
NFC: nci: Support all destinations type when creating a connection
The current implementation limits nci_core_conn_create_req()
to only manage NCI_DESTINATION_NFCEE.
Add new parameters to nci_core_conn_create() to support all
destination types described in the NCI specification.
Because there are some parameters with variable size dynamic
buffer allocation is needed.
Signed-off-by: Christophe Ricard <christophe-h.ricard@st.com>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
Diffstat (limited to 'include/net')
-rw-r--r-- | include/net/nfc/nci.h | 18 | ||||
-rw-r--r-- | include/net/nfc/nci_core.h | 4 |
2 files changed, 13 insertions, 9 deletions
diff --git a/include/net/nfc/nci.h b/include/net/nfc/nci.h index 6c1beb2704b1..695d33cb75e8 100644 --- a/include/net/nfc/nci.h +++ b/include/net/nfc/nci.h @@ -244,21 +244,23 @@ struct nci_core_set_config_cmd { } __packed; #define NCI_OP_CORE_CONN_CREATE_CMD nci_opcode_pack(NCI_GID_CORE, 0x04) +#define DEST_SPEC_PARAMS_ID_INDEX 0 +#define DEST_SPEC_PARAMS_PROTOCOL_INDEX 1 struct dest_spec_params { - __u8 id; - __u8 protocol; + __u8 id; + __u8 protocol; } __packed; struct core_conn_create_dest_spec_params { - __u8 type; - __u8 length; - struct dest_spec_params value; + __u8 type; + __u8 length; + __u8 value[0]; } __packed; struct nci_core_conn_create_cmd { - __u8 destination_type; - __u8 number_destination_params; - struct core_conn_create_dest_spec_params params; + __u8 destination_type; + __u8 number_destination_params; + struct core_conn_create_dest_spec_params params[0]; } __packed; #define NCI_OP_CORE_CONN_CLOSE_CMD nci_opcode_pack(NCI_GID_CORE, 0x05) diff --git a/include/net/nfc/nci_core.h b/include/net/nfc/nci_core.h index 731fa5be9989..d34c1b2295d7 100644 --- a/include/net/nfc/nci_core.h +++ b/include/net/nfc/nci_core.h @@ -263,7 +263,9 @@ int nci_set_config(struct nci_dev *ndev, __u8 id, size_t len, __u8 *val); int nci_nfcee_discover(struct nci_dev *ndev, u8 action); int nci_nfcee_mode_set(struct nci_dev *ndev, u8 nfcee_id, u8 nfcee_mode); -int nci_core_conn_create(struct nci_dev *ndev, +int nci_core_conn_create(struct nci_dev *ndev, u8 destination_type, + u8 number_destination_params, + size_t params_len, struct core_conn_create_dest_spec_params *params); int nci_core_conn_close(struct nci_dev *ndev, u8 conn_id); |