Re: [PATCH net] net: lan966x: Fix the initialization of taprio

From: Eric Dumazet

Date: Wed Nov 19 2025 - 03:51:30 EST


On Wed, Nov 19, 2025 at 12:26 AM Horatiu Vultur
<horatiu.vultur@xxxxxxxxxxxxx> wrote:
>
> The 11/18/2025 20:20, Andrew Lunn wrote:
>
> Hi Andrew,
>
> >
> > On Mon, Nov 17, 2025 at 03:43:09PM +0100, Horatiu Vultur wrote:
> > > To initialize the taprio block in lan966x, it is required to configure
> > > the register REVISIT_DLY. The purpose of this register is to set the
> > > delay before revisit the next gate and the value of this register depends
> > > on the system clock. The problem is that the we calculated wrong the value
> > > of the system clock period in picoseconds. The actual system clock is
> > > ~165.617754MHZ and this correspond to a period of 6038 pico seconds and
> > > not 15125 as currently set.
> >
> > Is the system clock available as a linux clock? Can you do a
> > clk_get_rate() on it?
>
> Unfortunetly, I can not do clk_get_rate because in the device tree for the
> switch node I don't have any clocks property. And maybe that is the
> problem because I have the system clock (sys_clk) in the lan966x.dtsi
> file. But if I go this way then I need add a bigger changeset and add
> it to multiple kernel trees which complicate the things.
> So maybe I should not change this patch and then create another one
> targeting net-next where I can start using clk_get_rate()

Or define a clock rate

#define LAN9X66_CLOCK_RATE 165617754

then use

return PICO / LAN9X66_CLOCK_RATE;

This would look less random....