Received: by 2002:a25:31c3:0:0:0:0:0 with SMTP id x186csp2916312ybx; Fri, 8 Nov 2019 11:13:56 -0800 (PST) X-Google-Smtp-Source: APXvYqxaneRVTFk00X0+U/HtHYW7xzyUMjasrEarv6do2tuKQs4bEp+uKnSiXXE41bTAZK6ZxGXd X-Received: by 2002:a50:b2c4:: with SMTP id p62mr11997507edd.128.1573240436006; Fri, 08 Nov 2019 11:13:56 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1573240436; cv=none; d=google.com; s=arc-20160816; b=UR4z/JVtVf3+vyAcEKWhiFjaeISGBpKs9vWbBS0sLYtlj+RgeSkC/LAyulwTn7tEFu gRm2oaIB24yEQ7nirYzkwo9Into1S2dKv2Bp26WVVywgmllgal2Vp66NT0E/vu0F0QBR JAMPzZzZhfrQ00hPBscvNdzbPjb3H/euuV9jEl+DV5enhyr8v79+lbUWt1ey01HHD1UW McA+roDa6L5rpKuXrkRRlG1esPCOk2dwOOPY8r2ySAEVCgLLNkaSBH51vZyGD+nLeFDU lkrXwD2UeFEfIzgPSi6BkjTjUJTuNPAElgeO7u7Hg2JIR+I1lxauE4axuaPMW2EYm0qC yksQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=6YROVZpm76+PxJDzoQaLxMOtulIIzKXJ43mcZJG71w0=; b=D7hRUZbj5X3GDtoQ3peSjcydlA0ipmFhsN4nNEnwAtTovQLAb1Yl6F+XYVq5g0pWq3 I0fGh2eD75ntZkXMIiRl3iwqZx1JUtGsthn23nJKQxWmrHvQnr6OLCE8pvPRiqf5zxDn tELBVPcSYGJllWs4pHXj4fq6FXcZESNqYyMpbDTW1O5TjQLU2I+qtLhPXznbWDRf9HuP a3blHidydFRAs/b3yBVP3nwGpeTO4diOPi8UHsVFGPluwoeQUItPWiPMVv9Cj50IMs17 yET0+pd+ncVWoU2ibZyUnwH6S+5pyLhLKACZIPrOEjAqDrUaUTuYH9PWcdJ+KUyGVLfp ohcw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=I6wvqjJe; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id a40si5077130edc.92.2019.11.08.11.13.31; Fri, 08 Nov 2019 11:13:55 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=I6wvqjJe; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2391585AbfKHTIQ (ORCPT + 99 others); Fri, 8 Nov 2019 14:08:16 -0500 Received: from mail.kernel.org ([198.145.29.99]:39160 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2388241AbfKHTIN (ORCPT ); Fri, 8 Nov 2019 14:08:13 -0500 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 7078020673; Fri, 8 Nov 2019 19:08:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1573240092; bh=s8a3PHtKvm5UcDZ/xqQFIvDL3A5gyQWQm3dc3/nTjMs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=I6wvqjJeadD22jgU8g69E75jenW0IORfcD2VA0lTCF8ATm+FkAzli+diGHdV1ZmhH Gse0VhM2tVFzHzqK7zOYrXEGpBGm6W/kHcozf2MpirXtU6wFNj7PrK3MAT1TREMs0O Kn5tGcDrw51IrQd33oQ6jetmyYDa6NeVp/pVx12w= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Benjamin Herrenschmidt , Vijay Khemka , "David S. Miller" Subject: [PATCH 5.3 087/140] net: ethernet: ftgmac100: Fix DMA coherency issue with SW checksum Date: Fri, 8 Nov 2019 19:50:15 +0100 Message-Id: <20191108174910.581446743@linuxfoundation.org> X-Mailer: git-send-email 2.24.0 In-Reply-To: <20191108174900.189064908@linuxfoundation.org> References: <20191108174900.189064908@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Benjamin Herrenschmidt [ Upstream commit 88824e3bf29a2fcacfd9ebbfe03063649f0f3254 ] We are calling the checksum helper after the dma_map_single() call to map the packet. This is incorrect as the checksumming code will touch the packet from the CPU. This means the cache won't be properly flushes (or the bounce buffering will leave us with the unmodified packet to DMA). This moves the calculation of the checksum & vlan tags to before the DMA mapping. This also has the side effect of fixing another bug: If the checksum helper fails, we goto "drop" to drop the packet, which will not unmap the DMA mapping. Signed-off-by: Benjamin Herrenschmidt Fixes: 05690d633f30 ("ftgmac100: Upgrade to NETIF_F_HW_CSUM") Reviewed-by: Vijay Khemka Tested-by: Vijay Khemka Signed-off-by: David S. Miller Signed-off-by: Greg Kroah-Hartman --- drivers/net/ethernet/faraday/ftgmac100.c | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) --- a/drivers/net/ethernet/faraday/ftgmac100.c +++ b/drivers/net/ethernet/faraday/ftgmac100.c @@ -726,6 +726,18 @@ static netdev_tx_t ftgmac100_hard_start_ */ nfrags = skb_shinfo(skb)->nr_frags; + /* Setup HW checksumming */ + csum_vlan = 0; + if (skb->ip_summed == CHECKSUM_PARTIAL && + !ftgmac100_prep_tx_csum(skb, &csum_vlan)) + goto drop; + + /* Add VLAN tag */ + if (skb_vlan_tag_present(skb)) { + csum_vlan |= FTGMAC100_TXDES1_INS_VLANTAG; + csum_vlan |= skb_vlan_tag_get(skb) & 0xffff; + } + /* Get header len */ len = skb_headlen(skb); @@ -752,19 +764,6 @@ static netdev_tx_t ftgmac100_hard_start_ if (nfrags == 0) f_ctl_stat |= FTGMAC100_TXDES0_LTS; txdes->txdes3 = cpu_to_le32(map); - - /* Setup HW checksumming */ - csum_vlan = 0; - if (skb->ip_summed == CHECKSUM_PARTIAL && - !ftgmac100_prep_tx_csum(skb, &csum_vlan)) - goto drop; - - /* Add VLAN tag */ - if (skb_vlan_tag_present(skb)) { - csum_vlan |= FTGMAC100_TXDES1_INS_VLANTAG; - csum_vlan |= skb_vlan_tag_get(skb) & 0xffff; - } - txdes->txdes1 = cpu_to_le32(csum_vlan); /* Next descriptor */