net: ethernet: rmnet: Support for ingress MAPv5 checksum offload
Adding support for processing of MAPv5 downlink packets. It involves parsing the Mapv5 packet and checking the csum header to know whether the hardware has validated the checksum and is valid or not. Based on the checksum valid bit the corresponding stats are incremented and skb->ip_summed is marked either CHECKSUM_UNNECESSARY or left as CHEKSUM_NONE to let network stack revalidate the checksum and update the respective snmp stats. Current MAPV1 header has been modified, the reserved field in the Mapv1 header is now used for next header indication. Signed-off-by: Sharath Chandra Vurukala <sharathv@codeaurora.org> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
710b797cf6
commit
e1d9a90a9b
@@ -1,5 +1,5 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/* Copyright (c) 2013-2018, The Linux Foundation. All rights reserved.
|
||||
/* Copyright (c) 2013-2018, 2021, The Linux Foundation. All rights reserved.
|
||||
*
|
||||
* RMNET Data ingress/egress handler
|
||||
*/
|
||||
@@ -82,11 +82,16 @@ __rmnet_map_ingress_handler(struct sk_buff *skb,
|
||||
|
||||
skb->dev = ep->egress_dev;
|
||||
|
||||
/* Subtract MAP header */
|
||||
skb_pull(skb, sizeof(struct rmnet_map_header));
|
||||
rmnet_set_skb_proto(skb);
|
||||
|
||||
if (port->data_format & RMNET_FLAGS_INGRESS_MAP_CKSUMV4) {
|
||||
if ((port->data_format & RMNET_FLAGS_INGRESS_MAP_CKSUMV5) &&
|
||||
(map_header->flags & MAP_NEXT_HEADER_FLAG)) {
|
||||
if (rmnet_map_process_next_hdr_packet(skb, len))
|
||||
goto free_skb;
|
||||
skb_pull(skb, sizeof(*map_header));
|
||||
rmnet_set_skb_proto(skb);
|
||||
} else if (port->data_format & RMNET_FLAGS_INGRESS_MAP_CKSUMV4) {
|
||||
/* Subtract MAP header */
|
||||
skb_pull(skb, sizeof(*map_header));
|
||||
rmnet_set_skb_proto(skb);
|
||||
if (!rmnet_map_checksum_downlink_packet(skb, len + pad))
|
||||
skb->ip_summed = CHECKSUM_UNNECESSARY;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user