From: Vladimir Oltean <olteanv@gmail.com>
To: Furong Xu <0x1207@gmail.com>
Cc: netdev@vger.kernel.org, linux-stm32@st-md-mailman.stormreply.com,
linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org, Andrew Lunn <andrew@lunn.ch>,
Alexandre Torgue <alexandre.torgue@foss.st.com>,
Jose Abreu <joabreu@synopsys.com>,
"David S. Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>,
Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
Maxime Coquelin <mcoquelin.stm32@gmail.com>,
xfr@outlook.com
Subject: Re: [PATCH net-next v1 5/5] net: stmmac: xgmac: Complete FPE support
Date: Thu, 17 Oct 2024 20:31:01 +0300 [thread overview]
Message-ID: <20241017173101.oby36jwek7tninsx@skbuf> (raw)
In-Reply-To: <7b244a9d6550bd856298150fb4c083ca95b41f38.1728980110.git.0x1207@gmail.com>
On Tue, Oct 15, 2024 at 05:09:26PM +0800, Furong Xu wrote:
> diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c
> index 6060a1d702c6..80f12b6e84e6 100644
> --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c
> +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c
> @@ -160,41 +160,54 @@ void stmmac_fpe_apply(struct stmmac_priv *priv)
> }
> }
>
> -static void dwmac5_fpe_configure(void __iomem *ioaddr,
> - struct stmmac_fpe_cfg *cfg,
> - u32 num_txq, u32 num_rxq,
> - bool tx_enable, bool pmac_enable)
> +static void common_fpe_configure(void __iomem *ioaddr,
> + struct stmmac_fpe_cfg *cfg, u32 rxq,
> + bool tx_enable, bool pmac_enable,
> + u32 rxq_addr, u32 fprq_mask, u32 fprq_shift,
> + u32 mac_fpe_addr, u32 int_en_addr,
> + u32 int_en_bit)
11 arguments to a function is a bit too much. Could you introduce a
structure with FPE constants per hardware IP, and just pass a pointer to
that?
> {
> u32 value;
>
> - writel(value, ioaddr + XGMAC_MAC_FPE_CTRL_STS);
> - return;
> + if (!num_tc) {
> + /* Restore default TC:Queue mapping */
> + for (u32 i = 0; i < priv->plat->tx_queues_to_use; i++) {
> + val = readl(priv->ioaddr + XGMAC_MTL_TXQ_OPMODE(i));
> + writel(u32_replace_bits(val, i, XGMAC_Q2TCMAP),
> + priv->ioaddr + XGMAC_MTL_TXQ_OPMODE(i));
> + }
> }
>
> - value = readl(ioaddr + XGMAC_RXQ_CTRL1);
> - value &= ~XGMAC_FPRQ;
> - value |= (num_rxq - 1) << XGMAC_FPRQ_SHIFT;
> - writel(value, ioaddr + XGMAC_RXQ_CTRL1);
> + /* Synopsys Databook:
> + * "All Queues within a traffic class are selected in a round robin
> + * fashion (when packets are available) when the traffic class is
> + * selected by the scheduler for packet transmission. This is true for
> + * any of the scheduling algorithms."
> + */
> + for (u32 tc = 0; tc < num_tc; tc++) {
> + count = ndev->tc_to_txq[tc].count;
> + offset = ndev->tc_to_txq[tc].offset;
> +
> + if (pclass & BIT(tc))
> + preemptible_txqs |= GENMASK(offset + count - 1, offset);
>
> - value = readl(ioaddr + XGMAC_MAC_FPE_CTRL_STS);
> - value |= STMMAC_MAC_FPE_CTRL_STS_EFPE;
> - writel(value, ioaddr + XGMAC_MAC_FPE_CTRL_STS);
> + for (u32 i = 0; i < count; i++) {
> + val = readl(priv->ioaddr + XGMAC_MTL_TXQ_OPMODE(offset + i));
> + writel(u32_replace_bits(val, tc, XGMAC_Q2TCMAP),
> + priv->ioaddr + XGMAC_MTL_TXQ_OPMODE(offset + i));
> + }
> + }
I agree with Simon that this patch is hard to review. The diff looks
like a jungle here, the portion with - has nothing to do with the
portion with +. Please try to do as suggested, first refactor existing
code into the common stuff, then call common stuff from new places.
Also try to keep an eye on how things look in git diff, and splitting
even further if it gets messy.
next prev parent reply other threads:[~2024-10-17 17:36 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-15 9:09 [PATCH net-next v1 0/5] net: stmmac: Refactor FPE as a separate module Furong Xu
2024-10-15 9:09 ` [PATCH net-next v1 1/5] net: stmmac: Introduce separate files for FPE implementation Furong Xu
2024-10-17 12:39 ` Simon Horman
2024-10-15 9:09 ` [PATCH net-next v1 2/5] net: stmmac: Introduce stmmac_fpe_ops for gmac4 and xgmac Furong Xu
2024-10-17 12:39 ` Simon Horman
2024-10-15 9:09 ` [PATCH net-next v1 3/5] net: stmmac: Rework marco definitions " Furong Xu
2024-10-17 12:39 ` Simon Horman
2024-10-17 17:16 ` Vladimir Oltean
2024-10-15 9:09 ` [PATCH net-next v1 4/5] net: stmmac: xgmac: Rename XGMAC_RQ to XGMAC_FPRQ Furong Xu
2024-10-17 12:40 ` Simon Horman
2024-10-17 12:41 ` Simon Horman
2024-10-17 17:18 ` Vladimir Oltean
2024-10-18 19:16 ` Simon Horman
2024-10-15 9:09 ` [PATCH net-next v1 5/5] net: stmmac: xgmac: Complete FPE support Furong Xu
2024-10-17 12:29 ` Simon Horman
2024-10-17 17:31 ` Vladimir Oltean [this message]
2024-10-17 17:06 ` [PATCH net-next v1 0/5] net: stmmac: Refactor FPE as a separate module Vladimir Oltean
2024-10-18 1:33 ` Furong Xu
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=20241017173101.oby36jwek7tninsx@skbuf \
--to=olteanv@gmail.com \
--cc=0x1207@gmail.com \
--cc=alexandre.torgue@foss.st.com \
--cc=andrew@lunn.ch \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=joabreu@synopsys.com \
--cc=kuba@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-stm32@st-md-mailman.stormreply.com \
--cc=mcoquelin.stm32@gmail.com \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=xfr@outlook.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox