[PATCH 0/8] lib/zlib: Set of s390 DFLTCC related patches for kernel zlib

From: Mikhail Zaslonko
Date: Thu Jan 26 2023 - 08:15:18 EST


Patches 1-7 represent a set of s390 zlib hardware support (DFLTCC) related fixes
and enhancements integrated from zlib-ng repo relevant to kernel zlib
(https://github.com/zlib-ng/zlib-ng).
Since the official zlib repository never got DFLTCC support code merged, all
the patches have been picked from zlib-ng fork (zlib data compression library
for the next generation systems). This repo contains new optimizations and
fixes not getting implemented into the official zlib repository and falls under
the same zlib License. All of the original patches from zlib-ng were authored
by Ilya Leoshkevich <iii@xxxxxxxxxxxxx>. Coding style has been preserved for
future maintainability.
Patches 1-2 should have no effect for the kernel zlib but make the code
closer to zlib-ng for future maintainability.
Only Patch 3 touches common zlib_deflate code, other patches are relevant to
s390 tree only.

Patch 8 is separate and intends to resolve an issue with kernel PPP driver
which can use kernel zlib for packet compression. Without this patch PPP
decompression can fail due to error code returned by hardware (dfltcc_inflate)
and PPP disables zlib compression for further packets.

@Andrew, would you pick this patch series yourself (which is totally fine
with me) or shall we carry it via s390 tree?

Mikhail Zaslonko (8):
lib/zlib: Adjust offset calculation for dfltcc_state
lib/zlib: Implement switching between DFLTCC and software
lib/zlib: Fix DFLTCC not flushing EOBS when creating raw streams
lib/zlib: Fix DFLTCC ignoring flush modes when avail_in == 0
lib/zlib: DFLTCC not writing header bits when avail_out == 0
lib/zlib: Split deflate and inflate states for DFLTCC
lib/zlib: DFLTCC support inflate with small window
lib/zlib: DFLTCC always switch to software inflate for Z_PACKET_FLUSH
option

lib/zlib_deflate/deflate.c | 23 ++++++---
lib/zlib_dfltcc/dfltcc.c | 25 ++-------
lib/zlib_dfltcc/dfltcc.h | 57 +++++---------------
lib/zlib_dfltcc/dfltcc_deflate.c | 89 +++++++++++++++++++++-----------
lib/zlib_dfltcc/dfltcc_deflate.h | 21 ++++++++
lib/zlib_dfltcc/dfltcc_inflate.c | 24 +++++----
lib/zlib_dfltcc/dfltcc_inflate.h | 37 +++++++++++++
lib/zlib_inflate/inflate.c | 2 +-
8 files changed, 163 insertions(+), 115 deletions(-)
create mode 100644 lib/zlib_dfltcc/dfltcc_deflate.h
create mode 100644 lib/zlib_dfltcc/dfltcc_inflate.h

--
2.34.1