• Lucas Segarra Fernandez's avatar
    crypto: qat - add qat_zlib_deflate · 7ce515e6
    Lucas Segarra Fernandez authored
    The ZLIB format (RFC 1950) is made of deflate compressed data surrounded
    by a header and a footer. The QAT accelerators support only the deflate
    algorithm, therefore the header and the footer need to be inserted in
    software.
    
    This adds logic in the QAT driver to support the ZLIB format. In
    particular:
      * Generalize the function qat_comp_alg_compress_decompress() to allow
        skipping an initial region (header) of the source and/or destination
        scatter lists.
      * Add logic to register the qat_zlib_deflate algorithm into the acomp
        framework.
      * For ZLIB compression, skip the initial portion of the destination
        buffer before sending the job to the QAT accelerator and insert the
        ZLIB header and footer in the callback, after the QAT request has
        been processed.
      * For ZLIB decompression, parse the header in the input buffer
        provided by the user and verify its validity before attempting the
        decompression of the buffer with QAT. Then submit the buffer to QAT
        for decompression. In the callback verify the correctness of the
        footer by comparing the value of the ADLER produced by QAT with the
        one in the destination buffer.
    Signed-off-by: default avatarLucas Segarra Fernandez <lucas.segarra.fernandez@intel.com>
    Reviewed-by: default avatarGiovanni Cabiddu <giovanni.cabiddu@intel.com>
    Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
    7ce515e6
qat_comp_algs.c 13 KB