Messages in this thread Patch in this message | | | From | jianghaoran <> | Subject | [PATCH] taprio: Set the value of picos_per_byte before fill sched_entry | Date | Wed, 28 Sep 2022 14:58:30 +0800 |
| |
If the value of picos_per_byte is set after fill sched_entry, as a result, the min_duration calculated by length_to_duration is 0, and the validity of the input interval cannot be judged, too small intervals couldn't allow any packet to be transmitted. It will appear like commit b5b73b26b3ca ("taprio: Fix allowing too small intervals") described problem. Here is a further modification of this problem.
example:
tc qdisc replace dev enp5s0f0 parent root handle 100 taprio \ num_tc 3 \ map 2 2 1 0 2 2 2 2 2 2 2 2 2 2 2 2 \ queues 1@0 1@1 2@2 \ base-time 1528743495910289987 \ sched-entry S 01 9 \ sched-entry S 02 9 \ sched-entry S 04 9 \ clockid CLOCK_TAI
Signed-off-by: jianghaoran <jianghaoran@kylinos.cn> --- net/sched/sch_taprio.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/net/sched/sch_taprio.c b/net/sched/sch_taprio.c index 86675a79da1e..d95ec2250f24 100644 --- a/net/sched/sch_taprio.c +++ b/net/sched/sch_taprio.c @@ -1507,6 +1507,8 @@ static int taprio_change(struct Qdisc *sch, struct nlattr *opt, goto free_sched; } + taprio_set_picos_per_byte(dev, q); + err = parse_taprio_schedule(q, tb, new_admin, extack); if (err < 0) goto free_sched; @@ -1521,8 +1523,6 @@ static int taprio_change(struct Qdisc *sch, struct nlattr *opt, if (err < 0) goto free_sched; - taprio_set_picos_per_byte(dev, q); - if (mqprio) { err = netdev_set_num_tc(dev, mqprio->num_tc); if (err) -- 2.25.1
| |