Subject: Re: [PATCH v3 5/8] net: dsa: hellcreek: Add TAPRIO offloading support

From: Kurt Kanzenbach <[email-masked]>
Date: Tue, 25 Aug 2020 11:23:56 +0200

On Mon Aug 24 2020, Vinicius Costa Gomes wrote:
> Hi,
>
> Kurt Kanzenbach <[email-masked]> writes:
>
[snip]
>> +	/* Setup timer for schedule switch: The IP core only allows to set a
>> +	 * cycle start timer 8 seconds in the future. This is why we setup the
>> +	 * hritmer to base_time - 5 seconds. Then, we have enough time to
>> +	 * activate IP core's EST timer.
>> +	 */
>> +	start = ktime_sub_ns(schedule->base_time, (u64)5 * NSEC_PER_SEC);
>> +	hrtimer_start_range_ns(&hellcreek_port->cycle_start_timer, start,
>> +			       NSEC_PER_SEC, HRTIMER_MODE_ABS);
>
> If we are talking about seconds here, I don't think you need to use a
> hrtimer, you could use a workqueue/delayed_work. Should make things a
> bit simpler.

I've used hrtimers for one reason: The hrtimer provides a way to fire at
an absolute base time based on CLOCK_TAI. All the other facilities such
as workqueues, timer list timers, etc do not.

In the typical setup, we run ptp4l as boundary clock (or as TAB which is
work in progress) and phc2sys to synchronize the ptp clock to the Linux
system. Let's assume we setup a TAPRIO schedule with a base time X. Now,
the grand master time changes meaning the timer has to go off earlier or
later.

Thanks,
Kurt