[PATCH net-next 0/7] Add HW GRO handling in rmnet
From: Subash Abhinov Kasiviswanathan
Date: Wed Sep 30 2026 - 01:15:02 EST
This patch series adds support for processing coalesced packets
in rmnet driver.
Hardware can coalesce TCP and UDP flows up to a maximum size of 65k.
Up to 48 total packets can be coalesced into a single frame and
are limited to 6 different consecutive packet sizes. As kernel
supports a single packet size (gso_size), the coalescing frame
will need to be broken down and queued per size to the network stack.
Hardware can also continue to coalesce in case the transport checksum
was invalid so such segments will need to discarded in the driver.
The exact segments which have bad checksum are identified through a
bitmap in the coalescing packet header.
Patch 1 adds the UAPI flag for the coalescing packet format.
Patch 2 is in preparation for the coalescing format packet handling
where packets maybe delivered as a list to the network stack as
mentioned above in case of different sizes or checksum errors.
Patch 3 is in preparation for the coalescing format flags to ensure
that there is no invalid MAP format combination to process the packets.
Patch 4 adds the core coalescing handling.
Patch 5 is for handling some quirks observed in the coalescing
hardware.
Patch 6 adds coalescing statistics in ethtool.
Patch 7 adds documentation about the coalescing feature.
Subash Abhinov Kasiviswanathan (7):
uapi: if_link: Add RMNET_FLAGS_INGRESS_COALESCE
net: qualcomm: rmnet: Process MAPv5 frames as a list
net: qualcomm: rmnet: Restrict supported MAP checksum configurations
net: qualcomm: rmnet: Add DL packet coalescing support
net: qualcomm: rmnet: Work around coalescing hardware quirks
net: qualcomm: rmnet: Add ethtool stats for DL coalescing
docs: networking: Add documentation for the coalescing support in
rmnet
.../cellular/qualcomm/rmnet.rst | 115 ++-
.../ethernet/qualcomm/rmnet/rmnet_config.c | 70 +-
.../ethernet/qualcomm/rmnet/rmnet_config.h | 20 +
.../ethernet/qualcomm/rmnet/rmnet_handlers.c | 25 +-
.../net/ethernet/qualcomm/rmnet/rmnet_map.h | 20 +-
.../ethernet/qualcomm/rmnet/rmnet_map_data.c | 715 +++++++++++++++++-
.../net/ethernet/qualcomm/rmnet/rmnet_vnd.c | 21 +
include/linux/if_rmnet.h | 31 +
include/uapi/linux/if_link.h | 1 +
9 files changed, 958 insertions(+), 60 deletions(-)
--
2.34.1