From: claudiu beznea <claudiu.beznea@tuxon.dev>
To: Sergey Shtylyov <s.shtylyov@omp.ru>,
davem@davemloft.net, edumazet@google.com, kuba@kernel.org,
pabeni@redhat.com, richardcochran@gmail.com,
p.zabel@pengutronix.de, yoshihiro.shimoda.uh@renesas.com,
wsa+renesas@sang-engineering.com, geert+renesas@glider.be
Cc: netdev@vger.kernel.org, linux-renesas-soc@vger.kernel.org,
linux-kernel@vger.kernel.org,
Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
Subject: Re: [PATCH net-next v2 08/21] net: ravb: Move the IRQs get and request in the probe function
Date: Sun, 17 Dec 2023 13:56:32 +0200 [thread overview]
Message-ID: <8fa1183f-93ff-48c2-a5c7-fb48027c4d52@tuxon.dev> (raw)
In-Reply-To: <b3c03bd5-83f2-331e-07c0-eeabca139224@omp.ru>
On 16.12.2023 17:53, Sergey Shtylyov wrote:
> On 12/14/23 2:45 PM, Claudiu wrote:
>
>> From: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
>>
>> Move the IRQs get and request in the driver's probe function. As some IP
>> variants switches to reset operation mode as a result of setting module
>
> s/switches/switch/.
> Also, the manuals call this "operating mode", not to mix with one of
> the modes -- "operation mode".
ok
>
>> standby through clock enable/disable APIs, to implement runtime PM the
>> resource parsing and requests are moved in the probe function and IP
>
> Requesting.
> Could you explain in more detail why you need to do this?
Ok, I'll update it in the next version.
>
>> settings are moved in the open functions. This is a preparatory change to
>
> I don't see you moving anything into ravb_open() here...
Indeed, this is the general explanation. I'll adapt it to explain it what
has been done in the commit (as it should have been).
>
>> add runtime PM support for all IP variants.
>>
>> Signed-off-by: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
> [...]
>
>> diff --git a/drivers/net/ethernet/renesas/ravb_main.c b/drivers/net/ethernet/renesas/ravb_main.c
>> index 83691a0f0cc2..d7f6e8ea8e79 100644
>> --- a/drivers/net/ethernet/renesas/ravb_main.c
>> +++ b/drivers/net/ethernet/renesas/ravb_main.c
>> @@ -1731,7 +1731,7 @@ static inline int ravb_hook_irq(unsigned int irq, irq_handler_t handler,
>> name = devm_kasprintf(dev, GFP_KERNEL, "%s:%s", ndev->name, ch);
>
> Ugh, I didn't realize we had the managed device API call in a function
> called from ravb_open()... :-/
>
> [...]
>> @@ -2616,6 +2536,127 @@ static void ravb_parse_delay_mode(struct device_node *np, struct net_device *nde
>> }
>> }
>>
>> +static int ravb_get_irqs(struct ravb_private *priv)
>> +{
>> + const char *err_a_irq_name = NULL, *mgmt_a_irq_name = NULL;
>
> You don't seem to use these as the pointers. Could be bool instead?
> But even that doesn't seem necessary..
Indeed, I've messed it a bit. I'll update it in the next version.
>
>> + const struct ravb_hw_info *info = priv->info;
>> + struct platform_device *pdev = priv->pdev;
>> + struct net_device *ndev = priv->ndev;
>> + const char *irq_name, *emac_irq_name;
>> + int i, irq;
>> +
>> + if (!info->multi_irqs) {
>> + irq = platform_get_irq(pdev, 0);
>> + if (irq < 0)
>> + return irq;
>> +
>> + ndev->irq = irq;
>> + return 0;
>> + }
>> +
>> + if (info->err_mgmt_irqs) {
>> + irq_name = "dia";
>> + emac_irq_name = "line3";
>> + err_a_irq_name = "err_a";
>> + mgmt_a_irq_name = "mgmt_a";
>> + } else {
>> + irq_name = "ch22";
>> + emac_irq_name = "ch24";
>> + }
>> +
>> + irq = platform_get_irq_byname(pdev, irq_name);
>> + if (irq < 0)
>> + return irq;
>> + ndev->irq = irq;
>> +
>> + irq = platform_get_irq_byname(pdev, emac_irq_name);
>> + if (irq < 0)
>> + return irq;
>> + priv->emac_irq = irq;
>> +
>> + if (err_a_irq_name) {
>
> Why not just ctest info->err_mgmt_irqs here, as it was before
> this patch?
I can't tell ATM what I've wanted to achieve here. Indeed, just checking
info->err_mgmt_irqs should be better.
>
>> + irq = platform_get_irq_byname(pdev, "err_a");
>> + if (irq < 0)
>> + return irq;
>> + priv->erra_irq = irq;
>> + }
>> +
>> + if (mgmt_a_irq_name) {
>> + irq = platform_get_irq_byname(pdev, "mgmt_a");
>> + if (irq < 0)
>> + return irq;
>> + priv->mgmta_irq = irq;
>> + }
>> +
>> + for (i = 0; i < NUM_RX_QUEUE; i++) {
>> + irq = platform_get_irq_byname(pdev, ravb_rx_irqs[i]);
>> + if (irq < 0)
>> + return irq;
>> + priv->rx_irqs[i] = irq;
>> + }
>> + for (i = 0; i < NUM_TX_QUEUE; i++) {
>> + irq = platform_get_irq_byname(pdev, ravb_tx_irqs[i]);
>> + if (irq < 0)
>> + return irq;
>> + priv->tx_irqs[i] = irq;
>> + }
>> +
>> + return 0;
>> +}
>> +
>> +static int ravb_request_irqs(struct ravb_private *priv)
>
> I'm not sure separating getting and requesting IRQs is a good idea.
> As you're switching to using the managed device API anyway, you could
> save on some IRQ-related fields in the *struct* ravb_private, I think...
I'll have a look. By keeping them separated I tried to have the code doing
the similar things grouped together, tried to keep code similar to what was
previously and tried to avoid huge functions (having parse and request in a
single function will lead, AFAICT, at a function with more lines of code
(difficult to browse in my opinion)).
Thank you for your review,
Claudiu Beznea
>
> [...]
>
> MBR, Sergey
next prev parent reply other threads:[~2023-12-17 11:56 UTC|newest]
Thread overview: 66+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-12-14 11:45 [PATCH net-next v2 00/21] net: ravb: Add suspend to RAM and runtime PM support for RZ/G3S Claudiu
2023-12-14 11:45 ` [PATCH net-next v2 01/21] net: ravb: Let IP-specific receive function to interrogate descriptors Claudiu
2023-12-14 20:39 ` Sergey Shtylyov
2023-12-14 11:45 ` [PATCH net-next v2 02/21] net: ravb: Rely on PM domain to enable gptp_clk Claudiu
2023-12-14 11:45 ` [PATCH net-next v2 03/21] net: ravb: Make reset controller support mandatory Claudiu
2023-12-14 11:45 ` [PATCH net-next v2 04/21] net: ravb: Switch to SYSTEM_SLEEP_PM_OPS()/RUNTIME_PM_OPS() and pm_ptr() Claudiu
2023-12-14 11:45 ` [PATCH net-next v2 05/21] net: ravb: Use tabs instead of spaces Claudiu
2023-12-14 11:45 ` [PATCH net-next v2 06/21] net: ravb: Assert/de-assert reset on suspend/resume Claudiu
2023-12-14 20:58 ` Sergey Shtylyov
2023-12-14 11:45 ` [PATCH net-next v2 07/21] net: ravb: Move reference clock enable/disable on runtime PM APIs Claudiu
2023-12-15 17:24 ` Sergey Shtylyov
2023-12-14 11:45 ` [PATCH net-next v2 08/21] net: ravb: Move the IRQs get and request in the probe function Claudiu
2023-12-16 15:53 ` Sergey Shtylyov
2023-12-17 11:56 ` claudiu beznea [this message]
2023-12-14 11:45 ` [PATCH net-next v2 09/21] net: ravb: Split GTI computation and set operations Claudiu
2023-12-16 16:38 ` Sergey Shtylyov
2023-12-17 12:40 ` claudiu beznea
2023-12-19 18:20 ` Sergey Shtylyov
2023-12-14 11:45 ` [PATCH net-next v2 10/21] net: ravb: Move delay mode set in the driver's ndo_open API Claudiu
2023-12-15 19:58 ` Sergey Shtylyov
2023-12-15 19:58 ` Sergey Shtylyov
2023-12-17 12:49 ` claudiu beznea
2023-12-19 18:40 ` Sergey Shtylyov
2023-12-20 12:02 ` claudiu beznea
2023-12-14 11:45 ` [PATCH net-next v2 11/21] net: ravb: Move DBAT configuration to " Claudiu
2023-12-14 21:03 ` Sergey Shtylyov
2023-12-15 20:01 ` Sergey Shtylyov
2023-12-17 12:54 ` claudiu beznea
2023-12-19 18:54 ` Sergey Shtylyov
2023-12-20 11:41 ` claudiu beznea
2023-12-21 19:54 ` Sergey Shtylyov
2023-12-14 11:45 ` [PATCH net-next v2 12/21] net: ravb: Move ptp initialization in the driver's ndo_open API for ccc_gac platorms Claudiu
2023-12-16 17:10 ` Sergey Shtylyov
2023-12-14 11:45 ` [PATCH net-next v2 13/21] net: ravb: Set config mode in ndo_open and reset mode in ndo_close Claudiu
2023-12-16 17:28 ` Sergey Shtylyov
2023-12-17 13:15 ` claudiu beznea
2023-12-21 19:40 ` Sergey Shtylyov
2023-12-14 11:45 ` [PATCH net-next v2 14/21] net: ravb: Simplify ravb_suspend() Claudiu
2023-12-16 17:47 ` Sergey Shtylyov
2023-12-14 11:45 ` [PATCH net-next v2 15/21] net: ravb: Simplify ravb_resume() Claudiu
2023-12-16 19:26 ` Sergey Shtylyov
2023-12-14 11:45 ` [PATCH net-next v2 16/21] net: ravb: Keep the reverse order of operations in ravb_close() Claudiu
2023-12-16 19:38 ` Sergey Shtylyov
2023-12-14 11:45 ` [PATCH net-next v2 17/21] net: ravb: Keep clock request operations grouped together Claudiu
2023-12-16 19:43 ` Sergey Shtylyov
2023-12-17 13:22 ` claudiu beznea
2023-12-19 20:29 ` Sergey Shtylyov
2023-12-14 11:45 ` [PATCH net-next v2 18/21] net: ravb: Return cached statistics if the interface is down Claudiu
2023-12-16 20:02 ` Sergey Shtylyov
2023-12-17 13:54 ` claudiu beznea
2023-12-20 20:00 ` Sergey Shtylyov
2023-12-16 20:02 ` Sergey Shtylyov
2023-12-14 11:45 ` [PATCH net-next v2 19/21] net: ravb: Do not set promiscuous mode " Claudiu
2023-12-16 20:16 ` Sergey Shtylyov
2023-12-17 14:02 ` claudiu beznea
2023-12-20 20:44 ` Sergey Shtylyov
2023-12-14 11:45 ` [PATCH net-next v2 20/21] net: ravb: Do not apply RX CSUM settings to hardware " Claudiu
2023-12-16 20:36 ` Sergey Shtylyov
2023-12-17 14:34 ` claudiu beznea
2023-12-21 18:50 ` Sergey Shtylyov
2023-12-14 11:46 ` [PATCH net-next v2 21/21] net: ravb: Add runtime PM support Claudiu
2023-12-16 20:56 ` Sergey Shtylyov
2023-12-14 11:56 ` [PATCH net-next v2 00/21] net: ravb: Add suspend to RAM and runtime PM support for RZ/G3S claudiu beznea
2023-12-14 19:26 ` Jakub Kicinski
2023-12-15 9:44 ` claudiu beznea
2023-12-15 16:52 ` Jakub Kicinski
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=8fa1183f-93ff-48c2-a5c7-fb48027c4d52@tuxon.dev \
--to=claudiu.beznea@tuxon.dev \
--cc=claudiu.beznea.uj@bp.renesas.com \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=geert+renesas@glider.be \
--cc=kuba@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-renesas-soc@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=p.zabel@pengutronix.de \
--cc=pabeni@redhat.com \
--cc=richardcochran@gmail.com \
--cc=s.shtylyov@omp.ru \
--cc=wsa+renesas@sang-engineering.com \
--cc=yoshihiro.shimoda.uh@renesas.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
all inboxes | Powered by JetHome®