diff mbox

[RFC,v4,0/5] New NDO methods ndo_hwtstamp_get/set

Message ID 20230426165835.443259-1-kory.maincent@bootlin.com (mailing list archive)
State RFC
Delegated to: Netdev Maintainers
Headers show

Commit Message

Kory Maincent April 26, 2023, 4:58 p.m. UTC
From: Kory Maincent <kory.maincent@bootlin.com>

You patch series work on my side with the macb MAC controller and this
patch.
I don't know if you are waiting for more reviews but it seems good enough
to drop the RFC tag.

---

 drivers/net/ethernet/cadence/macb.h      | 10 ++++++--
 drivers/net/ethernet/cadence/macb_main.c | 15 ++++--------
 drivers/net/ethernet/cadence/macb_ptp.c  | 30 ++++++++++++++----------
 3 files changed, 29 insertions(+), 26 deletions(-)

Comments

Max Georgiev April 27, 2023, 4 a.m. UTC | #1
On Wed, Apr 26, 2023 at 10:58 AM Köry Maincent
<kory.maincent@bootlin.com> wrote:
>
> From: Kory Maincent <kory.maincent@bootlin.com>
>
> You patch series work on my side with the macb MAC controller and this
> patch.
> I don't know if you are waiting for more reviews but it seems good enough
> to drop the RFC tag.
>
> ---
>
>  drivers/net/ethernet/cadence/macb.h      | 10 ++++++--
>  drivers/net/ethernet/cadence/macb_main.c | 15 ++++--------
>  drivers/net/ethernet/cadence/macb_ptp.c  | 30 ++++++++++++++----------
>  3 files changed, 29 insertions(+), 26 deletions(-)
>
> diff --git a/drivers/net/ethernet/cadence/macb.h b/drivers/net/ethernet/cadence/macb.h
> index cfbdd0022764..bc73b080093e 100644
> --- a/drivers/net/ethernet/cadence/macb.h
> +++ b/drivers/net/ethernet/cadence/macb.h
> @@ -1350,8 +1350,14 @@ static inline void gem_ptp_do_rxstamp(struct macb *bp, struct sk_buff *skb, stru
>
>         gem_ptp_rxstamp(bp, skb, desc);
>  }
> -int gem_get_hwtst(struct net_device *dev, struct ifreq *rq);
> -int gem_set_hwtst(struct net_device *dev, struct ifreq *ifr, int cmd);
> +
> +int gem_get_hwtst(struct net_device *dev,
> +                 struct kernel_hwtstamp_config *kernel_config,
> +                 struct netlink_ext_ack *extack);
> +int gem_set_hwtst(struct net_device *dev,
> +                 struct kernel_hwtstamp_config *kernel_config,
> +                 struct netlink_ext_ack *extack);
> +
>  #else
>  static inline void gem_ptp_init(struct net_device *ndev) { }
>  static inline void gem_ptp_remove(struct net_device *ndev) { }
> diff --git a/drivers/net/ethernet/cadence/macb_main.c b/drivers/net/ethernet/cadence/macb_main.c
> index 45f63df5bdc4..c1d65be88835 100644
> --- a/drivers/net/ethernet/cadence/macb_main.c
> +++ b/drivers/net/ethernet/cadence/macb_main.c
> @@ -3402,8 +3402,6 @@ static struct macb_ptp_info gem_ptp_info = {
>         .get_ptp_max_adj = gem_get_ptp_max_adj,
>         .get_tsu_rate    = gem_get_tsu_rate,
>         .get_ts_info     = gem_get_ts_info,
> -       .get_hwtst       = gem_get_hwtst,
> -       .set_hwtst       = gem_set_hwtst,
>  };
>  #endif
>
> @@ -3764,15 +3762,6 @@ static int macb_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
>         if (!netif_running(dev))
>                 return -EINVAL;
>
> -       if (!phy_has_hwtstamp(dev->phydev) && bp->ptp_info) {
> -               switch (cmd) {
> -               case SIOCSHWTSTAMP:
> -                       return bp->ptp_info->set_hwtst(dev, rq, cmd);
> -               case SIOCGHWTSTAMP:
> -                       return bp->ptp_info->get_hwtst(dev, rq);
> -               }
> -       }
> -
>         return phylink_mii_ioctl(bp->phylink, rq, cmd);
>  }
>
> @@ -3875,6 +3864,10 @@ static const struct net_device_ops macb_netdev_ops = {
>  #endif
>         .ndo_set_features       = macb_set_features,
>         .ndo_features_check     = macb_features_check,
> +#ifdef CONFIG_MACB_USE_HWSTAMP
> +       .ndo_hwtstamp_get       = gem_get_hwtst,
> +       .ndo_hwtstamp_set       = gem_set_hwtst,
> +#endif
>  };
>
>  /* Configure peripheral capabilities according to device tree
> diff --git a/drivers/net/ethernet/cadence/macb_ptp.c b/drivers/net/ethernet/cadence/macb_ptp.c
> index 51d26fa190d7..eddacc5df435 100644
> --- a/drivers/net/ethernet/cadence/macb_ptp.c
> +++ b/drivers/net/ethernet/cadence/macb_ptp.c
> @@ -374,19 +374,22 @@ static int gem_ptp_set_ts_mode(struct macb *bp,
>         return 0;
>  }
>
> -int gem_get_hwtst(struct net_device *dev, struct ifreq *rq)
> +int gem_get_hwtst(struct net_device *dev,
> +                 struct kernel_hwtstamp_config *kernel_config,
> +                 struct netlink_ext_ack *extack)
>  {
>         struct hwtstamp_config *tstamp_config;
>         struct macb *bp = netdev_priv(dev);
>
> +       if (phy_has_hwtstamp(dev->phydev))
> +               return phylink_mii_ioctl(bp->phylink, kernel_config->ifr, SIOCGHWTSTAMP);
> +
>         tstamp_config = &bp->tstamp_config;
>         if ((bp->hw_dma_cap & HW_DMA_CAP_PTP) == 0)
>                 return -EOPNOTSUPP;
>
> -       if (copy_to_user(rq->ifr_data, tstamp_config, sizeof(*tstamp_config)))
> -               return -EFAULT;
> -       else
> -               return 0;
> +       hwtstamp_config_to_kernel(kernel_config, tstamp_config);
> +       return 0;
>  }
>
>  static void gem_ptp_set_one_step_sync(struct macb *bp, u8 enable)
> @@ -401,7 +404,9 @@ static void gem_ptp_set_one_step_sync(struct macb *bp, u8 enable)
>                 macb_writel(bp, NCR, reg_val & ~MACB_BIT(OSSMODE));
>  }
>
> -int gem_set_hwtst(struct net_device *dev, struct ifreq *ifr, int cmd)
> +int gem_set_hwtst(struct net_device *dev,
> +                 struct kernel_hwtstamp_config *kernel_config,
> +                 struct netlink_ext_ack *extack)
>  {
>         enum macb_bd_control tx_bd_control = TSTAMP_DISABLED;
>         enum macb_bd_control rx_bd_control = TSTAMP_DISABLED;
> @@ -409,13 +414,14 @@ int gem_set_hwtst(struct net_device *dev, struct ifreq *ifr, int cmd)
>         struct macb *bp = netdev_priv(dev);
>         u32 regval;
>
> +       if (phy_has_hwtstamp(dev->phydev))
> +               return phylink_mii_ioctl(bp->phylink, kernel_config->ifr, SIOCSHWTSTAMP);
> +
>         tstamp_config = &bp->tstamp_config;
>         if ((bp->hw_dma_cap & HW_DMA_CAP_PTP) == 0)
>                 return -EOPNOTSUPP;
>
> -       if (copy_from_user(tstamp_config, ifr->ifr_data,
> -                          sizeof(*tstamp_config)))
> -               return -EFAULT;
> +       hwtstamp_config_from_kernel(tstamp_config, kernel_config);
>
>         switch (tstamp_config->tx_type) {
>         case HWTSTAMP_TX_OFF:
> @@ -466,9 +472,7 @@ int gem_set_hwtst(struct net_device *dev, struct ifreq *ifr, int cmd)
>         if (gem_ptp_set_ts_mode(bp, tx_bd_control, rx_bd_control) != 0)
>                 return -ERANGE;
>
> -       if (copy_to_user(ifr->ifr_data, tstamp_config, sizeof(*tstamp_config)))
> -               return -EFAULT;
> -       else
> -               return 0;
> +       hwtstamp_config_to_kernel(kernel_config, tstamp_config);
> +       return 0;
>  }
>
> --
> 2.25.1
>

Thank you for giving it a try!
I'll drop the RFC tag starting from the next iteration.
Kory Maincent April 27, 2023, 8:43 a.m. UTC | #2
On Wed, 26 Apr 2023 22:00:43 -0600
Max Georgiev <glipus@gmail.com> wrote:

> 
> Thank you for giving it a try!
> I'll drop the RFC tag starting from the next iteration.

Sorry I didn't know the net-next submission rules. In fact keep the RFC tag
until net-next open again.
http://vger.kernel.org/~davem/net-next.html

Your patch series don't appear in the cover letter thread:
https://lore.kernel.org/all/20230423032437.285014-1-glipus@gmail.com/
I don't know if it comes from your e-mail or just some issue from lore but could
you check it?

Please add "net:" prefix to your patches commit title when changing the net
core, "macvlan:" prefix for macvlan driver change, etc ... 

Also I see you forgot "net-next" to the subject prefix in this iteration please
don't in next one.

Thanks for your work!
Max Georgiev April 28, 2023, 4:57 a.m. UTC | #3
Sorry, I'm still learning the kernel patch communication rules.
Thank you for guiding me here.

On Thu, Apr 27, 2023 at 2:43 AM Köry Maincent <kory.maincent@bootlin.com> wrote:
>
> On Wed, 26 Apr 2023 22:00:43 -0600
> Max Georgiev <glipus@gmail.com> wrote:
>
> >
> > Thank you for giving it a try!
> > I'll drop the RFC tag starting from the next iteration.
>
> Sorry I didn't know the net-next submission rules. In fact keep the RFC tag
> until net-next open again.
> http://vger.kernel.org/~davem/net-next.html
>
> Your patch series don't appear in the cover letter thread:
> https://lore.kernel.org/all/20230423032437.285014-1-glipus@gmail.com/
> I don't know if it comes from your e-mail or just some issue from lore but could
> you check it?

Could you please elaborate what's missing in the cover letter?
Should the cover letter contain the latest version of the patch
stack (v4, then v5, etc.) and some description of the differences
between the patch versions?
Let me look up some written guidance on this.

>
> Please add "net:" prefix to your patches commit title when changing the net
> core, "macvlan:" prefix for macvlan driver change, etc ...

Will certainly add tem.

>
> Also I see you forgot "net-next" to the subject prefix in this iteration please
> don't in next one.

My bad, will add it back.

>
> Thanks for your work!
Kory Maincent April 28, 2023, 8:11 a.m. UTC | #4
On Thu, 27 Apr 2023 22:57:27 -0600
Max Georgiev <glipus@gmail.com> wrote:

> Sorry, I'm still learning the kernel patch communication rules.
> Thank you for guiding me here.

Also, each Linux merging subtree can have its own rules.
I also, was not aware of net special merging rules:
https://www.kernel.org/doc/html/latest/process/maintainer-netdev.html


> On Thu, Apr 27, 2023 at 2:43 AM Köry Maincent <kory.maincent@bootlin.com>
> wrote:
> >
> > On Wed, 26 Apr 2023 22:00:43 -0600
> > Max Georgiev <glipus@gmail.com> wrote:
> >  
> > >
> > > Thank you for giving it a try!
> > > I'll drop the RFC tag starting from the next iteration.  
> >
> > Sorry I didn't know the net-next submission rules. In fact keep the RFC tag
> > until net-next open again.
> > http://vger.kernel.org/~davem/net-next.html
> >
> > Your patch series don't appear in the cover letter thread:
> > https://lore.kernel.org/all/20230423032437.285014-1-glipus@gmail.com/
> > I don't know if it comes from your e-mail or just some issue from lore but
> > could you check it?  
> 
> Could you please elaborate what's missing in the cover letter?
> Should the cover letter contain the latest version of the patch
> stack (v4, then v5, etc.) and some description of the differences
> between the patch versions?
> Let me look up some written guidance on this.

I don't know how you send your patch series but when you look on your e-mail
thread the patches are not present:
https://lore.kernel.org/all/20230423032437.285014-1-glipus@gmail.com/

It is way easier to find your patches when you have all the patches of the
series in the e-mail thread.

Here for example they are in the thread:
https://lore.kernel.org/all/20230406173308.401924-1-kory.maincent@bootlin.com/

Do you use git send-email?
Max Georgiev April 28, 2023, 2:14 p.m. UTC | #5
On Fri, Apr 28, 2023 at 2:11 AM Köry Maincent <kory.maincent@bootlin.com> wrote:
>
> On Thu, 27 Apr 2023 22:57:27 -0600
> Max Georgiev <glipus@gmail.com> wrote:
>
> > Sorry, I'm still learning the kernel patch communication rules.
> > Thank you for guiding me here.
>
> Also, each Linux merging subtree can have its own rules.
> I also, was not aware of net special merging rules:
> https://www.kernel.org/doc/html/latest/process/maintainer-netdev.html
>
>
> > On Thu, Apr 27, 2023 at 2:43 AM Köry Maincent <kory.maincent@bootlin.com>
> > wrote:
> > >
> > > On Wed, 26 Apr 2023 22:00:43 -0600
> > > Max Georgiev <glipus@gmail.com> wrote:
> > >
> > > >
> > > > Thank you for giving it a try!
> > > > I'll drop the RFC tag starting from the next iteration.
> > >
> > > Sorry I didn't know the net-next submission rules. In fact keep the RFC tag
> > > until net-next open again.
> > > http://vger.kernel.org/~davem/net-next.html
> > >
> > > Your patch series don't appear in the cover letter thread:
> > > https://lore.kernel.org/all/20230423032437.285014-1-glipus@gmail.com/
> > > I don't know if it comes from your e-mail or just some issue from lore but
> > > could you check it?
> >
> > Could you please elaborate what's missing in the cover letter?
> > Should the cover letter contain the latest version of the patch
> > stack (v4, then v5, etc.) and some description of the differences
> > between the patch versions?
> > Let me look up some written guidance on this.
>
> I don't know how you send your patch series but when you look on your e-mail
> thread the patches are not present:
> https://lore.kernel.org/all/20230423032437.285014-1-glipus@gmail.com/
>
> It is way easier to find your patches when you have all the patches of the
> series in the e-mail thread.
>

Aha, I see the problem now. I guess it has something to do with "--in-reply-to"
git send-email optio or similar options.

> Here for example they are in the thread:
> https://lore.kernel.org/all/20230406173308.401924-1-kory.maincent@bootlin.com/
>
> Do you use git send-email?

Yes, I use "git format-patch" to generate individual patch files for
every patch in the
stack, and then I use "git send-email" to send out these patches on-by-one.

Is there a recommended way to send out stacks of patches?
Kory Maincent April 28, 2023, 2:34 p.m. UTC | #6
On Fri, 28 Apr 2023 08:14:57 -0600
Max Georgiev <glipus@gmail.com> wrote:

> > Do you use git send-email?  
> 
> Yes, I use "git format-patch" to generate individual patch files for
> every patch in the
> stack, and then I use "git send-email" to send out these patches on-by-one.

I think here is the issue. Send your patch series in one "git send-email" go
not one-by-one.
Vadim Fedorenko April 29, 2023, 7:44 p.m. UTC | #7
On 28.04.2023 15:14, Max Georgiev wrote:
> On Fri, Apr 28, 2023 at 2:11 AM Köry Maincent <kory.maincent@bootlin.com> wrote:
>>
>> On Thu, 27 Apr 2023 22:57:27 -0600
>> Max Georgiev <glipus@gmail.com> wrote:
>>
>>> Sorry, I'm still learning the kernel patch communication rules.
>>> Thank you for guiding me here.
>>
>> Also, each Linux merging subtree can have its own rules.
>> I also, was not aware of net special merging rules:
>> https://www.kernel.org/doc/html/latest/process/maintainer-netdev.html
>>
>>
>>> On Thu, Apr 27, 2023 at 2:43 AM Köry Maincent <kory.maincent@bootlin.com>
>>> wrote:
>>>>
>>>> On Wed, 26 Apr 2023 22:00:43 -0600
>>>> Max Georgiev <glipus@gmail.com> wrote:
>>>>
>>>>>
>>>>> Thank you for giving it a try!
>>>>> I'll drop the RFC tag starting from the next iteration.
>>>>
>>>> Sorry I didn't know the net-next submission rules. In fact keep the RFC tag
>>>> until net-next open again.
>>>> http://vger.kernel.org/~davem/net-next.html
>>>>
>>>> Your patch series don't appear in the cover letter thread:
>>>> https://lore.kernel.org/all/20230423032437.285014-1-glipus@gmail.com/
>>>> I don't know if it comes from your e-mail or just some issue from lore but
>>>> could you check it?
>>>
>>> Could you please elaborate what's missing in the cover letter?
>>> Should the cover letter contain the latest version of the patch
>>> stack (v4, then v5, etc.) and some description of the differences
>>> between the patch versions?
>>> Let me look up some written guidance on this.
>>
>> I don't know how you send your patch series but when you look on your e-mail
>> thread the patches are not present:
>> https://lore.kernel.org/all/20230423032437.285014-1-glipus@gmail.com/
>>
>> It is way easier to find your patches when you have all the patches of the
>> series in the e-mail thread.
>>
> 
> Aha, I see the problem now. I guess it has something to do with "--in-reply-to"
> git send-email optio or similar options.
> 
>> Here for example they are in the thread:
>> https://lore.kernel.org/all/20230406173308.401924-1-kory.maincent@bootlin.com/
>>
>> Do you use git send-email?
> 
> Yes, I use "git format-patch" to generate individual patch files for
> every patch in the
> stack, and then I use "git send-email" to send out these patches on-by-one.
>

The problem is, as Köry has mentioned already, in sending patches one-by-one. 
You can provide a directory with patches to git send-email and it will take all 
of them at once. You can try it with --dry-run and check that all pacthes have 
the same In-Reply-To and References headers.

> Is there a recommended way to send out stacks of patches?
Max Georgiev May 2, 2023, 4:35 a.m. UTC | #8
On Sat, Apr 29, 2023 at 1:45 PM Vadim Fedorenko
<vadim.fedorenko@linux.dev> wrote:
>
> On 28.04.2023 15:14, Max Georgiev wrote:
> > On Fri, Apr 28, 2023 at 2:11 AM Köry Maincent <kory.maincent@bootlin.com> wrote:
> >>
> >> On Thu, 27 Apr 2023 22:57:27 -0600
> >> Max Georgiev <glipus@gmail.com> wrote:
> >>
> >>> Sorry, I'm still learning the kernel patch communication rules.
> >>> Thank you for guiding me here.
> >>
> >> Also, each Linux merging subtree can have its own rules.
> >> I also, was not aware of net special merging rules:
> >> https://www.kernel.org/doc/html/latest/process/maintainer-netdev.html
> >>
> >>
> >>> On Thu, Apr 27, 2023 at 2:43 AM Köry Maincent <kory.maincent@bootlin.com>
> >>> wrote:
> >>>>
> >>>> On Wed, 26 Apr 2023 22:00:43 -0600
> >>>> Max Georgiev <glipus@gmail.com> wrote:
> >>>>
> >>>>>
> >>>>> Thank you for giving it a try!
> >>>>> I'll drop the RFC tag starting from the next iteration.
> >>>>
> >>>> Sorry I didn't know the net-next submission rules. In fact keep the RFC tag
> >>>> until net-next open again.
> >>>> http://vger.kernel.org/~davem/net-next.html
> >>>>
> >>>> Your patch series don't appear in the cover letter thread:
> >>>> https://lore.kernel.org/all/20230423032437.285014-1-glipus@gmail.com/
> >>>> I don't know if it comes from your e-mail or just some issue from lore but
> >>>> could you check it?
> >>>
> >>> Could you please elaborate what's missing in the cover letter?
> >>> Should the cover letter contain the latest version of the patch
> >>> stack (v4, then v5, etc.) and some description of the differences
> >>> between the patch versions?
> >>> Let me look up some written guidance on this.
> >>
> >> I don't know how you send your patch series but when you look on your e-mail
> >> thread the patches are not present:
> >> https://lore.kernel.org/all/20230423032437.285014-1-glipus@gmail.com/
> >>
> >> It is way easier to find your patches when you have all the patches of the
> >> series in the e-mail thread.
> >>
> >
> > Aha, I see the problem now. I guess it has something to do with "--in-reply-to"
> > git send-email optio or similar options.
> >
> >> Here for example they are in the thread:
> >> https://lore.kernel.org/all/20230406173308.401924-1-kory.maincent@bootlin.com/
> >>
> >> Do you use git send-email?
> >
> > Yes, I use "git format-patch" to generate individual patch files for
> > every patch in the
> > stack, and then I use "git send-email" to send out these patches on-by-one.
> >
>
> The problem is, as Köry has mentioned already, in sending patches one-by-one.
> You can provide a directory with patches to git send-email and it will take all
> of them at once. You can try it with --dry-run and check that all pacthes have
> the same In-Reply-To and References headers.

So the best practice for sending patch stacks is to run "git
send-email ..." against
a folder containing the freshly generated patch files!
Thank you for the guidance!

>
> > Is there a recommended way to send out stacks of patches?
>
Max Georgiev May 2, 2023, 4:44 a.m. UTC | #9
On Mon, May 1, 2023 at 10:35 PM Max Georgiev <glipus@gmail.com> wrote:
>
> On Sat, Apr 29, 2023 at 1:45 PM Vadim Fedorenko
> <vadim.fedorenko@linux.dev> wrote:
> >
> > On 28.04.2023 15:14, Max Georgiev wrote:
> > > On Fri, Apr 28, 2023 at 2:11 AM Köry Maincent <kory.maincent@bootlin.com> wrote:
> > >>
> > >> On Thu, 27 Apr 2023 22:57:27 -0600
> > >> Max Georgiev <glipus@gmail.com> wrote:
> > >>
> > >>> Sorry, I'm still learning the kernel patch communication rules.
> > >>> Thank you for guiding me here.
> > >>
> > >> Also, each Linux merging subtree can have its own rules.
> > >> I also, was not aware of net special merging rules:
> > >> https://www.kernel.org/doc/html/latest/process/maintainer-netdev.html
> > >>
> > >>
> > >>> On Thu, Apr 27, 2023 at 2:43 AM Köry Maincent <kory.maincent@bootlin.com>
> > >>> wrote:
> > >>>>
> > >>>> On Wed, 26 Apr 2023 22:00:43 -0600
> > >>>> Max Georgiev <glipus@gmail.com> wrote:
> > >>>>
> > >>>>>
> > >>>>> Thank you for giving it a try!
> > >>>>> I'll drop the RFC tag starting from the next iteration.
> > >>>>
> > >>>> Sorry I didn't know the net-next submission rules. In fact keep the RFC tag
> > >>>> until net-next open again.
> > >>>> http://vger.kernel.org/~davem/net-next.html
> > >>>>
> > >>>> Your patch series don't appear in the cover letter thread:
> > >>>> https://lore.kernel.org/all/20230423032437.285014-1-glipus@gmail.com/
> > >>>> I don't know if it comes from your e-mail or just some issue from lore but
> > >>>> could you check it?
> > >>>
> > >>> Could you please elaborate what's missing in the cover letter?
> > >>> Should the cover letter contain the latest version of the patch
> > >>> stack (v4, then v5, etc.) and some description of the differences
> > >>> between the patch versions?
> > >>> Let me look up some written guidance on this.
> > >>
> > >> I don't know how you send your patch series but when you look on your e-mail
> > >> thread the patches are not present:
> > >> https://lore.kernel.org/all/20230423032437.285014-1-glipus@gmail.com/
> > >>
> > >> It is way easier to find your patches when you have all the patches of the
> > >> series in the e-mail thread.
> > >>
> > >
> > > Aha, I see the problem now. I guess it has something to do with "--in-reply-to"
> > > git send-email optio or similar options.
> > >
> > >> Here for example they are in the thread:
> > >> https://lore.kernel.org/all/20230406173308.401924-1-kory.maincent@bootlin.com/
> > >>
> > >> Do you use git send-email?
> > >
> > > Yes, I use "git format-patch" to generate individual patch files for
> > > every patch in the
> > > stack, and then I use "git send-email" to send out these patches on-by-one.
> > >
> >
> > The problem is, as Köry has mentioned already, in sending patches one-by-one.
> > You can provide a directory with patches to git send-email and it will take all
> > of them at once. You can try it with --dry-run and check that all pacthes have
> > the same In-Reply-To and References headers.
>
> So the best practice for sending patch stacks is to run "git
> send-email ..." against
> a folder containing the freshly generated patch files!
> Thank you for the guidance!
>
> >
> > > Is there a recommended way to send out stacks of patches?
> >

Is it better this time?
https://lore.kernel.org/netdev/20230502043150.17097-1-glipus@gmail.com/
Kory Maincent May 2, 2023, 9:13 a.m. UTC | #10
On Mon, 1 May 2023 22:44:22 -0600
Max Georgiev <glipus@gmail.com> wrote:
 
> Is it better this time?
> https://lore.kernel.org/netdev/20230502043150.17097-1-glipus@gmail.com/

Yes it is, thanks!
diff mbox

Patch

diff --git a/drivers/net/ethernet/cadence/macb.h b/drivers/net/ethernet/cadence/macb.h
index cfbdd0022764..bc73b080093e 100644
--- a/drivers/net/ethernet/cadence/macb.h
+++ b/drivers/net/ethernet/cadence/macb.h
@@ -1350,8 +1350,14 @@  static inline void gem_ptp_do_rxstamp(struct macb *bp, struct sk_buff *skb, stru
 
 	gem_ptp_rxstamp(bp, skb, desc);
 }
-int gem_get_hwtst(struct net_device *dev, struct ifreq *rq);
-int gem_set_hwtst(struct net_device *dev, struct ifreq *ifr, int cmd);
+
+int gem_get_hwtst(struct net_device *dev,
+		  struct kernel_hwtstamp_config *kernel_config,
+		  struct netlink_ext_ack *extack);
+int gem_set_hwtst(struct net_device *dev,
+		  struct kernel_hwtstamp_config *kernel_config,
+		  struct netlink_ext_ack *extack);
+
 #else
 static inline void gem_ptp_init(struct net_device *ndev) { }
 static inline void gem_ptp_remove(struct net_device *ndev) { }
diff --git a/drivers/net/ethernet/cadence/macb_main.c b/drivers/net/ethernet/cadence/macb_main.c
index 45f63df5bdc4..c1d65be88835 100644
--- a/drivers/net/ethernet/cadence/macb_main.c
+++ b/drivers/net/ethernet/cadence/macb_main.c
@@ -3402,8 +3402,6 @@  static struct macb_ptp_info gem_ptp_info = {
 	.get_ptp_max_adj = gem_get_ptp_max_adj,
 	.get_tsu_rate	 = gem_get_tsu_rate,
 	.get_ts_info	 = gem_get_ts_info,
-	.get_hwtst	 = gem_get_hwtst,
-	.set_hwtst	 = gem_set_hwtst,
 };
 #endif
 
@@ -3764,15 +3762,6 @@  static int macb_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
 	if (!netif_running(dev))
 		return -EINVAL;
 
-	if (!phy_has_hwtstamp(dev->phydev) && bp->ptp_info) {
-		switch (cmd) {
-		case SIOCSHWTSTAMP:
-			return bp->ptp_info->set_hwtst(dev, rq, cmd);
-		case SIOCGHWTSTAMP:
-			return bp->ptp_info->get_hwtst(dev, rq);
-		}
-	}
-
 	return phylink_mii_ioctl(bp->phylink, rq, cmd);
 }
 
@@ -3875,6 +3864,10 @@  static const struct net_device_ops macb_netdev_ops = {
 #endif
 	.ndo_set_features	= macb_set_features,
 	.ndo_features_check	= macb_features_check,
+#ifdef CONFIG_MACB_USE_HWSTAMP
+	.ndo_hwtstamp_get	= gem_get_hwtst,
+	.ndo_hwtstamp_set	= gem_set_hwtst,
+#endif
 };
 
 /* Configure peripheral capabilities according to device tree
diff --git a/drivers/net/ethernet/cadence/macb_ptp.c b/drivers/net/ethernet/cadence/macb_ptp.c
index 51d26fa190d7..eddacc5df435 100644
--- a/drivers/net/ethernet/cadence/macb_ptp.c
+++ b/drivers/net/ethernet/cadence/macb_ptp.c
@@ -374,19 +374,22 @@  static int gem_ptp_set_ts_mode(struct macb *bp,
 	return 0;
 }
 
-int gem_get_hwtst(struct net_device *dev, struct ifreq *rq)
+int gem_get_hwtst(struct net_device *dev,
+		  struct kernel_hwtstamp_config *kernel_config,
+		  struct netlink_ext_ack *extack)
 {
 	struct hwtstamp_config *tstamp_config;
 	struct macb *bp = netdev_priv(dev);
 
+	if (phy_has_hwtstamp(dev->phydev))
+		return phylink_mii_ioctl(bp->phylink, kernel_config->ifr, SIOCGHWTSTAMP);
+
 	tstamp_config = &bp->tstamp_config;
 	if ((bp->hw_dma_cap & HW_DMA_CAP_PTP) == 0)
 		return -EOPNOTSUPP;
 
-	if (copy_to_user(rq->ifr_data, tstamp_config, sizeof(*tstamp_config)))
-		return -EFAULT;
-	else
-		return 0;
+	hwtstamp_config_to_kernel(kernel_config, tstamp_config);
+	return 0;
 }
 
 static void gem_ptp_set_one_step_sync(struct macb *bp, u8 enable)
@@ -401,7 +404,9 @@  static void gem_ptp_set_one_step_sync(struct macb *bp, u8 enable)
 		macb_writel(bp, NCR, reg_val & ~MACB_BIT(OSSMODE));
 }
 
-int gem_set_hwtst(struct net_device *dev, struct ifreq *ifr, int cmd)
+int gem_set_hwtst(struct net_device *dev,
+		  struct kernel_hwtstamp_config *kernel_config,
+		  struct netlink_ext_ack *extack)
 {
 	enum macb_bd_control tx_bd_control = TSTAMP_DISABLED;
 	enum macb_bd_control rx_bd_control = TSTAMP_DISABLED;
@@ -409,13 +414,14 @@  int gem_set_hwtst(struct net_device *dev, struct ifreq *ifr, int cmd)
 	struct macb *bp = netdev_priv(dev);
 	u32 regval;
 
+	if (phy_has_hwtstamp(dev->phydev))
+		return phylink_mii_ioctl(bp->phylink, kernel_config->ifr, SIOCSHWTSTAMP);
+
 	tstamp_config = &bp->tstamp_config;
 	if ((bp->hw_dma_cap & HW_DMA_CAP_PTP) == 0)
 		return -EOPNOTSUPP;
 
-	if (copy_from_user(tstamp_config, ifr->ifr_data,
-			   sizeof(*tstamp_config)))
-		return -EFAULT;
+	hwtstamp_config_from_kernel(tstamp_config, kernel_config);
 
 	switch (tstamp_config->tx_type) {
 	case HWTSTAMP_TX_OFF:
@@ -466,9 +472,7 @@  int gem_set_hwtst(struct net_device *dev, struct ifreq *ifr, int cmd)
 	if (gem_ptp_set_ts_mode(bp, tx_bd_control, rx_bd_control) != 0)
 		return -ERANGE;
 
-	if (copy_to_user(ifr->ifr_data, tstamp_config, sizeof(*tstamp_config)))
-		return -EFAULT;
-	else
-		return 0;
+	hwtstamp_config_to_kernel(kernel_config, tstamp_config);
+	return 0;
 }