From 32f18d565c46c5285c30f654e29ee608e3f4e7da Mon Sep 17 00:00:00 2001 From: Kristian Evensen Date: Wed, 9 Jun 2021 16:32:49 +0200 Subject: [PATCH] net: ethernet: rmnet: Always subtract MAP header Commit 3d04cdf7c6b7 ("net: ethernet: rmnet: Support for ingress MAPv5 checksum offload") broke ingress handling for devices where RMNET_FLAGS_INGRESS_MAP_CKSUMV5 or RMNET_FLAGS_INGRESS_MAP_CKSUMV4 are not set. Unless either of these flags are set, the MAP header is not removed. This commit restores the original logic by ensuring that the MAP header is removed for all MAP packets. Fixes: 3d04cdf7c6b7 ("net: ethernet: rmnet: Support for ingress MAPv5 checksum offload") Signed-off-by: Kristian Evensen Signed-off-by: David S. Miller --- drivers/net/ethernet/qualcomm/rmnet/rmnet_handlers.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/qualcomm/rmnet/rmnet_handlers.c b/drivers/net/ethernet/qualcomm/rmnet/rmnet_handlers.c index 2504d0363b6b7..bfbd7847f9468 100644 --- a/drivers/net/ethernet/qualcomm/rmnet/rmnet_handlers.c +++ b/drivers/net/ethernet/qualcomm/rmnet/rmnet_handlers.c @@ -88,11 +88,12 @@ __rmnet_map_ingress_handler(struct sk_buff *skb, goto free_skb; skb_pull(skb, sizeof(*map_header)); rmnet_set_skb_proto(skb); - } else if (port->data_format & RMNET_FLAGS_INGRESS_MAP_CKSUMV4) { + } else { /* Subtract MAP header */ skb_pull(skb, sizeof(*map_header)); rmnet_set_skb_proto(skb); - if (!rmnet_map_checksum_downlink_packet(skb, len + pad)) + if (port->data_format & RMNET_FLAGS_INGRESS_MAP_CKSUMV4 && + !rmnet_map_checksum_downlink_packet(skb, len + pad)) skb->ip_summed = CHECKSUM_UNNECESSARY; } -- 2.39.5