From: Subash Abhinov Kasiviswanathan <subashab@codeaurora.org>
To: davem@davemloft.net, netdev@vger.kernel.org, lkp@intel.com
Cc: Subash Abhinov Kasiviswanathan <subashab@codeaurora.org>
Subject: [PATCH net-next v2 06/10] net: qualcomm: rmnet: Define the MAPv4 packet formats
Date: Wed, 3 Jan 2018 14:43:03 -0700 [thread overview]
Message-ID: <1515015787-6713-7-git-send-email-subashab@codeaurora.org> (raw)
In-Reply-To: <1515015787-6713-1-git-send-email-subashab@codeaurora.org>
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>
---
drivers/net/ethernet/qualcomm/rmnet/rmnet_map.h | 16 ++++++++++++++++
drivers/net/ethernet/qualcomm/rmnet/rmnet_private.h | 2 ++
2 files changed, 18 insertions(+)
diff --git a/drivers/net/ethernet/qualcomm/rmnet/rmnet_map.h b/drivers/net/ethernet/qualcomm/rmnet/rmnet_map.h
index ef0eff2..50c50cd 100644
--- a/drivers/net/ethernet/qualcomm/rmnet/rmnet_map.h
+++ b/drivers/net/ethernet/qualcomm/rmnet/rmnet_map.h
@@ -47,6 +47,22 @@ struct rmnet_map_header {
u16 pkt_len;
} __aligned(1);
+struct rmnet_map_dl_csum_trailer {
+ u8 reserved1;
+ u8 valid:1;
+ u8 reserved2:7;
+ u16 csum_start_offset;
+ u16 csum_length;
+ __be16 csum_value;
+} __aligned(1);
+
+struct rmnet_map_ul_csum_header {
+ __be16 csum_start_offset;
+ u16 csum_insert_offset:14;
+ u16 udp_ip4_ind:1;
+ u16 csum_enabled:1;
+} __aligned(1);
+
#define RMNET_MAP_GET_MUX_ID(Y) (((struct rmnet_map_header *) \
(Y)->data)->mux_id)
#define RMNET_MAP_GET_CD_BIT(Y) (((struct rmnet_map_header *) \
diff --git a/drivers/net/ethernet/qualcomm/rmnet/rmnet_private.h b/drivers/net/ethernet/qualcomm/rmnet/rmnet_private.h
index d214280..de0143e 100644
--- a/drivers/net/ethernet/qualcomm/rmnet/rmnet_private.h
+++ b/drivers/net/ethernet/qualcomm/rmnet/rmnet_private.h
@@ -21,6 +21,8 @@
/* 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)
--
1.9.1
next prev parent reply other threads:[~2018-01-03 21:45 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-01-03 21:42 [PATCH net-next v2 00/10] net: qualcomm: rmnet: Enable csum offloads Subash Abhinov Kasiviswanathan
2018-01-03 21:42 ` [PATCH net-next v2 01/10] net: qualcomm: rmnet: Remove redundant check when stamping map header Subash Abhinov Kasiviswanathan
2018-01-03 21:42 ` [PATCH net-next v2 02/10] net: qualcomm: rmnet: Remove invalid condition while stamping mux id Subash Abhinov Kasiviswanathan
2018-01-03 21:43 ` [PATCH net-next v2 03/10] net: qualcomm: rmnet: Remove unused function declaration Subash Abhinov Kasiviswanathan
2018-01-03 21:43 ` [PATCH net-next v2 04/10] net: qualcomm: rmnet: Rename ingress data format to data format Subash Abhinov Kasiviswanathan
2018-01-03 21:43 ` [PATCH net-next v2 05/10] net: qualcomm: rmnet: Set pacing rate Subash Abhinov Kasiviswanathan
2018-01-03 22:01 ` Eric Dumazet
2018-01-03 22:45 ` Subash Abhinov Kasiviswanathan
2018-01-04 7:44 ` Eric Dumazet
2018-01-04 22:43 ` Subash Abhinov Kasiviswanathan
2018-01-03 21:43 ` Subash Abhinov Kasiviswanathan [this message]
2018-01-03 21:43 ` [PATCH net-next v2 07/10] net: qualcomm: rmnet: Add support for RX checksum offload Subash Abhinov Kasiviswanathan
2018-01-03 21:43 ` [PATCH net-next v2 08/10] net: qualcomm: rmnet: Handle command packets with checksum trailer Subash Abhinov Kasiviswanathan
2018-01-03 21:43 ` [PATCH net-next v2 09/10] net: qualcomm: rmnet: Add support for TX checksum offload Subash Abhinov Kasiviswanathan
2018-01-03 21:43 ` [PATCH net-next v2 10/10] net: qualcomm: rmnet: Add support for GSO Subash Abhinov Kasiviswanathan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1515015787-6713-7-git-send-email-subashab@codeaurora.org \
--to=subashab@codeaurora.org \
--cc=davem@davemloft.net \
--cc=lkp@intel.com \
--cc=netdev@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.