• Mark A. Greer's avatar
    NFC: digital: Add NFC-DEP Initiator-side NACK Support · a80509c7
    Mark A. Greer authored
    When an NFC-DEP Initiator receives a frame with
    an incorrect CRC or with a parity error, and the
    frame is at least 4 bytes long, its supposed to
    send a NACK to the Target.  The Initiator can
    send up to 'N(retry,nack)' consecutive NACKs
    where 2 <= 'N(retry,nack)' <= 5.  When the limit
    is exceeded, a PROTOCOL EXCEPTION is raised.
    Any other type of transmission error is to be
    ignored and the Initiator should continue
    waiting for a new frame.  This is described
    in section 14.12.5.4 of the NFC Digital Protocol
    Spec.
    
    The digital layer's NFC-DEP code doesn't implement
    any of this so add it.  This support diverges from
    the spec in two significant ways:
    
    a) NACKs will be sent for ANY error reported by the
       driver except a timeout.  This is done because
       there is currently no way for the digital layer
       to distinguish a CRC or parity error from any
       other type of error reported by the driver.
    
    b) All other errors will cause a PROTOCOL EXCEPTION
       even frames with CRC errors that are less than 4
       bytes.
    
    The value chosen for 'N(retry,nack)' is 2.
    
    Targets do not send NACK PDUs.
    Reviewed-by: default avatarThierry Escande <thierry.escande@linux.intel.com>
    Tested-by: default avatarThierry Escande <thierry.escande@linux.intel.com>
    Signed-off-by: default avatarMark A. Greer <mgreer@animalcreek.com>
    Signed-off-by: default avatarSamuel Ortiz <sameo@linux.intel.com>
    a80509c7
digital.h 8.76 KB