linux/net/nfc
Thierry Escande 482333b277 NFC: digital: Fix ACK & NACK PDUs handling in target mode
When the target receives a NACK PDU, it re-sends the last sent PDU.

ACK PDUs are received by the target as a reply from the initiator to
chained I-PDUs. There are 3 cases to handle:
- If the target has previously received 1 or more ATN PDUs and the PNI
  in the ACK PDU is equal to the target PNI - 1, then it means that the
  initiator did not received the last issued PDU from the target. In
  this case it re-sends this PDU.
- If the target has received 1 or more ATN PDUs but the ACK PNI is not
  the target PNI - 1, then this means that this ACK is the reply of the
  previous chained I-PDU sent by the target. The target did not received
  it on the first attempt and it is being re-sent by the initiator. The
  process continues as usual.
- No ATN PDU received before this ACK PDU. This is the reply of a
  chained I-PDU. The target keeps on processing its chained I-PDU.

The code has been refactored to avoid too many indentation levels.

Also, ACK and NACK PDUs were not freed. This is now fixed.

Signed-off-by: Thierry Escande <thierry.escande@collabora.com>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
2016-07-11 01:58:46 +02:00
..
hci NFC: hci: delete unused nfc_llc_get_rx_head_tail_room() 2016-07-04 12:14:05 +02:00
nci nfc: nci: Add nci_nfcc_loopback to the nci core 2016-05-04 01:48:16 +02:00
af_nfc.c net: Pass kern from net_proto_family.create to sk_alloc 2015-05-11 10:50:17 -04:00
core.c nfc: netlink: HCI event connectivity implementation 2015-12-29 19:06:20 +01:00
digital_core.c NFC: digital: Abort last command when dep link goes down 2016-07-06 10:26:52 +02:00
digital_dep.c NFC: digital: Fix ACK & NACK PDUs handling in target mode 2016-07-11 01:58:46 +02:00
digital_technology.c NFC: digital: Fix a memory leak in NFC-F listening mode 2016-07-06 10:03:08 +02:00
digital.h NFC: digital: Add 'tg_listen_md' and 'tg_get_rf_tech' driver hooks 2014-07-23 01:17:31 +02:00
Kconfig NFC Digital: Add NFC-F technology support 2013-09-25 02:02:25 +02:00
llcp_commands.c NFC: llcp: Fix 2 memory leaks 2016-07-06 10:02:06 +02:00
llcp_core.c NFC: llcp: Use dynamic debug for hex dump 2016-07-04 12:26:27 +02:00
llcp_sock.c NFC: Close a race condition in llcp_sock_getname() 2016-02-25 08:41:01 +01:00
llcp.h net: Pass kern from net_proto_family.create to sk_alloc 2015-05-11 10:50:17 -04:00
Makefile NFC Digital: Add initiator NFC-DEP support 2013-09-25 02:02:27 +02:00
netlink.c nfc: netlink: HCI event connectivity implementation 2015-12-29 19:06:20 +01:00
nfc.h nfc: netlink: HCI event connectivity implementation 2015-12-29 19:06:20 +01:00
rawsock.c NFC: netlink: Add mode parameter to deactivate_target functions 2015-10-27 03:55:12 +01:00