diff options
-rw-r--r-- | include/net/nfc/nfc.h | 1 | ||||
-rw-r--r-- | net/nfc/core.c | 12 | ||||
-rw-r--r-- | net/nfc/llcp/llcp.c | 15 | ||||
-rw-r--r-- | net/nfc/nfc.h | 7 |
4 files changed, 35 insertions, 0 deletions
diff --git a/include/net/nfc/nfc.h b/include/net/nfc/nfc.h index 45c4c970575c..180964b954ab 100644 --- a/include/net/nfc/nfc.h +++ b/include/net/nfc/nfc.h | |||
@@ -202,5 +202,6 @@ int nfc_dep_link_is_up(struct nfc_dev *dev, u32 target_idx, | |||
202 | int nfc_tm_activated(struct nfc_dev *dev, u32 protocol, u8 comm_mode, | 202 | int nfc_tm_activated(struct nfc_dev *dev, u32 protocol, u8 comm_mode, |
203 | u8 *gb, size_t gb_len); | 203 | u8 *gb, size_t gb_len); |
204 | int nfc_tm_deactivated(struct nfc_dev *dev); | 204 | int nfc_tm_deactivated(struct nfc_dev *dev); |
205 | int nfc_tm_data_received(struct nfc_dev *dev, struct sk_buff *skb); | ||
205 | 206 | ||
206 | #endif /* __NET_NFC_H */ | 207 | #endif /* __NET_NFC_H */ |
diff --git a/net/nfc/core.c b/net/nfc/core.c index 76c1e207d297..6a3799eebc30 100644 --- a/net/nfc/core.c +++ b/net/nfc/core.c | |||
@@ -462,6 +462,18 @@ u8 *nfc_get_local_general_bytes(struct nfc_dev *dev, size_t *gb_len) | |||
462 | } | 462 | } |
463 | EXPORT_SYMBOL(nfc_get_local_general_bytes); | 463 | EXPORT_SYMBOL(nfc_get_local_general_bytes); |
464 | 464 | ||
465 | int nfc_tm_data_received(struct nfc_dev *dev, struct sk_buff *skb) | ||
466 | { | ||
467 | /* Only LLCP target mode for now */ | ||
468 | if (dev->dep_link_up == false) { | ||
469 | kfree_skb(skb); | ||
470 | return -ENOLINK; | ||
471 | } | ||
472 | |||
473 | return nfc_llcp_data_received(dev, skb); | ||
474 | } | ||
475 | EXPORT_SYMBOL(nfc_tm_data_received); | ||
476 | |||
465 | int nfc_tm_activated(struct nfc_dev *dev, u32 protocol, u8 comm_mode, | 477 | int nfc_tm_activated(struct nfc_dev *dev, u32 protocol, u8 comm_mode, |
466 | u8 *gb, size_t gb_len) | 478 | u8 *gb, size_t gb_len) |
467 | { | 479 | { |
diff --git a/net/nfc/llcp/llcp.c b/net/nfc/llcp/llcp.c index 5f7aa3f632fb..5705e6dffb32 100644 --- a/net/nfc/llcp/llcp.c +++ b/net/nfc/llcp/llcp.c | |||
@@ -937,6 +937,21 @@ void nfc_llcp_recv(void *data, struct sk_buff *skb, int err) | |||
937 | return; | 937 | return; |
938 | } | 938 | } |
939 | 939 | ||
940 | int nfc_llcp_data_received(struct nfc_dev *dev, struct sk_buff *skb) | ||
941 | { | ||
942 | struct nfc_llcp_local *local; | ||
943 | |||
944 | local = nfc_llcp_find_local(dev); | ||
945 | if (local == NULL) | ||
946 | return -ENODEV; | ||
947 | |||
948 | local->rx_pending = skb_get(skb); | ||
949 | del_timer(&local->link_timer); | ||
950 | queue_work(local->rx_wq, &local->rx_work); | ||
951 | |||
952 | return 0; | ||
953 | } | ||
954 | |||
940 | void nfc_llcp_mac_is_down(struct nfc_dev *dev) | 955 | void nfc_llcp_mac_is_down(struct nfc_dev *dev) |
941 | { | 956 | { |
942 | struct nfc_llcp_local *local; | 957 | struct nfc_llcp_local *local; |
diff --git a/net/nfc/nfc.h b/net/nfc/nfc.h index cd9fcbe57464..c5e42b79a418 100644 --- a/net/nfc/nfc.h +++ b/net/nfc/nfc.h | |||
@@ -55,6 +55,7 @@ int nfc_llcp_register_device(struct nfc_dev *dev); | |||
55 | void nfc_llcp_unregister_device(struct nfc_dev *dev); | 55 | void nfc_llcp_unregister_device(struct nfc_dev *dev); |
56 | int nfc_llcp_set_remote_gb(struct nfc_dev *dev, u8 *gb, u8 gb_len); | 56 | int nfc_llcp_set_remote_gb(struct nfc_dev *dev, u8 *gb, u8 gb_len); |
57 | u8 *nfc_llcp_general_bytes(struct nfc_dev *dev, size_t *general_bytes_len); | 57 | u8 *nfc_llcp_general_bytes(struct nfc_dev *dev, size_t *general_bytes_len); |
58 | int nfc_llcp_data_received(struct nfc_dev *dev, struct sk_buff *skb); | ||
58 | int __init nfc_llcp_init(void); | 59 | int __init nfc_llcp_init(void); |
59 | void nfc_llcp_exit(void); | 60 | void nfc_llcp_exit(void); |
60 | 61 | ||
@@ -90,6 +91,12 @@ static inline u8 *nfc_llcp_general_bytes(struct nfc_dev *dev, size_t *gb_len) | |||
90 | return NULL; | 91 | return NULL; |
91 | } | 92 | } |
92 | 93 | ||
94 | static inline int nfc_llcp_data_received(struct nfc_dev *dev, | ||
95 | struct sk_buff *skb) | ||
96 | { | ||
97 | return 0; | ||
98 | } | ||
99 | |||
93 | static inline int nfc_llcp_init(void) | 100 | static inline int nfc_llcp_init(void) |
94 | { | 101 | { |
95 | return 0; | 102 | return 0; |