diff options
author | Ilan Elias <ilane@ti.com> | 2011-12-20 09:57:41 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2012-01-04 14:30:39 -0500 |
commit | 004161cb52ac49bc17f6528543c1cecbd728f750 (patch) | |
tree | 61701dba816c42e77dc9f941d0e66a8887067919 /net/nfc | |
parent | 637d85a7cdfe4240a56da7d70cf95cca65ea21d3 (diff) |
NFC: Handle error during NCI data exchange
Add support for NCI Interface Error Notification.
When this notification is received and we're during a
data exchange transaction, indicate an error to the NFC
core layer via the data exchange callback.
Signed-off-by: Ilan Elias <ilane@ti.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/nfc')
-rw-r--r-- | net/nfc/nci/ntf.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/net/nfc/nci/ntf.c b/net/nfc/nci/ntf.c index c8813eda7865..352f7a2321d9 100644 --- a/net/nfc/nci/ntf.c +++ b/net/nfc/nci/ntf.c | |||
@@ -71,6 +71,20 @@ static void nci_core_conn_credits_ntf_packet(struct nci_dev *ndev, | |||
71 | queue_work(ndev->tx_wq, &ndev->tx_work); | 71 | queue_work(ndev->tx_wq, &ndev->tx_work); |
72 | } | 72 | } |
73 | 73 | ||
74 | static void nci_core_conn_intf_error_ntf_packet(struct nci_dev *ndev, | ||
75 | struct sk_buff *skb) | ||
76 | { | ||
77 | struct nci_core_intf_error_ntf *ntf = (void *) skb->data; | ||
78 | |||
79 | ntf->conn_id = nci_conn_id(&ntf->conn_id); | ||
80 | |||
81 | pr_debug("status 0x%x, conn_id %d\n", ntf->status, ntf->conn_id); | ||
82 | |||
83 | /* complete the data exchange transaction, if exists */ | ||
84 | if (test_bit(NCI_DATA_EXCHANGE, &ndev->flags)) | ||
85 | nci_data_exchange_complete(ndev, NULL, -EIO); | ||
86 | } | ||
87 | |||
74 | static __u8 *nci_extract_rf_params_nfca_passive_poll(struct nci_dev *ndev, | 88 | static __u8 *nci_extract_rf_params_nfca_passive_poll(struct nci_dev *ndev, |
75 | struct nci_rf_intf_activated_ntf *ntf, __u8 *data) | 89 | struct nci_rf_intf_activated_ntf *ntf, __u8 *data) |
76 | { | 90 | { |
@@ -280,6 +294,10 @@ void nci_ntf_packet(struct nci_dev *ndev, struct sk_buff *skb) | |||
280 | nci_core_conn_credits_ntf_packet(ndev, skb); | 294 | nci_core_conn_credits_ntf_packet(ndev, skb); |
281 | break; | 295 | break; |
282 | 296 | ||
297 | case NCI_OP_CORE_INTF_ERROR_NTF: | ||
298 | nci_core_conn_intf_error_ntf_packet(ndev, skb); | ||
299 | break; | ||
300 | |||
283 | case NCI_OP_RF_INTF_ACTIVATED_NTF: | 301 | case NCI_OP_RF_INTF_ACTIVATED_NTF: |
284 | nci_rf_intf_activated_ntf_packet(ndev, skb); | 302 | nci_rf_intf_activated_ntf_packet(ndev, skb); |
285 | break; | 303 | break; |