Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp5018055pxb; Mon, 15 Feb 2021 07:27:17 -0800 (PST) X-Google-Smtp-Source: ABdhPJzsFeYybcTiAdaqq88LV99QZ3kLahptHfPEq6B1NHSibbNxwi535jTevSpWOTIkmcl+Y6wj X-Received: by 2002:a17:907:11ce:: with SMTP id va14mr7086255ejb.10.1613402837411; Mon, 15 Feb 2021 07:27:17 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1613402837; cv=none; d=google.com; s=arc-20160816; b=E5wQuFYVBi/s/79GgTymKYHcOnbTyjuitcwZvL6AfXkOrL2gqrz+FIYKW1iERAQa2G d3ZPDUdDLZH5fFA0JmlRd4KkJ+ADnqaUVigI+9EEvp1RXgyeebbREI5eNOh3uYu58L28 lPi9eQWVl2DDvPR++9lXkGEJbVKTPF7kPgTLHJ6f035Pu4K/VCYE0H/GNmncQAbXRtA9 lQ7zeePre9HnISIqOZ7UwPrcfIWxdU6Ih+8BL5oG4hA90GiORYxuQQqHpgktpicorMFM ojRXcamn1m+jml4P0maH6MaBGCtkGg/PUI9m3q810ChWRdKpzzFwZQ+O9cPQ3Cr8i73r iVDw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:message-id:date:subject:cc:to:from :dkim-signature; bh=4iie+V1xfY+VZRTEiy5o7821jbpszkWL42bxdFjOfNw=; b=ASuv5JTa0P9F7YMZPVTbmL7FkyPGZXsTWpMectDj6IjJv6OanQiVrD2OUaePC6eLIe tKb4uBytxrZ7zP1pz45KnKYDTu8vbyrzowwMEvGm/FmVv7eOiqtCQsa6JXCcwwkM9v+9 g6ni9TJ3lpwtJ5wLgmQPy50xf/mMKekNAuk3Y6MB7GUkwz4fovLDFJPUNtbkevRzXCf1 Xe4ZFx45keSI9olI/HZzxbtQd6oCBSlcVkbwJG4u8s2SsiOHlgcLT+IqiBprTmtx0jVK S3PexkSlw2SCPNq8mgYycjkbO67Hs9jZe8PNOO6nbCCUeLs+mA944sgV9EJTfxQcsYKL iD+w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@marvell.com header.s=pfpt0220 header.b=jTjq1IG7; 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=REJECT dis=NONE) header.from=marvell.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id m5si6549778ejk.585.2021.02.15.07.26.54; Mon, 15 Feb 2021 07:27:17 -0800 (PST) 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=@marvell.com header.s=pfpt0220 header.b=jTjq1IG7; 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=REJECT dis=NONE) header.from=marvell.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230030AbhBOP0J (ORCPT + 99 others); Mon, 15 Feb 2021 10:26:09 -0500 Received: from mx0b-0016f401.pphosted.com ([67.231.156.173]:52868 "EHLO mx0b-0016f401.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229913AbhBOPZF (ORCPT ); Mon, 15 Feb 2021 10:25:05 -0500 Received: from pps.filterd (m0045851.ppops.net [127.0.0.1]) by mx0b-0016f401.pphosted.com (8.16.0.43/8.16.0.43) with SMTP id 11FFACfO000562; Mon, 15 Feb 2021 07:24:04 -0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : mime-version : content-type; s=pfpt0220; bh=4iie+V1xfY+VZRTEiy5o7821jbpszkWL42bxdFjOfNw=; b=jTjq1IG70BDpYXmrdU3B8qwRFxuvHegoZtE4BmLX4p535aLVjGuWQ3ZjuTzoiq3KQFbJ 9Afkw0L5rqJOagwKtEo66LSJJoKf0Ntpbe/d4xhECzqbcEUBb90NYwP2+kh+BJ7YKInY FZ7dA3SvZ1hhIyQGEWCs1S6V8EHZsNIcmFp7wSmuVlkCDibvXDSgATG+qI+4sYIddwHG /oEI4QERucSoHqO1FmJInfTJZUCHTC8QYk2UD/vvcSFXTclHxdHUtyZYa5t3yTZJWtmb u8lp7l6YCzhZlLpGlTml6Plk3E5N4KMLfijbdGK2yLWmbIOUqlqzcZFMSiDmy0n23N4x 0g== Received: from dc5-exch01.marvell.com ([199.233.59.181]) by mx0b-0016f401.pphosted.com with ESMTP id 36pf5tv58v-4 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Mon, 15 Feb 2021 07:24:04 -0800 Received: from DC5-EXCH01.marvell.com (10.69.176.38) by DC5-EXCH01.marvell.com (10.69.176.38) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Mon, 15 Feb 2021 07:24:02 -0800 Received: from maili.marvell.com (10.69.176.80) by DC5-EXCH01.marvell.com (10.69.176.38) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Mon, 15 Feb 2021 07:24:02 -0800 Received: from stefan-pc.marvell.com (stefan-pc.marvell.com [10.5.25.21]) by maili.marvell.com (Postfix) with ESMTP id 024D13F7040; Mon, 15 Feb 2021 07:23:59 -0800 (PST) From: To: CC: , , , , , , , , , , , Subject: [net-next] net: mvpp2: Add TX flow control support for jumbo frames Date: Mon, 15 Feb 2021 17:23:42 +0200 Message-ID: <1613402622-11451-1-git-send-email-stefanc@marvell.com> X-Mailer: git-send-email 1.9.1 MIME-Version: 1.0 Content-Type: text/plain X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.369,18.0.761 definitions=2021-02-15_11:2021-02-12,2021-02-15 signatures=0 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Stefan Chulski With MTU less than 1500B on all ports, the driver uses per CPU pool mode. If one of the ports set to jumbo frame MTU size, all ports move to shared pools mode. Here, buffer manager TX Flow Control reconfigured on all ports. Signed-off-by: Stefan Chulski --- drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c | 26 ++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c index 222e9a3..10c17d1 100644 --- a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c +++ b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c @@ -924,6 +924,25 @@ static void mvpp2_bm_pool_update_fc(struct mvpp2_port *port, spin_unlock_irqrestore(&port->priv->mss_spinlock, flags); } +/* disable/enable flow control for BM pool on all ports */ +static void mvpp2_bm_pool_update_priv_fc(struct mvpp2 *priv, bool en) +{ + struct mvpp2_port *port; + int i; + + for (i = 0; i < priv->port_count; i++) { + port = priv->port_list[i]; + if (port->priv->percpu_pools) { + for (i = 0; i < port->nrxqs; i++) + mvpp2_bm_pool_update_fc(port, &port->priv->bm_pools[i], + port->tx_fc & en); + } else { + mvpp2_bm_pool_update_fc(port, port->pool_long, port->tx_fc & en); + mvpp2_bm_pool_update_fc(port, port->pool_short, port->tx_fc & en); + } + } +} + static int mvpp2_enable_global_fc(struct mvpp2 *priv) { int val, timeout = 0; @@ -4913,6 +4932,7 @@ static int mvpp2_set_mac_address(struct net_device *dev, void *p) */ static int mvpp2_bm_switch_buffers(struct mvpp2 *priv, bool percpu) { + bool change_percpu = (percpu != priv->percpu_pools); int numbufs = MVPP2_BM_POOLS_NUM, i; struct mvpp2_port *port = NULL; bool status[MVPP2_MAX_PORTS]; @@ -4928,6 +4948,9 @@ static int mvpp2_bm_switch_buffers(struct mvpp2 *priv, bool percpu) if (priv->percpu_pools) numbufs = port->nrxqs * 2; + if (change_percpu) + mvpp2_bm_pool_update_priv_fc(priv, false); + for (i = 0; i < numbufs; i++) mvpp2_bm_pool_destroy(port->dev->dev.parent, priv, &priv->bm_pools[i]); @@ -4942,6 +4965,9 @@ static int mvpp2_bm_switch_buffers(struct mvpp2 *priv, bool percpu) mvpp2_open(port->dev); } + if (change_percpu) + mvpp2_bm_pool_update_priv_fc(priv, true); + return 0; } -- 1.9.1