From nobody Fri Dec 19 12:50:33 2025 Received: from relay.smtp-ext.broadcom.com (relay.smtp-ext.broadcom.com [192.19.144.205]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E20CA2765C4; Fri, 7 Nov 2025 00:25:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.19.144.205 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762475122; cv=none; b=gcKO6X1veSVyy44bSnc9WsGr80sjh5Rlx1TxaJskLAM3B6/Z9S0VOlWoDMjXqteMmp/SrzfIYKDYRal5O4l06KX5wg9by7z49mu+gO/2enUwicU6kwbRqM10O+z3FLLoXexIYhSlPb3EgcW/K0xp6r9OfqKnMO9ccxafBGX3ANE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762475122; c=relaxed/simple; bh=G8cT8eWsWQj2hmdiyqajEe4gKyi21FTl167Gx6/CWD8=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=GtP8d0K7WoOmWFPkjSrcFnlZmw5Q/b3CJN6NVvOsf5wvgFVghxxxgOXAMwAVZExVKi6vUBSSZN3kGeJe+vmvvIM5rbpv5mYE1VPKybp94BFrjjL7swpTcYhu34BngOZsN6hztBcau1aKSS8Rftl+UL5hP+GeIfwbMyyRy/c4ru4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=broadcom.com; spf=fail smtp.mailfrom=broadcom.com; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b=vlt2w2GP; arc=none smtp.client-ip=192.19.144.205 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=broadcom.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=broadcom.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b="vlt2w2GP" Received: from mail-lvn-it-01.broadcom.com (mail-lvn-it-01.lvn.broadcom.net [10.36.132.253]) by relay.smtp-ext.broadcom.com (Postfix) with ESMTP id 48B41C0003EE; Thu, 6 Nov 2025 16:25:13 -0800 (PST) DKIM-Filter: OpenDKIM Filter v2.11.0 relay.smtp-ext.broadcom.com 48B41C0003EE DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com; s=dkimrelay; t=1762475113; bh=G8cT8eWsWQj2hmdiyqajEe4gKyi21FTl167Gx6/CWD8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=vlt2w2GPoHg+c1IZvcjNzRnc8SwsBWLKxG3ndUi9nj9pa0VA8bPAtXLppJquvQKDy xPElJeI4kMxAmhai3RqxWhsHxupH7rNrY85eSxGQk6eQJ5WWLz4QKyYPg+RwoSA/oo asvAGKSphHkEviods66ns+404ee3SwewHSfXN+dA= Received: from stbirv-lnx-1.igp.broadcom.net (stbirv-lnx-1.igp.broadcom.net [10.67.48.32]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mail-lvn-it-01.broadcom.com (Postfix) with ESMTPSA id E5D9D180008F4; Thu, 6 Nov 2025 16:25:12 -0800 (PST) From: Florian Fainelli To: netdev@vger.kernel.org Cc: Florian Fainelli , Doug Berger , Broadcom internal kernel review list , Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Stanislav Fomichev , Antoine Tenart , Kuniyuki Iwashima , Yajun Deng , linux-kernel@vger.kernel.org (open list) Subject: [PATCH net-next v3 2/2] net: bcmgenet: Add support for set_pauseparam_panic Date: Thu, 6 Nov 2025 16:25:10 -0800 Message-Id: <20251107002510.1678369-3-florian.fainelli@broadcom.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20251107002510.1678369-1-florian.fainelli@broadcom.com> References: <20251107002510.1678369-1-florian.fainelli@broadcom.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Avoid making sleeping calls that would in not being able to complete the MMIO writes ignoring pause frame reception and generation at the Ethernet MAC controller level. Signed-off-by: Florian Fainelli Change-Id: I268ffdaf28e6df30f37e2eaae421c06c727f524a --- drivers/net/ethernet/broadcom/genet/bcmgenet.c | 8 ++++++++ drivers/net/ethernet/broadcom/genet/bcmgenet.h | 1 + drivers/net/ethernet/broadcom/genet/bcmmii.c | 10 ++++++++++ 3 files changed, 19 insertions(+) diff --git a/drivers/net/ethernet/broadcom/genet/bcmgenet.c b/drivers/net/e= thernet/broadcom/genet/bcmgenet.c index d99ef92feb82..323bf119c2af 100644 --- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c +++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c @@ -966,6 +966,13 @@ static int bcmgenet_set_pauseparam(struct net_device *= dev, return 0; } =20 +static void bcmgenet_set_pauseparam_panic(struct net_device *dev) +{ + struct bcmgenet_priv *priv =3D netdev_priv(dev); + + bcmgenet_set_pause_panic(priv); +} + /* standard ethtool support functions. */ enum bcmgenet_stat_type { BCMGENET_STAT_RTNL =3D -1, @@ -1702,6 +1709,7 @@ static const struct ethtool_ops bcmgenet_ethtool_ops = =3D { .set_rxnfc =3D bcmgenet_set_rxnfc, .get_pauseparam =3D bcmgenet_get_pauseparam, .set_pauseparam =3D bcmgenet_set_pauseparam, + .set_pauseparam_panic =3D bcmgenet_set_pauseparam_panic, }; =20 /* Power down the unimac, based on mode. */ diff --git a/drivers/net/ethernet/broadcom/genet/bcmgenet.h b/drivers/net/e= thernet/broadcom/genet/bcmgenet.h index 5ec3979779ec..faf0d2406e9a 100644 --- a/drivers/net/ethernet/broadcom/genet/bcmgenet.h +++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.h @@ -738,6 +738,7 @@ int bcmgenet_mii_config(struct net_device *dev, bool in= it); int bcmgenet_mii_probe(struct net_device *dev); void bcmgenet_mii_exit(struct net_device *dev); void bcmgenet_phy_pause_set(struct net_device *dev, bool rx, bool tx); +void bcmgenet_set_pause_panic(struct bcmgenet_priv *priv); void bcmgenet_phy_power_set(struct net_device *dev, bool enable); void bcmgenet_mii_setup(struct net_device *dev); =20 diff --git a/drivers/net/ethernet/broadcom/genet/bcmmii.c b/drivers/net/eth= ernet/broadcom/genet/bcmmii.c index 38f854b94a79..8eca6a1a8626 100644 --- a/drivers/net/ethernet/broadcom/genet/bcmmii.c +++ b/drivers/net/ethernet/broadcom/genet/bcmmii.c @@ -147,6 +147,16 @@ void bcmgenet_phy_pause_set(struct net_device *dev, bo= ol rx, bool tx) mutex_unlock(&phydev->lock); } =20 +void bcmgenet_set_pause_panic(struct bcmgenet_priv *priv) +{ + u32 reg; + + /* Disable pause frame generation */ + reg =3D bcmgenet_umac_readl(priv, UMAC_CMD); + reg |=3D CMD_TX_PAUSE_IGNORE; + bcmgenet_umac_writel(priv, reg, UMAC_CMD); +} + void bcmgenet_phy_power_set(struct net_device *dev, bool enable) { struct bcmgenet_priv *priv =3D netdev_priv(dev); --=20 2.34.1