Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp1773781ybl; Sat, 11 Jan 2020 02:32:37 -0800 (PST) X-Google-Smtp-Source: APXvYqw8ts7xeOvrymNS7ZkymPT3+0Q8YiQjGasNbl49UIKHqCUnwhmMiQOARpKybRfrRblJayCH X-Received: by 2002:aca:3846:: with SMTP id f67mr5641606oia.61.1578738757385; Sat, 11 Jan 2020 02:32:37 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1578738757; cv=none; d=google.com; s=arc-20160816; b=XgJL4xAHH3QWkcMzBmthbBVkN/VygBdazzmdaF2roVeUBZIwYoPpjNrI0bo+X6xgdn DuV57t/jESP8y+fgPwaV6wdDrGA2OObzIOEaoDs2zP0s6YJ58RTqJh2u88QMHJl2uM5H dE1r2wxMqHv2lFdkDJISFVnGvJ8d/w+e+C9EWTXhTYgt1i15DbQsnbTNS8OnhncjMj3v JdjPw0mhIPwoHEDkVVmyxiTJDoHYP1XWAEp+XF93GL+ksn14xDINM2HPmCP4c7spJp2O xDCtNRa1Skv6nao4kS7hIPkZov/UTaToBmboO5hRZAzBiC6CX+2ga+3EPO3ijCFTkq+B eugw== 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=mWHf6N1mD7pY3Sffc5hYc7yNiomGVhWatB56ayfHmHg=; b=kE5SGZR54LZUslTcP67QEHIVe/xn3kT8tuXwAGzVNgHaYWOinT+hgwu+tFGDSRff+M GXgGzP/aUAc+3+sC1g4H33e1yuUb7vnse9vWrQq+JwnvBifdUFE4nbwiWNOLoArkfkgn q1vqdpmx2PcDa+YhdnCcU1pNOWE85vrm+uU8PpTV+iWr21vVZEiy/nFz8lfMBAu5rfoL NW0OTP9nsrCHuSCfEb23RaW+yMDAe1ue7vXHPvdhZ1ocwQywiPDw/AvUoxkESr2x31ql 9gMjeDElOnWJC8EaozJlhokKtWu6/u5YjLsoKX4SGWRBPbIa2aoZYmyJHmJdaku+4awF GJIw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=JIEF0yM+; 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 p19si2675663oic.216.2020.01.11.02.32.26; Sat, 11 Jan 2020 02:32:37 -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=JIEF0yM+; 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 S1731276AbgAKKak (ORCPT + 99 others); Sat, 11 Jan 2020 05:30:40 -0500 Received: from mail.kernel.org ([198.145.29.99]:41282 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731057AbgAKKaj (ORCPT ); Sat, 11 Jan 2020 05:30:39 -0500 Received: from localhost (unknown [62.119.166.9]) (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 4184020842; Sat, 11 Jan 2020 10:30:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1578738639; bh=r+PHWT2OgH+2VtXOLMb+yowX3FIRL5ZiIGfvNTRfeak=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=JIEF0yM+K5qm2MZOF8pdhMOSMQag6ArvXfggL7gLdZ1q0VI17FKgIsqzZDXbphNj2 jfMwXjodXd/GCCQ/9P+Ejyoun6siOaSGFxvH6VD68yb6+pLqJFPcmM2giQspDzYV9Q KSi3UZZhDmRYJibCCD2zBvxypnOY128/T2v4Q1Vk= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Jose Abreu , "David S. Miller" , Sasha Levin Subject: [PATCH 5.4 111/165] net: stmmac: Determine earlier the size of RX buffer Date: Sat, 11 Jan 2020 10:50:30 +0100 Message-Id: <20200111094931.513465065@linuxfoundation.org> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200111094921.347491861@linuxfoundation.org> References: <20200111094921.347491861@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: Jose Abreu [ Upstream commit 5d626c879e238be9585bd59a61eb606c9408178a ] Split Header feature needs to know the size of RX buffer but current code is determining it too late. Fix this by moving the RX buffer computation to earlier stage. Changes from v2: - Do not try to align already aligned buffer size Fixes: 67afd6d1cfdf ("net: stmmac: Add Split Header support and enable it in XGMAC cores") Signed-off-by: Jose Abreu Signed-off-by: David S. Miller Signed-off-by: Sasha Levin --- .../net/ethernet/stmicro/stmmac/stmmac_main.c | 24 +++++++++---------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c index 271a00f24f45..d9520c029ae5 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c @@ -1292,19 +1292,9 @@ static int init_dma_rx_desc_rings(struct net_device *dev, gfp_t flags) struct stmmac_priv *priv = netdev_priv(dev); u32 rx_count = priv->plat->rx_queues_to_use; int ret = -ENOMEM; - int bfsize = 0; int queue; int i; - bfsize = stmmac_set_16kib_bfsize(priv, dev->mtu); - if (bfsize < 0) - bfsize = 0; - - if (bfsize < BUF_SIZE_16KiB) - bfsize = stmmac_set_bfsize(dev->mtu, priv->dma_buf_sz); - - priv->dma_buf_sz = bfsize; - /* RX INITIALIZATION */ netif_dbg(priv, probe, priv->dev, "SKB addresses:\nskb\t\tskb data\tdma data\n"); @@ -1346,8 +1336,6 @@ static int init_dma_rx_desc_rings(struct net_device *dev, gfp_t flags) } } - buf_sz = bfsize; - return 0; err_init_rx_buffers: @@ -2654,6 +2642,7 @@ static void stmmac_hw_teardown(struct net_device *dev) static int stmmac_open(struct net_device *dev) { struct stmmac_priv *priv = netdev_priv(dev); + int bfsize = 0; u32 chan; int ret; @@ -2673,7 +2662,16 @@ static int stmmac_open(struct net_device *dev) memset(&priv->xstats, 0, sizeof(struct stmmac_extra_stats)); priv->xstats.threshold = tc; - priv->dma_buf_sz = STMMAC_ALIGN(buf_sz); + bfsize = stmmac_set_16kib_bfsize(priv, dev->mtu); + if (bfsize < 0) + bfsize = 0; + + if (bfsize < BUF_SIZE_16KiB) + bfsize = stmmac_set_bfsize(dev->mtu, priv->dma_buf_sz); + + priv->dma_buf_sz = bfsize; + buf_sz = bfsize; + priv->rx_copybreak = STMMAC_RX_COPYBREAK; ret = alloc_dma_desc_resources(priv); -- 2.20.1