Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp3081879ybt; Mon, 29 Jun 2020 14:52:32 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxA5lpRpRMRRcQ5HjmdZSsxkot+MpQ82vPX7BUgSnOblRltTyA/jK9W+DjTUjEQ1k/n6n2w X-Received: by 2002:a17:906:b888:: with SMTP id hb8mr15558766ejb.124.1593467552133; Mon, 29 Jun 2020 14:52:32 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1593467552; cv=none; d=google.com; s=arc-20160816; b=GJcW7TW0iM/dPaAhOtiMmVTQoFBjF9v0FHP6y8A3FMbMTJe1RRZW9CNMyZewG24GiP QrV/Y4t+4dhE8l8ENz+DHbB/WhQAlJ28/U//3m1MXt6Od0hsVPmypcGhe5ksR5DWLWJh V/vtoOcLd2UkvhSqJppn9KF0MotGUa7fUH2lkveHH/cPtuJ+5uHqK3M5O67cHJu/BzHJ OPEUn2iVQsp+laasY6gtm+ILAHBcAErL/szOmD40epC+UkvrxzklgESzqnmlykPWWkH5 VF7425t29vF9Ad3MXPleOOMrI6KWx/rzScTbzFyJ/4qToNL0F45ow0fhT0346Jln1ESB rBbQ== 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 :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=vlL27iqI+1OaXlHrgFZgHhk3xOFqMLpTKcjMC9j4lOU=; b=WDwuK5yNkWiONegtM4tRqK/lZ/10LBMD7DQmSJkY0YBCyKBAVGczsOKtSi5tlMUKwI PNzwoAttc+34lrachIiZiaYNamvNDW6WRTw+7WZ6xoENhJJvvGgNgaVKsdoi+bPxQ/AT EWXOiyKSImsxoZOMlukw88vN9fcCh+1gwe1wLlEZIRccG5KSc3jp71lE9JzZuNYPPyYi ojsg6rBEdrYmWZEZ28/DIH+ka8Svqz5TdjRByAyLJTJbDzcLtFKuvLbY+X73g7i8Ce2D CF9Ly+Ts2xKrndSxfNPp2i1vXc/p6GzjJqN39hYcMQf5RMlmW9zRQU6cKscL9FjIMyQ8 UbjA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=yAcF1RGZ; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id 10si117048ejn.679.2020.06.29.14.52.09; Mon, 29 Jun 2020 14:52:32 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=yAcF1RGZ; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2404513AbgF2Vu6 (ORCPT + 99 others); Mon, 29 Jun 2020 17:50:58 -0400 Received: from mail.kernel.org ([198.145.29.99]:56786 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726671AbgF2Sfk (ORCPT ); Mon, 29 Jun 2020 14:35:40 -0400 Received: from sasha-vm.mshome.net (c-73-47-72-35.hsd1.nh.comcast.net [73.47.72.35]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id BAA722473D; Mon, 29 Jun 2020 15:20:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1593444060; bh=ytxrJpv4HbDGIhA4VvJS5FU8ycN3FY9OzFHatGp9nUc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=yAcF1RGZ92yq3K7vK092K1ydll1WRraJYAc6YN67rHJX5LGLCvujxA55Xuxtz3Qyo 71s5lk0FQBMx1Y5cwMm/uUB1LrzDWbBQD7oDTu+KOgkTkus1Hm8MwHQj1XqSd1oI+h erTj0XYNLaHBiHOSKq72QfHEs5Gil9DOfSwyzFU8= From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Doug Berger , Florian Fainelli , "David S . Miller" , Sasha Levin Subject: [PATCH 5.7 168/265] net: bcmgenet: use hardware padding of runt frames Date: Mon, 29 Jun 2020 11:16:41 -0400 Message-Id: <20200629151818.2493727-169-sashal@kernel.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200629151818.2493727-1-sashal@kernel.org> References: <20200629151818.2493727-1-sashal@kernel.org> MIME-Version: 1.0 X-KernelTest-Patch: http://kernel.org/pub/linux/kernel/v5.x/stable-review/patch-5.7.7-rc1.gz X-KernelTest-Tree: git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git X-KernelTest-Branch: linux-5.7.y X-KernelTest-Patches: git://git.kernel.org/pub/scm/linux/kernel/git/stable/stable-queue.git X-KernelTest-Version: 5.7.7-rc1 X-KernelTest-Deadline: 2020-07-01T15:14+00:00 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Doug Berger [ Upstream commit 20d1f2d1b024f6be199a3bedf1578a1d21592bc5 ] When commit 474ea9cafc45 ("net: bcmgenet: correctly pad short packets") added the call to skb_padto() it should have been located before the nr_frags parameter was read since that value could be changed when padding packets with lengths between 55 and 59 bytes (inclusive). The use of a stale nr_frags value can cause corruption of the pad data when tx-scatter-gather is enabled. This corruption of the pad can cause invalid checksum computation when hardware offload of tx-checksum is also enabled. Since the original reason for the padding was corrected by commit 7dd399130efb ("net: bcmgenet: fix skb_len in bcmgenet_xmit_single()") we can remove the software padding all together and make use of hardware padding of short frames as long as the hardware also always appends the FCS value to the frame. Fixes: 474ea9cafc45 ("net: bcmgenet: correctly pad short packets") Signed-off-by: Doug Berger Acked-by: Florian Fainelli Signed-off-by: David S. Miller Signed-off-by: Sasha Levin --- drivers/net/ethernet/broadcom/genet/bcmgenet.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/drivers/net/ethernet/broadcom/genet/bcmgenet.c b/drivers/net/ethernet/broadcom/genet/bcmgenet.c index 38bdfd4b46f0f..dde1c23c8e399 100644 --- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c +++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c @@ -1520,11 +1520,6 @@ static netdev_tx_t bcmgenet_xmit(struct sk_buff *skb, struct net_device *dev) goto out; } - if (skb_padto(skb, ETH_ZLEN)) { - ret = NETDEV_TX_OK; - goto out; - } - /* Retain how many bytes will be sent on the wire, without TSB inserted * by transmit checksum offload */ @@ -1571,6 +1566,9 @@ static netdev_tx_t bcmgenet_xmit(struct sk_buff *skb, struct net_device *dev) len_stat = (size << DMA_BUFLENGTH_SHIFT) | (priv->hw_params->qtag_mask << DMA_TX_QTAG_SHIFT); + /* Note: if we ever change from DMA_TX_APPEND_CRC below we + * will need to restore software padding of "runt" packets + */ if (!i) { len_stat |= DMA_TX_APPEND_CRC | DMA_SOP; if (skb->ip_summed == CHECKSUM_PARTIAL) -- 2.25.1