All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Russell King (Oracle)" <linux@armlinux.org.uk>
To: "Arınç ÜNAL" <arinc.unal@arinc9.com>
Cc: Andrew Lunn <andrew@lunn.ch>,
	Landen Chao <Landen.Chao@mediatek.com>,
	Florian Fainelli <f.fainelli@gmail.com>,
	erkin.bozoglu@xeront.com, netdev@vger.kernel.org,
	Sean Wang <sean.wang@mediatek.com>,
	Daniel Golle <daniel@makrotopia.org>,
	linux-kernel@vger.kernel.org, DENG Qingfang <dqfext@gmail.com>,
	Eric Dumazet <edumazet@google.com>,
	Paolo Abeni <pabeni@redhat.com>,
	linux-mediatek@lists.infradead.org,
	Bartel Eerdekens <bartel.eerdekens@constell8.be>,
	Matthias Brugger <matthias.bgg@gmail.com>,
	Jakub Kicinski <kuba@kernel.org>,
	Vladimir Oltean <olteanv@gmail.com>,
	mithat.guner@xeront.com, "David S. Miller" <davem@davemloft.net>,
	linux-arm-kernel@lists.infradead.org,
	AngeloGioacchino Del Regno
	<angelogioacchino.delregno@collabora.com>
Subject: Re: [PATCH net-next 01/15] net: dsa: mt7530: always trap frames to active CPU port on MT7530
Date: Sat, 18 Nov 2023 14:34:55 +0000	[thread overview]
Message-ID: <ZVjLj6/iCL/muzmH@shell.armlinux.org.uk> (raw)
In-Reply-To: <20231118123205.266819-2-arinc.unal@arinc9.com>

On Sat, Nov 18, 2023 at 03:31:51PM +0300, Arınç ÜNAL wrote:
> +	/* Set the CPU port to trap frames to for MT7530. Trapped frames will be
> +	 * forwarded to the numerically smallest CPU port which the DSA conduit
> +	 * interface its affine to is up.
> +	 */
> +	if (priv->id != ID_MT7530 && priv->id != ID_MT7621)
> +		return;
> +
> +	if (operational)
> +		priv->active_cpu_ports |= BIT(cpu_dp->index);
> +	else
> +		priv->active_cpu_ports &= ~BIT(cpu_dp->index);
> +
> +	if (priv->active_cpu_ports)
> +		mt7530_rmw(priv, MT7530_MFC, CPU_EN | CPU_PORT_MASK, CPU_EN |
> +			   CPU_PORT(__ffs(priv->active_cpu_ports)));

I would be tempted to write this as:

	mask = BIT(cpu_dp->index);

	if (operational)
		priv->active_cpu_ports |= mask;
	else
		priv->active_cpu_ports &= ~mask;

Now, what happens when active_cpu_ports is zero? Doesn't that mean there
is no active CPU port? In which case, wouldn't disabling the CPU port
direction be appropriate, such as:

	if (priv->active_cpu_ports)
		val = CPU_EN | CPU_PORT(__ffs(priv->active_cpu_ports));
	else
		val = 0;

	mt7530_rmw(priv, MT7530_MFC, CPU_EN | CPU_PORT_MASK, val);	

?

