• Marco Chiappero's avatar
    crypto: qat - introduce support for PFVF block messages · 673184a2
    Marco Chiappero authored
    GEN2 devices use a single CSR for PFVF messages, which leaves up to 10 bits
    of payload per single message. While such amount is sufficient for the
    currently defined messages, the transfer of bigger and more complex data
    streams from the PF to the VF requires a new mechanism that extends the
    protocol.
    
    This patch adds a new layer on top of the basic PFVF messaging, called
    Block Messages, to encapsulate up to 126 bytes of data in a single
    logical message across multiple PFVF messages of new types (SMALL,
    MEDIUM and LARGE BLOCK), including (sub)types (BLKMSG_TYPE) to carry the
    information about the actual Block Message.
    
    Regardless of the size, each Block Message uses a two bytes header,
    containing the version and size, to allow for extension while
    maintaining compatibility. The size and the types of Block Messages are
    defined as follow:
    
    - small block messages:  up to 16 BLKMSG types of up to 30 bytes
    - medium block messages: up to 8 BLKMSG types of up to 62 bytes
    - large block messages:  up to 4 BLKMSG types of up to 126 bytes
    
    It effectively works as reading a byte at a time from a block device and
    for each of these new Block Messages:
    - the requestor (always a VF) can either request a specific byte of the
      larger message, in order to retrieve the full message, or request the
      value of the CRC calculated for a specific message up to the provided
      size (to allow for messages to grow while maintaining forward
      compatibility)
    - the responder (always the PF) will either return a single data or CRC
      byte, along with the indication of response type (or error).
    
    This patch provides the basic infrastructure to perform the above
    operations, without defining any new message.
    
    As CRCs are required, this code now depends on the CRC8 module.
    
    Note: as a consequence of the Block Messages design, sending multiple
    PFVF messages in bursts, the interrupt rate limiting values on the PF are
    increased.
    Signed-off-by: default avatarMarco Chiappero <marco.chiappero@intel.com>
    Co-developed-by: default avatarGiovanni Cabiddu <giovanni.cabiddu@intel.com>
    Signed-off-by: default avatarGiovanni Cabiddu <giovanni.cabiddu@intel.com>
    Reviewed-by: default avatarFiona Trahe <fiona.trahe@intel.com>
    Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
    673184a2
adf_pfvf_vf_proto.c 9.83 KB