From patchwork Tue Feb 21 11:52:51 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Madalin Bucur X-Patchwork-Id: 730463 Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from lists.ozlabs.org (lists.ozlabs.org [103.22.144.68]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3vSJyd0ypbz9s7K for ; Tue, 21 Feb 2017 23:02:17 +1100 (AEDT) Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3]) by lists.ozlabs.org (Postfix) with ESMTP id 3vSJyd09XCzDqmv for ; Tue, 21 Feb 2017 23:02:17 +1100 (AEDT) X-Original-To: linuxppc-dev@lists.ozlabs.org Delivered-To: linuxppc-dev@lists.ozlabs.org Received: from NAM02-BL2-obe.outbound.protection.outlook.com (mail-bl2nam02on0047.outbound.protection.outlook.com [104.47.38.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 3vSJmv2hG5zDqHs for ; Tue, 21 Feb 2017 22:53:51 +1100 (AEDT) Received: from BN6PR03CA0013.namprd03.prod.outlook.com (10.168.230.151) by BY2PR0301MB0726.namprd03.prod.outlook.com (10.160.63.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.919.13; Tue, 21 Feb 2017 11:53:46 +0000 Received: from BN1BFFO11FD016.protection.gbl (2a01:111:f400:7c10::1:131) by BN6PR03CA0013.outlook.office365.com (2603:10b6:404:23::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.919.13 via Frontend Transport; Tue, 21 Feb 2017 11:53:45 +0000 Authentication-Results: spf=fail (sender IP is 192.88.168.50) smtp.mailfrom=nxp.com; nxp.com; dkim=none (message not signed) header.d=none; nxp.com; dmarc=fail action=none header.from=nxp.com; nxp.com; dkim=none (message not signed) header.d=none; Received-SPF: Fail (protection.outlook.com: domain of nxp.com does not designate 192.88.168.50 as permitted sender) receiver=protection.outlook.com; client-ip=192.88.168.50; helo=tx30smr01.am.freescale.net; Received: from tx30smr01.am.freescale.net (192.88.168.50) by BN1BFFO11FD016.mail.protection.outlook.com (10.58.144.79) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.919.10 via Frontend Transport; Tue, 21 Feb 2017 11:53:45 +0000 Received: from fsr-fed2164-101.ea.freescale.net (fsr-fed2164-101.ea.freescale.net [10.171.73.197]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id v1LBr3uj009568; Tue, 21 Feb 2017 04:53:43 -0700 From: Madalin Bucur To: Subject: [PATCH 6/9] dpaa_eth: enable Rx checksum offload Date: Tue, 21 Feb 2017 13:52:51 +0200 Message-ID: <1487677974-13678-7-git-send-email-madalin.bucur@nxp.com> X-Mailer: git-send-email 2.1.0 In-Reply-To: <1487677974-13678-1-git-send-email-madalin.bucur@nxp.com> References: <1487677974-13678-1-git-send-email-madalin.bucur@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131321516257933770; (91ab9b29-cfa4-454e-5278-08d120cd25b8); () X-Forefront-Antispam-Report: CIP:192.88.168.50; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(336005)(7916002)(39410400002)(39400400002)(39860400002)(39450400003)(39380400002)(39840400002)(39850400002)(2980300002)(1110001)(1109001)(339900001)(189002)(199003)(86362001)(3450700001)(104016004)(189998001)(97736004)(4326007)(68736007)(48376002)(2351001)(626004)(43066003)(50466002)(356003)(305945005)(8936002)(81166006)(81156014)(8676002)(105606002)(106466001)(50226002)(33646002)(6916009)(6666003)(2950100002)(110136004)(38730400002)(2906002)(76176999)(50986999)(5003940100001)(5660300001)(53936002)(36756003)(54906002)(47776003)(85426001)(77096006)(8656002); DIR:OUT; SFP:1101; SCL:1; SRVR:BY2PR0301MB0726; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; MX:1; A:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BN1BFFO11FD016; 1:tIRpVFmPQ0ZaKqAo15z0eM2a8H10VsSeabvIudgqZmkQLR1ysYtSmqFS50lJJ9Aia5P8Dq3BHyZL3gVkDd3o//EgjklacuRozqTw/w5J11ggC9Kqa+vjMJLML7UD53qNuvYhwXRMD7cSckkwatp5Y7bJLZ1O1b+VkMoiUR6QoRkVsfIYdPiexRmDmN9Y3NapvyeXeqimT8ZBmtVze3wjbkvUp7xffm4tT2RCCqSe6ve4otiExNBmx0SuTR1x2pYuGe0+/g+BbgS1ErVAoaMXLfpEyRv9SaTqLwdox9xhXPgO9U/rFbgNlvSsMBd3ACOouEB3glUJJCRV5HlCzP6khtjqTrp+3MfeDvQoubpA0LXx6ANU0w9s0x7u/XOv/IJrw5qxA8+Bg9JHvHM9Xf7yjcjv0fQg84YrW6uk93OWGFxPrqrYc664CvQGcC33yQUkimSNbC2Gi0+aYfmHszs4ljWlxfUoaNo1ya4tM4W3sYBC6JCa7jXQZJb6231ZflwzEja9LulgGktWUit3s+PDn9LmLNtLuH8vlyP5He3Yd5whgqeA//qOKCg8wdaj6FAa6tvsrSNZwG0naYwxlMYyH5p3sQUBKL+4ggA2plXGwTnZ/2h/eeR5qyjhQHoHAocAfBB9cwwNqYgMkr3bsAVtX1DJs6ozQ7wZuoPT/inEzQIUV9qCXnRCKGPlCrPIq+A1yAIzFlQuAQxKOFIDy2fiZA== MIME-Version: 1.0 X-MS-Office365-Filtering-Correlation-Id: 10ec8aaa-9efc-47bb-1869-08d45a504a60 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:BY2PR0301MB0726; X-Microsoft-Exchange-Diagnostics: 1; BY2PR0301MB0726; 3:LGvH9WLrI8f6emrUU8RYDQWeBQlw8am72SuykmRz7B6syUXd0qMtu9bS2+gVGjREW9fR2686gJEJ6bpSVC6Lizr+xDPEGxS7ZooZ4kPgEY4TwRM3H3DJ63ujVwHxJCCB0HU3zOWXURuQK/eF0TA6KKoZ9MmE5O6P6jkPMtOAsZAIRN0kLSCaycdz0PZ4vSO2RERFUDe7qjyKxk8P2wbjWnZ/mj4bh4mZkBB/JvKiJWMKRnmgZ1WfEdDQBFmn+x606u2yMEH5jRX5kYWb2QNJRwIViFmidrcFuMAe/Qz/lsM6paQwiZKwAdXXfywi+jkeBStx8EWRDKwXbSysqVzy6SWZEfKdJEtYQV/zf3y1GepherHVQ45Dlo8yC79HLn8H; 25:jKbbcefRWDgpQj2C7jPNoY4nDQHOEooJr+PAt3u6l3HSGB/mgaui62acRnS+vRnWtreJ9pwfK3Mcwkwr1MWO06Weev0Q8GldboWXHxzOi8JwO7kWon89VDEKxPBjiz7ALw7H8xt3CcPHOyWIiuPN8s3pETv5INM8gOsxs6O+6gydYgL+BvOC/v+OV8BKgsn3Ze2Y6EUzQUrw32SWwK+f9VfkwkjTXne5IIyVlju5yi3BYB26MxCh1OZ3bksKXdFV01xb6HZaEwyHzAN3RtKrOZXhjW/OYO80VeGqMA61/uRlIMqqxyo403Z2ecX1EnVRXiABaYhVubpO4JRSEQ9+HRvMrXrGnCENDn7dKFdoRUJQ4lC1LbQMrSXsICsBvWPUpCx9Km8HCp93Kl2oYa4+jgnqYLIDlCH7Gmy92Fn2+q9ipPEaADW9mEIOpqQCC65mzRcOhiqPuIFgXj9zCWWeYg== X-Microsoft-Exchange-Diagnostics: 1; BY2PR0301MB0726; 31:z00BzH3422XetIuLZBkocCNT4jnstOvTrAHVR5MvBrXN3PlZJxfjGsK0pC7rcg/5zkxmojOseCpiCbFFZNH+cBj2DUwKMBFxqRCorqVIp2jedltQ0tHQoezYhVvwnaisZNYUpwCDDgrT/E0OUp1PPkb6bIPL7fZjPEk0expNEXJImjxm2mHCGlECzPns6Zc04bkCJY6qsTNWVuZT9n8Zt7/v6wpZwKw7NtdlemlNAJw8+1rn7Cr+Hy9xFPcY+ubyU17syGtRS3W7jsHF+2pYUG/e6XoKTZ8EvpYmHrLy1z4= 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)(8121501046)(5005006)(13015025)(13017025)(13023025)(13024025)(13018025)(3002001)(10201501046)(6055026)(6096035)(20161123559025)(20161123565025)(20161123556025)(20161123561025)(20161123563025); SRVR:BY2PR0301MB0726; BCL:0; PCL:0; RULEID:(400006); SRVR:BY2PR0301MB0726; X-Microsoft-Exchange-Diagnostics: 1; BY2PR0301MB0726; 4:qlOEJ0/NaSALw3OEK2uBCKqx085AoUYJMJiyLNG8CGot6snixo0On7SlF7+OHVnAT0zb9uscYNpuzsrIoUBz0jD1Q7ySWuulSEcLcvf2gz2WubcLB8oh00hIWO6sfI0wZobhn0Q9usD51CxBnm4an7rmAgtU80mh7JiITZ0rer4Ve4DROQ2jlqVE6amrXKq2qUckj64jsxGBA1jGXTseN61NWpn3RithHm9LNIFBlWpp6ju3HQbEFK6PQMc6jZP/+rfpF5do2JKHu4djBYKU1mletdYH+SP+KAVPb4fIxiiXc9ssTdf5TXimvam4i8mNOC5Uwsg2dXWkz+Q6l+fJc4aFxqIOX9kIjnwBsHsCjcC/DzYl2CSBMg5dqfKJoL3JJmHmq83U+nuzdZxBPUskaxlVLZfm2WbjkTFGsgKuh3BsEX2a7ZmCx9lKPY1u8U9S0trPE7h05mX5o/zp5FH0pHfTHSNbR+c6idOtLtlutBfWCTRBpxKoLiEGGXScpNNjBCKDmB7bpwnM+pZ4udhX2pePEW2rJL5qXlgqcQr+dcBVjOLgLh6267iZKSd5+McoFP6gjpGGiXP81pTOAcTU/U8nRHGNq0ZcjOuee7VmYDu36RjzfHU7PjOc1ApDCQLQPf1rOSr5leq+1uqZdsiT0t1U018rzntjYu2R9PsVn5Y10pzimPDUWKucV72NBPo0I+UdfI7JHfCW4chCWlV5u5Z5e07iKcUTYduh4VrPc5o8eKRHAGNJF4ICJlUpHz3t X-Forefront-PRVS: 0225B0D5BC X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BY2PR0301MB0726; 23:3fq0urNImnMNEvZxMq2iFTma03KIZ9pJm/47TRc?= =?us-ascii?Q?MrzpjLDaEyxpV5N01tOY+pYLVnjnUt5xgNOk5twnRBjJRWU3ko1Uhoec3eyz?= =?us-ascii?Q?y939VKtZFkH0PNi1ljzCA8KQwM+j42tJqjnQIOP372mnPAtO27Qjdj94sotF?= =?us-ascii?Q?/XXeheYtvTc065w4E5STvPGNyQFvmnG/f3PIInLjLQ3IvlFDFWwOTRxFWUt7?= =?us-ascii?Q?tCyZ7nJAi7dkAdiCR3SCbNePxrSlYMsxzmY3V2BkRXpYap4I0KetFoELV6rV?= =?us-ascii?Q?QkwuL9kw5HscpwHaVnI1nUNUiAO7UyK3jpgX+iJYYF4uUletyPd7hKddlIhn?= =?us-ascii?Q?rRJbfJT3PbkNrs2zwYbP4S42w63vwTgcWauCZ0UadNH32LUnlxCIlvL9Rt2a?= =?us-ascii?Q?vXmOhLFUOUFsh7/cY+oOv5dj+bG5fzgsOFJOekaP0d95yoU4jk/dc6TIgGEN?= =?us-ascii?Q?q6ZaMXkkjwho1UKg2oAejEfy1f7RcgG8EMYPyOmn2KUj9Vwke2YsYgQinjlb?= =?us-ascii?Q?bBtqXEZVLo/bJnmlPopUbeqjFLwvPITNX9lpO3XOKb9n7TzL/0/Un0qsW33M?= =?us-ascii?Q?wfAzr8NQcsdOx5h28f/dTgkgaVYkbH3HSwe97uMmstkR2MzDHwC7igOzxodK?= =?us-ascii?Q?BS/RFgvUrINiYxoOrK6c5PHHjsY++Lbi/Cn2DSIZB2dUoASUGYxO5AbtYfRR?= =?us-ascii?Q?0j29hhns79CdVHQcavYCjdY1xciRshhRJ6Hcy64WFAZAMG1diFNsiLJKls2i?= =?us-ascii?Q?M78M0MlWehs/aTI5CqkOSf3+cKvPR7Ze2Q11lW6njHsF5q9tSDwKLborALMK?= =?us-ascii?Q?sTOuEU5IrugP3TVF7LgceqxbuhdOBoiNer5686Q82cEsd2FehZFIsWfQJILl?= =?us-ascii?Q?4cxMBEetI26iJUqMqxNx4DPPn8HHEWybzBlm1EXBdy63uvBpnvydJLVUD9Mh?= =?us-ascii?Q?C9hYL84uQwNu/vjZ1LCKYR99pWzfw8X7nYn05OJR66xtwrmxNv4G7sE33th3?= =?us-ascii?Q?I9N9k/lExr0txfAVdyD0mLOmFocHuX124/nKw8Xvhsm0r0HYmmP6ambk0Gsb?= =?us-ascii?Q?CrcQLcLdgVs1wwDFvErCpcOjcvScFrXurYwEQDTPZL31eiWPhWCYmqAYnFO3?= =?us-ascii?Q?4VZQJmxfZVtcW6232F24C5rd67iNmZ4U15pR/QqsaTlEAh/jqJMJ3OAaqRzt?= =?us-ascii?Q?xRJUUkf4VEUUcyncH8nHF1GZfdfZyPe7QlnMmubES/uFSgE1oo+4ldcAobP9?= =?us-ascii?Q?9/CrOOcwmxTf/LgH9Nuf1PqbFJLn84BW02Hk0q4smj1KfqV6RZgqmuBFUvod?= =?us-ascii?Q?RxLQDyZsC80bkcfwApFIq+oZPyk1dADcYE3K4otzyp31K?= X-Microsoft-Exchange-Diagnostics: 1; BY2PR0301MB0726; 6:e5kZr/yO5cPwu83onLi4PYaOO2zRnHTdJbUZB+1+7sNln0xTzHokWgZ6BC96NPs6KkPwrSovNjH2sdEzOGIqazku+f8iu0xU9lEDnH3geRtCB/OmIG4YHrAMGbkrMNWEXkYcj6P58wcq3gHt+CmYxuc0HVaa643q1Q/4yz3KtiW6dsNWZrcXpjWWV8R37+wJCFpNihegWAI3ZMehZCIpoNK0VElR0PbitGpiwdKGuNbSAj3CK4JxziFovVJ57R2elnp4rH+KgYfBDxRzFKzzznZBjQd7ovpaKyBCZ38dHkBN3HqVtPul9yXCAtYkAnfEs0TMTJjV+OF7fk8mFfS8foeP67U1rmoyIvLUnQNh9I5Q3NPJUE4e6wijOCu9G4NW6plep94Lf5rS1Y/rla8Lc1sTj2o05ZIkskSGZWWJe5g=; 5:a22U5QNj+/qfasteZdiuDRyCpyXIpW+LWcqYCF5Q8OrtWvyVZSa9esVkrOISdrIdmjG2K9B5FfGoCJ2TF4PSG3ZJb+1KN5uUL3YYa1teMCMKC0CqZ6n+Ub9baxVWIdom5j9vWOWp2u7DoM9OPpfzC7So+7t/tUNUkyU+g8++5EGe5rGBbop57FhfjlKoP4Vf; 24:8OQzq0cYOG5jAIIulVlBKMDsSGLM41+54b3uJiYlehfOtCvxq+PlBEs1a1gr0EGkULECcj6mWVBFdzULhFi1cUJvldP4laexEWZ2Yxf1BGQ= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BY2PR0301MB0726; 7:GMG27HPdlNI/BKQHyX33kuIYnrZY8lkGfCjbcBpHek38o7Ll5q2R0CFvtSObOl2TQWZqKMbaa/z31gNiZSBvUgaLa2IatD445VLn2QucTes1o5UJW1ZiNw0fyrycQKgGvsLwrrupTTlv3OgNdISyPNCyTPV9fO0pvnNxWaar2dUF9ojNg7xxXQ5zN5EkvNAwUP9U1SPYE3CNIH/+Ko3tvoc8hg7PRMqAebfqRPy7DiIUBsDy3f+bD9DPr5kHrdUMlJckuuUFblOltBtEdxJ0AAzHI21ToNJt1//RmhFgEZITjIfvFDWpCohwbn+hI67k292ot/04wOR2eGz34258xw== X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Feb 2017 11:53:45.5905 (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.168.50]; Helo=[tx30smr01.am.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY2PR0301MB0726 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: camelia.groza@nxp.com, Madalin Bucur , linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org, davem@davemloft.net 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.