[PATCH v2 net 0/7] qbv cycle time extension/truncation

From: Faizal Rahim
Date: Tue Nov 07 2023 - 06:22:00 EST


According to IEEE Std. 802.1Q-2018 section Q.5 CycleTimeExtension,
the Cycle Time Extension variable allows this extension of the last old
cycle to be done in a defined way. If the last complete old cycle would
normally end less than OperCycleTimeExtension nanoseconds before the new
base time, then the last complete cycle before AdminBaseTime is reached
is extended so that it ends at AdminBaseTime.

Changes in v2:

- Added 's64 cycle_time_correction' in 'sched_gate_list struct'.
- Removed sched_changed created in v1 since the new cycle_time_correction
field can also serve to indicate the need for a schedule change.
- Added 'bool correction_active' in 'struct sched_entry' to represent
the correction state from the entry's perspective and return corrected
interval value when active.
- Fix cycle time correction logics for the next entry in advance_sched()
- Fix and implement proper cycle time correction logics for current
entry in taprio_start_sched()

v1 at:
https://lore.kernel.org/lkml/20230530082541.495-1-muhammad.husaini.zulkifli@xxxxxxxxx/

Faizal Rahim (7):
net/sched: taprio: fix too early schedules switching
net/sched: taprio: fix cycle time adjustment for next entry
net/sched: taprio: update impacted fields during cycle time adjustment
net/sched: taprio: get corrected value of cycle_time and interval
net/sched: taprio: fix delayed switching to new schedule after timer
expiry
net/sched: taprio: fix q->current_entry is NULL before its expiry
net/sched: taprio: enable cycle time adjustment for current entry

net/sched/sch_taprio.c | 263 ++++++++++++++++++++++++++++++++---------
1 file changed, 209 insertions(+), 54 deletions(-)

--
2.25.1