>  struct mt7530_priv {
>  	struct device		*dev;
> @@ -786,6 +787,7 @@ struct mt7530_priv {
>  	struct irq_domain *irq_domain;
>  	u32 irq_enable;
>  	int (*create_sgmii)(struct mt7530_priv *priv, bool dual_sgmii);
> +	unsigned long active_cpu_ports;

So this will be 32 or 64 bit in size. Presumably you know how many CPU
ports there can be, which looking at this code must be less than 8 as
CPU_PORT_MASK is only 3 bits in size. So, maybe use a u8, and check
that cpu_dp->index <= 7 ?

I would also suggest moving irq_enable after create_sgmii, to avoid
holes in the struct.

-- 
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 80Mbps down 10Mbps up. Decent connectivity at last!


WARNING: multiple messages have this Message-ID (diff)
From: "Russell King (Oracle)" <linux@armlinux.org.uk>
To: "Arınç ÜNAL" <arinc.unal@arinc9.com>
Cc: Daniel Golle <daniel@makrotopia.org>,
	Landen Chao <Landen.Chao@mediatek.com>,
	DENG Qingfang <dqfext@gmail.com>,
	Sean Wang <sean.wang@mediatek.com>, Andrew Lunn <andrew@lunn.ch>,
	Florian Fainelli <f.fainelli@gmail.com>,
	Vladimir Oltean <olteanv@gmail.com>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
	Matthias Brugger <matthias.bgg@gmail.com>,
	AngeloGioacchino Del Regno
	<angelogioacchino.delregno@collabora.com>,
	netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	linux-mediatek@lists.infradead.org,
	Frank Wunderlich <frank-w@public-files.de>,
	Bartel Eerdekens <bartel.eerdekens@constell8.be>,
	mithat.guner@xeront.com, erkin.bozoglu@xeront.com
Subject: Re: [PATCH net-next 01/15] net: dsa: mt7530: always trap frames to active CPU port on MT7530
Date: Sat, 18 Nov 2023 14:34:55 +0000	[thread overview]
Message-ID: <ZVjLj6/iCL/muzmH@shell.armlinux.org.uk> (raw)
In-Reply-To: <20231118123205.266819-2-arinc.unal@arinc9.com>

On Sat, Nov 18, 2023 at 03:31:51PM +0300, Arınç ÜNAL wrote:
> +	/* Set the CPU port to trap frames to for MT7530. Trapped frames will be
> +	 * forwarded to the numerically smallest CPU port which the DSA conduit
> +	 * interface its affine to is up.
> +	 */
> +	if (priv->id != ID_MT7530 && priv->id != ID_MT7621)
> +		return;
> +
> +	if (operational)
> +		priv->active_cpu_ports |= BIT(cpu_dp->index);
> +	else
> +		priv->active_cpu_ports &= ~BIT(cpu_dp->index);
> +
> +	if (priv->active_cpu_ports)
> +		mt7530_rmw(priv, MT7530_MFC, CPU_EN | CPU_PORT_MASK, CPU_EN |
> +			   CPU_PORT(__ffs(priv->active_cpu_ports)));

I would be tempted to write this as:

	mask = BIT(cpu_dp->index);

	if (operational)
		priv->active_cpu_ports |= mask;
	else
		priv->active_cpu_ports &= ~mask;

Now, what happens when active_cpu_ports is zero? Doesn't that mean there
is no active CPU port? In which case, wouldn't disabling the CPU port
direction be appropriate, such as:

	if (priv->active_cpu_ports)
		val = CPU_EN | CPU_PORT(__ffs(priv->active_cpu_ports));
	else
		val = 0;

	mt7530_rmw(priv, MT7530_MFC, CPU_EN | CPU_PORT_MASK, val);	

?

>  struct mt7530_priv {
>  	struct device		*dev;
> @@ -786,6 +787,7 @@ struct mt7530_priv {
>  	struct irq_domain *irq_domain;
>  	u32 irq_enable;
>  	int (*create_sgmii)(struct mt7530_priv *priv, bool dual_sgmii);
> +	unsigned long active_cpu_ports;

So this will be 32 or 64 bit in size. Presumably you know how many CPU
ports there can be, which looking at this code must be less than 8 as
CPU_PORT_MASK is only 3 bits in size. So, maybe use a u8, and check
that cpu_dp->index <= 7 ?

I would also suggest moving irq_enable after create_sgmii, to avoid
holes in the struct.

-- 
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 80Mbps down 10Mbps up. Decent connectivity at last!

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

WARNING: multiple messages have this Message-ID (diff)
From: "Russell King (Oracle)" <linux@armlinux.org.uk>
To: "Arınç ÜNAL" <arinc.unal@arinc9.com>
Cc: Daniel Golle <daniel@makrotopia.org>,
	Landen Chao <Landen.Chao@mediatek.com>,
	DENG Qingfang <dqfext@gmail.com>,
	Sean Wang <sean.wang@mediatek.com>, Andrew Lunn <andrew@lunn.ch>,
	Florian Fainelli <f.fainelli@gmail.com>,
	Vladimir Oltean <olteanv@gmail.com>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
	Matthias Brugger <matthias.bgg@gmail.com>,
	AngeloGioacchino Del Regno 
	<angelogioacchino.delregno@collabora.com>,
	netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	linux-mediatek@lists.infradead.org,
	Frank Wunderlich <frank-w@public-files.de>,
	Bartel Eerdekens <bartel.eerdekens@constell8.be>,
	mithat.guner@xeront.com, erkin.bozoglu@xeront.com
Subject: Re: [PATCH net-next 01/15] net: dsa: mt7530: always trap frames to active CPU port on MT7530
Date: Sat, 18 Nov 2023 14:34:55 +0000	[thread overview]
Message-ID: <ZVjLj6/iCL/muzmH@shell.armlinux.org.uk> (raw)
In-Reply-To: <20231118123205.266819-2-arinc.unal@arinc9.com>

On Sat, Nov 18, 2023 at 03:31:51PM +0300, Arınç ÜNAL wrote:
> +	/* Set the CPU port to trap frames to for MT7530. Trapped frames will be
> +	 * forwarded to the numerically smallest CPU port which the DSA conduit
> +	 * interface its affine to is up.
> +	 */
> +	if (priv->id != ID_MT7530 && priv->id != ID_MT7621)
> +		return;
> +
> +	if (operational)
> +		priv->active_cpu_ports |= BIT(cpu_dp->index);
> +	else
> +		priv->active_cpu_ports &= ~BIT(cpu_dp->index);
> +
> +	if (priv->active_cpu_ports)
> +		mt7530_rmw(priv, MT7530_MFC, CPU_EN | CPU_PORT_MASK, CPU_EN |
> +			   CPU_PORT(__ffs(priv->active_cpu_ports)));

I would be tempted to write this as:

	mask = BIT(cpu_dp->index);

	if (operational)
		priv->active_cpu_ports |= mask;
	else
		priv->active_cpu_ports &= ~mask;

Now, what happens when active_cpu_ports is zero? Doesn't that mean there
is no active CPU port? In which case, wouldn't disabling the CPU port
direction be appropriate, such as:

	if (priv->active_cpu_ports)
		val = CPU_EN | CPU_PORT(__ffs(priv->active_cpu_ports));
	else
		val = 0;

	mt7530_rmw(priv, MT7530_MFC, CPU_EN | CPU_PORT_MASK, val);	

?

>  struct mt7530_priv {
>  	struct device		*dev;
> @@ -786,6 +787,7 @@ struct mt7530_priv {
>  	struct irq_domain *irq_domain;
>  	u32 irq_enable;
>  	int (*create_sgmii)(struct mt7530_priv *priv, bool dual_sgmii);
> +	unsigned long active_cpu_ports;

So this will be 32 or 64 bit in size. Presumably you know how many CPU
ports there can be, which looking at this code must be less than 8 as
CPU_PORT_MASK is only 3 bits in size. So, maybe use a u8, and check
that cpu_dp->index <= 7 ?

I would also suggest moving irq_enable after create_sgmii, to avoid
holes in the struct.

-- 
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 80Mbps down 10Mbps up. Decent connectivity at last!

  reply	other threads:[~2023-11-18 14:37 UTC|newest]

Thread overview: 152+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-11-18 12:31 [PATCH net-next 00/15] MT7530 DSA subdriver improvements Arınç ÜNAL
2023-11-18 12:31 ` Arınç ÜNAL
2023-11-18 12:31 ` Arınç ÜNAL
2023-11-18 12:31 ` [PATCH net-next 01/15] net: dsa: mt7530: always trap frames to active CPU port on MT7530 Arınç ÜNAL
2023-11-18 12:31   ` Arınç ÜNAL
2023-11-18 12:31   ` Arınç ÜNAL
2023-11-18 14:34   ` Russell King (Oracle) [this message]
2023-11-18 14:34     ` Russell King (Oracle)
2023-11-18 14:34     ` Russell King (Oracle)
2023-12-02  8:29     ` Arınç ÜNAL
2023-12-02  8:29       ` Arınç ÜNAL
2023-12-02  8:29       ` Arınç ÜNAL
2023-12-07 17:48       ` Vladimir Oltean
2023-12-07 17:48         ` Vladimir Oltean
2023-12-07 17:48         ` Vladimir Oltean
2023-12-17 11:39         ` Arınç ÜNAL
2023-12-17 11:39           ` Arınç ÜNAL
2023-12-17 11:39           ` Arınç ÜNAL
2023-11-19 12:25   ` Vladimir Oltean
2023-11-19 12:25     ` Vladimir Oltean
2023-11-19 12:25     ` Vladimir Oltean
2023-11-18 12:31 ` [PATCH net-next 02/15] net: dsa: mt7530: use p5_interface_select as data type for p5_intf_sel Arınç ÜNAL
2023-11-18 12:31   ` Arınç ÜNAL
2023-11-18 12:31   ` Arınç ÜNAL
2023-11-19 14:40   ` Vladimir Oltean
2023-11-19 14:40     ` Vladimir Oltean
2023-11-19 14:40     ` Vladimir Oltean
2023-11-18 12:31 ` [PATCH net-next 03/15] net: dsa: mt7530: store port 5 SGMII capability of MT7531 Arınç ÜNAL
2023-11-18 12:31   ` Arınç ÜNAL
2023-11-18 12:31   ` Arınç ÜNAL
2023-11-19 14:50   ` Vladimir Oltean
2023-11-19 14:50     ` Vladimir Oltean
2023-11-19 14:50     ` Vladimir Oltean
2023-11-18 12:31 ` [PATCH net-next 04/15] net: dsa: mt7530: improve comments regarding port 5 and 6 Arınç ÜNAL
2023-11-18 12:31   ` Arınç ÜNAL
2023-11-18 12:31   ` Arınç ÜNAL
2023-11-18 12:31 ` [PATCH net-next 05/15] net: dsa: mt7530: improve code path for setting up port 5 Arınç ÜNAL
2023-11-18 12:31   ` Arınç ÜNAL
2023-11-18 12:31   ` Arınç ÜNAL
2023-11-18 14:41   ` Russell King (Oracle)
2023-11-18 14:41     ` Russell King (Oracle)
2023-11-18 14:41     ` Russell King (Oracle)
2023-12-02  8:36     ` Arınç ÜNAL
2023-12-02  8:36       ` Arınç ÜNAL
2023-12-02  8:36       ` Arınç ÜNAL
2023-12-07 18:03       ` Vladimir Oltean
2023-12-07 18:03         ` Vladimir Oltean
2023-12-07 18:03         ` Vladimir Oltean
2023-12-17 12:01         ` Arınç ÜNAL
2023-12-17 12:01           ` Arınç ÜNAL
2023-12-17 12:01           ` Arınç ÜNAL
2023-11-18 12:31 ` [PATCH net-next 06/15] net: dsa: mt7530: do not set priv->p5_interface on mt7530_setup_port5() Arınç ÜNAL
2023-11-18 12:31   ` Arınç ÜNAL
2023-11-18 12:31   ` Arınç ÜNAL
2023-12-07 18:18   ` Vladimir Oltean
2023-12-07 18:18     ` Vladimir Oltean
2023-12-07 18:18     ` Vladimir Oltean
2023-12-17 12:42     ` Arınç ÜNAL
2023-12-17 12:42       ` Arınç ÜNAL
2023-12-17 12:42       ` Arınç ÜNAL
2023-11-18 12:31 ` [PATCH net-next 07/15] net: dsa: mt7530: do not run mt7530_setup_port5() if port 5 is disabled Arınç ÜNAL
2023-11-18 12:31   ` Arınç ÜNAL
2023-11-18 12:31   ` Arınç ÜNAL
2023-11-21 18:53   ` Simon Horman
2023-11-21 18:53     ` Simon Horman
2023-11-21 18:53     ` Simon Horman
2023-12-02  8:45     ` Arınç ÜNAL
2023-12-02  8:45       ` Arınç ÜNAL
2023-12-02  8:45       ` Arınç ÜNAL
2023-12-02  9:30       ` Russell King (Oracle)
2023-12-02  9:30         ` Russell King (Oracle)
2023-12-02  9:30         ` Russell King (Oracle)
2023-12-06 21:46       ` Simon Horman
2023-12-06 21:46         ` Simon Horman
2023-12-06 21:46         ` Simon Horman
2023-12-07  6:51       ` Dan Carpenter
2023-12-07  6:51         ` Dan Carpenter
2023-12-07  6:51         ` Dan Carpenter
2023-12-07 18:40         ` Vladimir Oltean
2023-12-07 18:40           ` Vladimir Oltean
2023-12-07 18:40           ` Vladimir Oltean
2023-12-07 20:01           ` Vladimir Oltean
2023-12-07 20:01             ` Vladimir Oltean
2023-12-07 20:01             ` Vladimir Oltean
2023-12-08  4:23           ` Dan Carpenter
2023-12-08  4:23             ` Dan Carpenter
2023-12-08  4:23             ` Dan Carpenter
2023-12-08 18:46             ` Vladimir Oltean
2023-12-08 18:46               ` Vladimir Oltean
2023-12-08 18:46               ` Vladimir Oltean
2023-12-17 12:22               ` Arınç ÜNAL
2023-12-17 12:22                 ` Arınç ÜNAL
2023-12-17 12:22                 ` Arınç ÜNAL
2024-01-02 11:16                 ` Dan Carpenter
2024-01-02 11:16                   ` Dan Carpenter
2024-01-02 11:16                   ` Dan Carpenter
2024-01-06 18:01                   ` Arınç ÜNAL
2024-01-06 18:01                     ` Arınç ÜNAL
2024-01-06 18:01                     ` Arınç ÜNAL
2024-01-09 14:57                     ` Vladimir Oltean
2024-01-09 14:57                       ` Vladimir Oltean
2024-01-09 14:57                       ` Vladimir Oltean
2024-01-10  7:26                       ` Arınç ÜNAL
2024-01-10  7:26                         ` Arınç ÜNAL
2024-01-10  7:26                         ` Arınç ÜNAL
2024-01-10 18:23                         ` Vladimir Oltean
2024-01-10 18:23                           ` Vladimir Oltean
2024-01-10 18:23                           ` Vladimir Oltean
2024-01-11 10:22                           ` Arınç ÜNAL
2024-01-11 10:22                             ` Arınç ÜNAL
2024-01-11 10:22                             ` Arınç ÜNAL
2024-01-11 10:31                             ` Vladimir Oltean
2024-01-11 10:31                               ` Vladimir Oltean
2024-01-11 10:31                               ` Vladimir Oltean
2024-01-11 10:35                               ` Frank Wunderlich
2024-01-11 10:35                                 ` Frank Wunderlich
2024-01-11 10:59                               ` Arınç ÜNAL
2024-01-11 10:59                                 ` Arınç ÜNAL
2024-01-11 10:59                                 ` Arınç ÜNAL
2023-11-18 12:31 ` [PATCH net-next 08/15] net: dsa: mt7530: empty default case on mt7530_setup_port5() Arınç ÜNAL
2023-11-18 12:31   ` Arınç ÜNAL
2023-11-18 12:31   ` Arınç ÜNAL
2023-11-18 12:31 ` [PATCH net-next 09/15] net: dsa: mt7530: call port 6 setup from mt7530_mac_config() Arınç ÜNAL
2023-11-18 12:31   ` Arınç ÜNAL
2023-11-18 12:31   ` Arınç ÜNAL
2023-11-18 13:12 ` [PATCH net-next 10/15] net: dsa: mt7530: remove pad_setup function pointer Arınç ÜNAL
2023-11-18 13:12   ` Arınç ÜNAL
2023-11-18 13:12   ` Arınç ÜNAL
2023-11-18 13:13 ` [PATCH net-next 11/15] net: dsa: mt7530: move XTAL check to mt7530_setup() Arınç ÜNAL
2023-11-18 13:13   ` Arınç ÜNAL
2023-11-18 13:13   ` Arınç ÜNAL
2023-11-18 13:13 ` [PATCH net-next 12/15] net: dsa: mt7530: move enabling port 6 to mt7530_setup_port6() Arınç ÜNAL
2023-11-18 13:13   ` Arınç ÜNAL
2023-11-18 13:13   ` Arınç ÜNAL
2023-11-18 13:13 ` [PATCH net-next 13/15] net: dsa: mt7530: simplify mt7530_setup_port6() and change to void Arınç ÜNAL
2023-11-18 13:13   ` Arınç ÜNAL
2023-11-18 13:13   ` Arınç ÜNAL
2023-11-18 13:13 ` [PATCH net-next 14/15] net: dsa: mt7530: correct port capabilities of MT7988 Arınç ÜNAL
2023-11-18 13:13   ` Arınç ÜNAL
2023-11-18 13:13   ` Arınç ÜNAL
2023-11-18 13:13 ` [PATCH net-next 15/15] net: dsa: mt7530: do not clear config->supported_interfaces Arınç ÜNAL
2023-11-18 13:13   ` Arınç ÜNAL
2023-11-18 13:13   ` Arınç ÜNAL
2023-12-02  8:52 ` [PATCH net-next 00/15] MT7530 DSA subdriver improvements Arınç ÜNAL
2023-12-02  8:52   ` Arınç ÜNAL
2023-12-02  8:52   ` Arınç ÜNAL
2023-12-13 15:19   ` Vladimir Oltean
2023-12-13 15:19     ` Vladimir Oltean
2023-12-13 15:19     ` Vladimir Oltean
2023-12-13 16:51     ` Arınç ÜNAL
2023-12-13 16:51       ` Arınç ÜNAL
2023-12-13 16:51       ` Arınç ÜNAL

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ZVjLj6/iCL/muzmH@shell.armlinux.org.uk \
    --to=linux@armlinux.org.uk \
    --cc=Landen.Chao@mediatek.com \
    --cc=andrew@lunn.ch \
    --cc=angelogioacchino.delregno@collabora.com \
    --cc=arinc.unal@arinc9.com \
    --cc=bartel.eerdekens@constell8.be \
    --cc=daniel@makrotopia.org \
    --cc=davem@davemloft.net \
    --cc=dqfext@gmail.com \
    --cc=edumazet@google.com \
    --cc=erkin.bozoglu@xeront.com \
    --cc=f.fainelli@gmail.com \
    --cc=kuba@kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mediatek@lists.infradead.org \
    --cc=matthias.bgg@gmail.com \
    --cc=mithat.guner@xeront.com \
    --cc=netdev@vger.kernel.org \
    --cc=olteanv@gmail.com \
    --cc=pabeni@redhat.com \
    --cc=sean.wang@mediatek.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.