From patchwork Thu Mar 9 14:37:01 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Madalin Bucur X-Patchwork-Id: 737013 Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3vfCrB2rT0z9s7l for ; Fri, 10 Mar 2017 01:46:02 +1100 (AEDT) Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3]) by lists.ozlabs.org (Postfix) with ESMTP id 3vfCrB21zQzDqy4 for ; Fri, 10 Mar 2017 01:46:02 +1100 (AEDT) X-Original-To: linuxppc-dev@lists.ozlabs.org Delivered-To: linuxppc-dev@lists.ozlabs.org Received: from NAM01-SN1-obe.outbound.protection.outlook.com (mail-sn1nam01on0049.outbound.protection.outlook.com [104.47.32.49]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 3vfCfg3DMqzDqXl for ; Fri, 10 Mar 2017 01:37:47 +1100 (AEDT) Received: from DM2PR03CA0046.namprd03.prod.outlook.com (10.141.96.45) by CH1PR03MB1945.namprd03.prod.outlook.com (10.164.115.161) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.919.13; Thu, 9 Mar 2017 14:37:42 +0000 Received: from BY2FFO11FD038.protection.gbl (2a01:111:f400:7c0c::196) by DM2PR03CA0046.outlook.office365.com (2a01:111:e400:2428::45) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.961.14 via Frontend Transport; Thu, 9 Mar 2017 14:37:42 +0000 Authentication-Results: spf=fail (sender IP is 192.88.158.2) smtp.mailfrom=nxp.com; nxp.com; dkim=none (message not signed) header.d=none;nxp.com; dmarc=fail action=none header.from=nxp.com; Received-SPF: Fail (protection.outlook.com: domain of nxp.com does not designate 192.88.158.2 as permitted sender) receiver=protection.outlook.com; client-ip=192.88.158.2; helo=az84smr01.freescale.net; Received: from az84smr01.freescale.net (192.88.158.2) by BY2FFO11FD038.mail.protection.outlook.com (10.1.14.223) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.947.7 via Frontend Transport; Thu, 9 Mar 2017 14:37:42 +0000 Received: from fsr-fed2164-101.ea.freescale.net (fsr-fed2164-101.ea.freescale.net [10.171.73.197]) by az84smr01.freescale.net (8.14.3/8.14.0) with ESMTP id v29EbC5m031838; Thu, 9 Mar 2017 07:37:40 -0700 From: Madalin Bucur To: Subject: [net-next v2 06/10] dpaa_eth: enable Rx checksum offload Date: Thu, 9 Mar 2017 16:37:01 +0200 Message-ID: <1489070225-7891-7-git-send-email-madalin.bucur@nxp.com> X-Mailer: git-send-email 2.1.0 In-Reply-To: <1489070225-7891-1-git-send-email-madalin.bucur@nxp.com> References: <1489070225-7891-1-git-send-email-madalin.bucur@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131335438622415965; (91ab9b29-cfa4-454e-5278-08d120cd25b8); () X-Forefront-Antispam-Report: CIP:192.88.158.2; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(979002)(6009001)(336005)(2980300002)(1110001)(1109001)(339900001)(189002)(199003)(9170700003)(81166006)(8676002)(5003940100001)(47776003)(104016004)(48376002)(85426001)(356003)(4326008)(5660300001)(2950100002)(189998001)(50466002)(106466001)(6916009)(6666003)(54906002)(69596002)(8656002)(77096006)(305945005)(2906002)(3450700001)(50226002)(76176999)(110136004)(86362001)(2351001)(33646002)(38730400002)(105606002)(53936002)(36756003)(50986999)(8936002)(43066003)(969003)(989001)(999001)(1009001)(1019001); DIR:OUT; SFP:1101; SCL:1; SRVR:CH1PR03MB1945; H:az84smr01.freescale.net; FPR:; SPF:Fail; MLV:ovrnspm; MX:1; A:1; PTR:InfoDomainNonexistent; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BY2FFO11FD038; 1:YpH+4x38KexWSPHvjSGvmKL8N7kOVLbeLFr0sUHznxdXXWYS4pEnvSJwNa4wWI43tUi2Vp+I772hjDPESXC3kc6X2CEM/qugIlpcCG0llGKZVVWoAPExr+X+55qHEKjHxxaUj2NRgxd51HqvTAR4xRxwQrSW51tmV6R+I3RONmS1Z5e0QJM82nD0ECMeXHMHlTVsjpGNpbWtwK8k6IE4LdfyqWYSepM2dvbeBvxZPVGug3H1Unf3bI6bM5xiU2/e5GUsABprVT7qsZznbuX7Qmbbdi/lBAJ1ONkzrZkzyuktzLlZ30n8A+5O1AFxgKavsl43P+L2YKJ+veRXpBNxM7NSWMz2UhGbcryc1ldeVQJG3tJ6iZG0BxQWEDPUQB3n0wd96BA5xnwYvj8CQqYkBWzWC9KrrOna1R7qTHBs4tV712arCPDRmycoVgACKmkvIgFjweNPpoImnipr3cWo8+LkxiKJmddRY4jggnXUb6bNlMEzkBON38GqCkOnoY8wJ/1ErehezDVwzFupEsJwxJDP7vb7dZbQo2di84H+T9w6eFQubcqQiglwG/K/MX7eghKU799h+IfeX4BOrWvPx+2JJ6asTZwLz++zDUrkv087SkfHP9F2b0m9hR3wGVrNwH0NuzK2CgusEX+yqZl2bjmtrkEoQmEH3X4pdIt541d1hNjqQKHBMGwa9mG6YBszLmzGYsPEknmVm1j/Y4bEBg== MIME-Version: 1.0 X-MS-Office365-Filtering-Correlation-Id: 3c6d5b44-7d22-416e-5c5d-08d466f9d7f9 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:CH1PR03MB1945; X-Microsoft-Exchange-Diagnostics: 1; CH1PR03MB1945; 3:3iCkF+J96Ad/57cvVN3ooRHFq0gCQQX96NsPAR/4dsjtDN7riphsve6zuCv/tdzioaDcBBKWeHyBtEYAsPJdPT8OP2aLbqY4RJ4lm00Bp1ZnMNKoJWs9mI0F+oXVNoc12Aq6+hdcvVmGFL2TyS/V99GVH7k7LlYcr+dpybejmWqffox+jrdy+n8aGqSQ7rzHaFGbwyDb0efEvRpr9pmbn4IJyFkYgIkyUG4JNqWZqFTACtfH5AuugMWJMPsoc0ACeFWOdKNwaAIVo4xfeqEqk4+vAj+tWmzS+G1kdw+brPG+TLg3GC7PYVqqhJkgVPvx0kLqmPd7EtySUyDPJ4CzRzBCr3fXjsxFK+ysl19TCoreOAwQqnUJprjpDbKbMEQN; 25:mCz0VuQ71v630JMeVZkG4B7lDI0FsK98s5UfJDyekDrk41uSPDSJOv28iMUOmrO6mu2I+pmAyL9AFtgspfjKOTuJmKX7UdtlkonWQ26FyJxXUwTP7JD9CA+3mvo2pMQmd1sAC9FLyXNjztwZbVPHCSs1TuF28wdknyjZT+kbcx7eP1VI9WxVmT2+K9IAMZNw5C1ll/fCvHRqI2VrUIiZ61TqWm0T4RGjMTxaB4YCxqTqblmoByLJH63gi0XS8pNMSTDfbfeIJWmgiLMsSLipJQ1K1tGbspgV8moxHAQD1sMf+Ua9dw352CS24l988mLI9aML0DutT2iA2tROK4jM50yfrsCtxFIoudE/OFAcUEszeXxSNDiunddDVZQQyWXANf05CylbuespiRUvFR99TBEwPRbJO/9Ma67Z3mUfIbooW51S88HAVvpuXLf4IdBZIolvsrN/pnIwPD2j2s2gOA== X-Microsoft-Exchange-Diagnostics: 1; CH1PR03MB1945; 31:dHJxTVFHoxn/hUcJFB9Ko1K3/QEoOJ3iN+nUYdlZ6olJe/qcVaR5whMI8GPCbv79R+Q2ngJJd6wpfdT9IHp2pkDoGtJ5c/3vBz8cD7I0GlQz4dbmGAMo6MuAEcdb+j4PSER8nrgTKN4AQGRrI/4ZGsKXlV0nLHNENYrNekTawAvsjMunWW5uC9if0nAnEdtgShZu7bY2gRDP8r7KaCnOsxlCnKgJAllQ+17sxxamtskehftbsYie/qv8PAv1gZ4VFacl2KOZK1HFoeobuVaZUvCALnBd/cs88Hsiso8hAdc= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6095060)(601004)(2401047)(13017025)(13015025)(13023025)(5005006)(13018025)(13024025)(8121501046)(3002001)(10201501046)(6055026)(6096035)(20161123556025)(20161123561025)(20161123563025)(20161123565025)(20161123559025); SRVR:CH1PR03MB1945; BCL:0; PCL:0; RULEID:(400006); SRVR:CH1PR03MB1945; X-Microsoft-Exchange-Diagnostics: 1; CH1PR03MB1945; 4:qYUP7jLnUc0zLuMLcNWSNGp+2l8DQegnZcuHsESGxm+Fh722Y5SEz6WbnG06tADjV24XdZiJ/L3CVdggNPKwPOW/AL4aVWQ+6HX0XbhUURQUiGzX9vHFaxudWiufvn9J3HtQe/7RLxXeVTpXH66YXAsKXoWZCx8U1nQ5thmaORvcwHbkHPSCmP3HPDuvcScIGUq0AoINLh2FaFOaNny34KfdlLZ4bxxZUKcgwW0ebon47VnGC3RCORqSj3CS38Li5J9TVSOq8aRfJb4O236njarsDesg1ske0HWkpotvOKjAnPbsP1BwZfBj2xgg9n+qPCp4ZEFzfg0v/aZ+n/9PYY5Sq3xkgz7hqkLNxFCFWaJ4P+ah7S6cRrYWDvFndsK9+X4axrfnGEdOvK+ZAy97YGzb3KL4ffMtLdjusDEu2AKAG0EqxseHMrPc3I65K679h0Ve6u6j0RrzHhflpGDDpdqS3O7+cUSxpfp+V1LfL8GW96mSkBjl7lzSMun+ZVQ7U4LmZehEIMUxVxkuB2S/zpQDi0imiz+xGU+TCAU9jFQJieIwaFcb3+zHzqy416KNpHbY4rjfijzAAOTn0Ugt5GFqYqNQu/dlJAaW7su26Z6//pjM4vMPTrd6181x8XAJbstS9aT+aJVZZDuEv7fZ8dTROuf/cvcRC7Sk4847x9KWDmoSmJnX412YHRo+jMDbA1aGcUTmua2QCUbJdOyRB0I0qzqKXjxxroGOWLWsM3Jj6wHzq27snJXq3RoiI6px X-Forefront-PRVS: 0241D5F98C X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CH1PR03MB1945; 23:6E7EJQLnyFbKVYTML7c8ofS/GhIWzs12r3M7iOjcl?= =?us-ascii?Q?glVmftfhclI7IX2doQgaWWnf59/+him35P5Jw6vjZZ0IVWnGWMDTsBJB1Qtq?= =?us-ascii?Q?DuS0ELE5Ooat69Dk7wDqKIrFyQfugsuDUZoyyc5vIvB7+lAMe2Rn0biPeUre?= =?us-ascii?Q?tO1kEXXwSUCJsgI6xWbkSUE2L84B8NDys0aPF+8VF80LMpPGCgvf0YzBHRGK?= =?us-ascii?Q?eK/gM6AC/xk1tP/yPDeYsioHlXys0u7sQfibIIgrx/3+aw11EQtuPO6xuOzO?= =?us-ascii?Q?K6VKSUTAED+7n9mXQaPyRbTRYGGeEwQNDHQ40ghKkn57xhRVKrTWRv5rRgCU?= =?us-ascii?Q?ng8emQC+kfSxLe8btQzLe3j98Z/oi6BOxIXpRKczVk/8svXRHUioFyK2pn6Q?= =?us-ascii?Q?P4nRxSmtTiEOUj7tvaltuCS0Q5PVQCUt4WDbJDGmU3FoO38/yi4wwrbf4zDY?= =?us-ascii?Q?yI/aIfIzoK/X2Fk/Jl8qnRET1OhEJRgDNrrMVuXKODCNpbivLLBgjCotWMEr?= =?us-ascii?Q?iO61yC77cx3bSK53GOKstMGwxNpVY82oX1U5hUinI5qEWc90hc8SCY9fOS5R?= =?us-ascii?Q?lgnt51WV7umrtcj0/Mh7887Zg7l8XSwftj0OPNCVWlT0Gk00V33/4gVT5Eo/?= =?us-ascii?Q?LfC26j73AMCX4Jj8S3csAXEJcnhS+8z3wSAYlG8ay0o9WNIWdcyV6Gsm5QO5?= =?us-ascii?Q?dpIyFA6mYp2DufXHq90M0RTLgmhFqAO8dyTbOmioITDbTexfG9l/Hw37YI5Y?= =?us-ascii?Q?cWSe/JcF724xqmOl34FlGMvbV+jRcw/ch0q3VavyeHFe/2vodSW9M8cdeoKb?= =?us-ascii?Q?L4ShSOv+4ZiTVu2JYZbtKTT587D735lkaZeHNgvbaJdzo3qGmLQ7fiYtZHyJ?= =?us-ascii?Q?HM73HyY81uzwenE6GOYU8TcGjOK/Luo7CXIMhliH5lVdzl2AYU53r5uWrlCL?= =?us-ascii?Q?Biv93327BHbOe5xf9K08jr61IGuyYcap8OYkV1LapST40HWXmSnbj2m7m76C?= =?us-ascii?Q?8nk9LVm5gze82rsdb03CkxX4LHkPwN1eoe4f7Tj3RURyFk0utCwUZQGIE5WR?= =?us-ascii?Q?j4PNZZtIliU78Pju84WC9rNkWKjppPBdGarsmNixFT98kWhhLpYtihVUSn/p?= =?us-ascii?Q?zmkCPVyhOr9ZQVl6u/6bs34cr7wvJvdxdgw6G/Tb5vZ38DXBO0S8Xy7zE/g9?= =?us-ascii?Q?tXiNLh8IxVdke4=3D?= X-Microsoft-Exchange-Diagnostics: 1; CH1PR03MB1945; 6:vOA2ho4z5fRChXRumzJaeqLyTRDBbi4el9HUsaCEohO1iwq1kQVu1pA+DmeeBwHVtB4RLsstFazsXBwC4Jlx787n8XWCjVPczIkwOT5vY1GBa8b2qYFRWc7XLWgqJQ/j7Ej3c043h8AD7/HOQczjDyvpKI3EbVgHmy9hl7ePDRvupeSys/ZxB9c/AyKDueFoC98Gdy2SfojJiRE0+3O01a18qtvpSYOvFFArcyqQ5wM5uDk41pfBj1YnOx2uULUmtKoPbj8/wudrtHYFaBUhtj/lhbd7Qt+NbKYyoqHuvwnAxwTzUGBtvJFtJ0oK1ToxksBwPuyagS+o5Tmr+E3wegn/rmDGgvDiloEnom5zjQdmEhTRXyd4YZjk5ofG7XiT4kq2jdWqNJXdekKHPFK1oBk470lR0RUKGqrJM4WzYhk=; 5:VRzCOLJOn5vY904Vo0eBVp69djxx3M04Iom8ZGCHCLvWem60KBJOD/3Lyd+I2XWuTDFTV+faRqXRjffAFna8hnu7LIRZwEW8gJopglIH6XJ+ZK+vGhbGRayMtgq+4IfAUth+mFjCeagQyWJ7SGRvUPe06XgbttdtpZgfXbMPwx2rFBVogHx7Tg68X7a2sofT; 24:N6qlR4gBmVb0DSsPm+fHEiaHFzserufdXjtBpTt2hOOhlrGDFYUHku3jBb+XEFhVd+qMDij2cdkV0ijQBSeV63puFduixwX8EbWSA8oT1oM= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CH1PR03MB1945; 7:aJRqHZBhIoGIUZmH5hQiQqC7oU8SAE61DpsnW0mUDcCdYSgJ/7L/Ux3fxJjCmZrqQA64I9jIyKUlppx3t2fvOZv8aouSNUCzi+RWC2k4/iEfmgxhYkTl54yMncVtSRHpiL0pm5MFWKj5JMoiS4qrNiKdox0Td8w3lsszCXqi/MriMPVdch5wnph08bnHpb3cPzCzIx0uYmXQ2EquyTXLdl3lCkwQYl6SdrWT4pzIZZmu6MnBcy+C9rxSzrgzhW0OG7sni+8xMTO4138wgVKBTZ8mVzKVjg8jEkoosNbBTF5looYnp6VrSQK5/qH/nkqLHOnAh0DR/6ihlHwXMO6QJw== X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Mar 2017 14:37:42.1167 (UTC) X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e; Ip=[192.88.158.2]; Helo=[az84smr01.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH1PR03MB1945 X-BeenThere: linuxppc-dev@lists.ozlabs.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: madalin.bucur@nxp.com Cc: Madalin Bucur , linux-kernel@vger.kernel.org, camelia.groza@nxp.com, linuxppc-dev@lists.ozlabs.org, davem@davemloft.net, dan.carpenter@oracle.com Errors-To: linuxppc-dev-bounces+patchwork-incoming=ozlabs.org@lists.ozlabs.org Sender: "Linuxppc-dev" Use the FMan HW parser L4CV flag to offload Rx checksumming. Signed-off-by: Madalin Bucur --- drivers/net/ethernet/freescale/dpaa/dpaa_eth.c | 29 ++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c b/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c index e19181f..a7a595c 100644 --- a/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c +++ b/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c @@ -137,6 +137,13 @@ MODULE_PARM_DESC(tx_timeout, "The Tx timeout in ms"); /* L4 Type field: TCP */ #define FM_L4_PARSE_RESULT_TCP 0x20 +/* FD status field indicating whether the FM Parser has attempted to validate + * the L4 csum of the frame. + * Note that having this bit set doesn't necessarily imply that the checksum + * is valid. One would have to check the parse results to find that out. + */ +#define FM_FD_STAT_L4CV 0x00000004 + #define DPAA_SGT_MAX_ENTRIES 16 /* maximum number of entries in SG Table */ #define DPAA_BUFF_RELEASE_MAX 8 /* maximum number of buffers released at once */ @@ -235,6 +242,7 @@ static int dpaa_netdev_init(struct net_device *net_dev, * For conformity, we'll still declare GSO explicitly. */ net_dev->features |= NETIF_F_GSO; + net_dev->features |= NETIF_F_RXCSUM; net_dev->priv_flags |= IFF_LIVE_ADDR_CHANGE; /* we do not want shared skbs on TX */ @@ -1526,6 +1534,23 @@ static struct sk_buff *dpaa_cleanup_tx_fd(const struct dpaa_priv *priv, return skb; } +static u8 rx_csum_offload(const struct dpaa_priv *priv, const struct qm_fd *fd) +{ + /* The parser has run and performed L4 checksum validation. + * We know there were no parser errors (and implicitly no + * L4 csum error), otherwise we wouldn't be here. + */ + if ((priv->net_dev->features & NETIF_F_RXCSUM) && + (be32_to_cpu(fd->status) & FM_FD_STAT_L4CV)) + return CHECKSUM_UNNECESSARY; + + /* We're here because either the parser didn't run or the L4 checksum + * was not verified. This may include the case of a UDP frame with + * checksum zero or an L4 proto other than TCP/UDP + */ + return CHECKSUM_NONE; +} + /* Build a linear skb around the received buffer. * We are guaranteed there is enough room at the end of the data buffer to * accommodate the shared info area of the skb. @@ -1556,7 +1581,7 @@ static struct sk_buff *contig_fd_to_skb(const struct dpaa_priv *priv, skb_reserve(skb, fd_off); skb_put(skb, qm_fd_get_length(fd)); - skb->ip_summed = CHECKSUM_NONE; + skb->ip_summed = rx_csum_offload(priv, fd); return skb; @@ -1616,7 +1641,7 @@ static struct sk_buff *sg_fd_to_skb(const struct dpaa_priv *priv, if (WARN_ON(unlikely(!skb))) goto free_buffers; - skb->ip_summed = CHECKSUM_NONE; + skb->ip_summed = rx_csum_offload(priv, fd); /* Make sure forwarded skbs will have enough space * on Tx, if extra headers are added.