mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-19 19:47:03 +07:00
c597897b08
The MAPv4 packet format adds support for RX / TX checksum offload. For a bi-directional UDP stream at a rate of 570 / 146 Mbps, roughly 10% CPU cycles are saved. For receive path, there is a checksum trailer appended to the end of the MAP packet. The valid field indicates if hardware has computed the checksum. csum_start_offset indicates the offset from the start of the IP header from which hardware has computed checksum. csum_length is the number of bytes over which the checksum was computed and the resulting value is csum_value. In the transmit path, a header is appended between the end of the MAP header and the start of the IP packet. csum_start_offset is the offset in bytes from which hardware will compute the checksum if the csum_enabled bit is set. udp_ip4_ind indicates if the checksum value of 0 is valid or not. csum_insert_offset is the offset from the csum_start_offset where hardware will insert the computed checksum. The use of this additional packet format for checksum offload is explained in subsequent patches. Signed-off-by: Subash Abhinov Kasiviswanathan <subashab@codeaurora.org> Signed-off-by: David S. Miller <davem@davemloft.net>
33 lines
1.2 KiB
C
33 lines
1.2 KiB
C
/* Copyright (c) 2013-2014, 2016-2017 The Linux Foundation. All rights reserved.
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License version 2 and
|
|
* only version 2 as published by the Free Software Foundation.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*/
|
|
|
|
#ifndef _RMNET_PRIVATE_H_
|
|
#define _RMNET_PRIVATE_H_
|
|
|
|
#define RMNET_MAX_PACKET_SIZE 16384
|
|
#define RMNET_DFLT_PACKET_SIZE 1500
|
|
#define RMNET_NEEDED_HEADROOM 16
|
|
#define RMNET_TX_QUEUE_LEN 1000
|
|
|
|
/* Constants */
|
|
#define RMNET_INGRESS_FORMAT_DEAGGREGATION BIT(0)
|
|
#define RMNET_INGRESS_FORMAT_MAP_COMMANDS BIT(1)
|
|
#define RMNET_INGRESS_FORMAT_MAP_CKSUMV4 BIT(2)
|
|
#define RMNET_EGRESS_FORMAT_MAP_CKSUMV4 BIT(3)
|
|
|
|
/* Replace skb->dev to a virtual rmnet device and pass up the stack */
|
|
#define RMNET_EPMODE_VND (1)
|
|
/* Pass the frame directly to another device with dev_queue_xmit() */
|
|
#define RMNET_EPMODE_BRIDGE (2)
|
|
|
|
#endif /* _RMNET_PRIVATE_H_ */
|