All of lore.kernel.org
 help / color / mirror / Atom feed
From: Biju Das <biju.das.au@gmail.com>
To: Sergei Shtylyov <sergei.shtylyov@gmail.com>
Cc: Sergey Shtylyov <s.shtylyov@omp.ru>,
	Biju Das <biju.das.jz@bp.renesas.com>,
	 Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>,
	claudiu.beznea@tuxon.dev,
	 "David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	 Jakub Kicinski <kuba@kernel.org>,
	linux-kernel@vger.kernel.org,  linux-renesas-soc@vger.kernel.org,
	netdev@vger.kernel.org,  Paolo Abeni <pabeni@redhat.com>
Subject: Re: [PATCH net-next v2 4/5] net: ravb: Do not apply RX checksum settings to hardware if the interface is down
Date: Sun, 11 Feb 2024 12:29:07 +0000	[thread overview]
Message-ID: <CADT+UeBAprPpYaxwZB=HFXTOQgmskFX7Y7QMwkftQnKVBFcChQ@mail.gmail.com> (raw)
In-Reply-To: <CADT+UeBXkHTGdqpMqXPbXj3Dguci1tEJTUYr5xRkT0+G-6hzgg@mail.gmail.com>

Hi Claudiu,

On Sun, Feb 11, 2024 at 12:13 PM Biju Das <biju.das.au@gmail.com> wrote:
>
> Hi Sergey,
>
> On Sun, Feb 11, 2024 at 9:40 AM Sergei Shtylyov
> <sergei.shtylyov@gmail.com> wrote:
> >
> > On 2/11/24 11:56 AM, Biju Das wrote:
> >
> > >>>> From: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
> > >>>>
> > >>>> Do not apply the RX checksum settings to hardware if the interface is
> > >>>> down.

Gb eth supports both Rx/Tx Checksum

The intention is not to apply any hardware feature while the interface is done.
So please add a generic commit header and description.

Cheers,
Biju

> > >>>> In case runtime PM is enabled, and while the interface is down, the IP
> > >>>> will be in reset mode (as for some platforms disabling the clocks will
> > >>>> switch the IP to reset mode, which will lead to losing register
> > >>>> contents) and applying settings in reset mode is not an option.
> > >>>> Instead, cache the RX checksum settings and apply them in ravb_open()
> > >>>> through ravb_emac_init().
> > >>>> This has been solved by introducing pm_runtime_active() check. The
> > >>>> device runtime PM usage counter has been incremented to avoid
> > >>>> disabling the device clocks while the check is in progress (if any).
> > >>>>
> > >>>> Commit prepares for the addition of runtime PM.
> > >>>>
> > >>>> Signed-off-by: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
> > >>>
> > >>> Reviewed-by: Sergey Shtylyov <s.shtylyov@omp.ru>
> > >>
> > >> This will do the same job, without code duplication right?
> > >>
> > >>> static int ravb_set_features(struct net_device *ndev,
> > >>>     netdev_features_t features)
> > >>> {
> > >>> struct ravb_private *priv = netdev_priv(ndev);
> > >>> struct device *dev = &priv->pdev->dev;
> > >>> const struct ravb_hw_info *info = priv->info;
> > >>>
> > >>> pm_runtime_get_noresume(dev);
> > >>> if (!pm_runtime_active(dev)) {
> > >>> pm_runtime_put_noidle(dev);
> > >>> ndev->features = features;
> > >>> return 0;
> > >>> }
> > >>>
> > >>> return info->set_feature(ndev, features);
> > >
> > >> We now leak the device reference by not calling pm_runtime_put_noidle()
> > >> after this statement...
> > >
> > > Oops. So this leak  can be fixed like [1]
> > >
> > >>  The approach seems sane though -- Claudiu, please consider following it.
> > >
> > > [1]
> > > static int ravb_set_features(struct net_device *ndev,
> > >     netdev_features_t features)
> > > {
> > > struct ravb_private *priv = netdev_priv(ndev);
> > > const struct ravb_hw_info *info = priv->info;
> > > struct device *dev = &priv->pdev->dev;
> > > bool pm_active;
> > >
> > > pm_runtime_get_noresume(dev);
> > > pm_active = pm_runtime_active(dev);
> > > pm_runtime_put_noidle(dev);
> >
> >    There is no point dropping the RPM reference before we access
> > the regs...
>
> I don't think there is an issue in accessing register by the usage of
> below API's
>
> pm_runtime_get_noresume:--- Bump up runtime PM usage counter of a device.
> pm_runtime_active:--- Check whether or not a device is runtime-active.
> pm_runtime_put_noidle:--Drop runtime PM usage counter of a device.
>
> Cheers,
> Biju

  reply	other threads:[~2024-02-11 12:29 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-02-11  8:56 [PATCH net-next v2 4/5] net: ravb: Do not apply RX checksum settings to hardware if the interface is down Biju Das
2024-02-11  9:40 ` Sergei Shtylyov
2024-02-11 12:13   ` Biju Das
2024-02-11 12:29     ` Biju Das [this message]
  -- strict thread matches above, loose matches on Subject: below --
2024-02-09 17:04 [PATCH net-next v2 0/5] net: ravb: Add runtime PM support (part 2) Claudiu
2024-02-09 17:04 ` [PATCH net-next v2 4/5] net: ravb: Do not apply RX checksum settings to hardware if the interface is down Claudiu
2024-02-09 17:11   ` Biju Das
2024-02-09 20:27   ` Sergey Shtylyov
2024-02-09 20:41     ` Biju Das
2024-02-10 20:37       ` Sergey Shtylyov

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='CADT+UeBAprPpYaxwZB=HFXTOQgmskFX7Y7QMwkftQnKVBFcChQ@mail.gmail.com' \
    --to=biju.das.au@gmail.com \
    --cc=biju.das.jz@bp.renesas.com \
    --cc=claudiu.beznea.uj@bp.renesas.com \
    --cc=claudiu.beznea@tuxon.dev \
    --cc=davem@davemloft.net \
    --cc=edumazet@google.com \
    --cc=kuba@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-renesas-soc@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    --cc=s.shtylyov@omp.ru \
    --cc=sergei.shtylyov@gmail.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.