taprio: add support for setting txtime_delay.
This adds support for setting the txtime_delay parameter which is useful for the txtime offload mode of taprio. Signed-off-by: Vedang Patel <vedang.patel@intel.com> Signed-off-by: David Ahern <dsahern@gmail.com>
This commit is contained in:
parent
ee000bf217
commit
a5e6ee3b34
|
|
@ -52,7 +52,7 @@ static void explain(void)
|
||||||
" [num_tc NUMBER] [map P0 P1 ...] "
|
" [num_tc NUMBER] [map P0 P1 ...] "
|
||||||
" [queues COUNT@OFFSET COUNT@OFFSET COUNT@OFFSET ...] "
|
" [queues COUNT@OFFSET COUNT@OFFSET COUNT@OFFSET ...] "
|
||||||
" [ [sched-entry index cmd gate-mask interval] ... ] "
|
" [ [sched-entry index cmd gate-mask interval] ... ] "
|
||||||
" [base-time time] "
|
" [base-time time] [txtime-delay delay]"
|
||||||
"\n"
|
"\n"
|
||||||
"CLOCKID must be a valid SYS-V id (i.e. CLOCK_TAI)\n");
|
"CLOCKID must be a valid SYS-V id (i.e. CLOCK_TAI)\n");
|
||||||
}
|
}
|
||||||
|
|
@ -160,6 +160,7 @@ static int taprio_parse_opt(struct qdisc_util *qu, int argc,
|
||||||
struct list_head sched_entries;
|
struct list_head sched_entries;
|
||||||
struct rtattr *tail, *l;
|
struct rtattr *tail, *l;
|
||||||
__u32 taprio_flags = 0;
|
__u32 taprio_flags = 0;
|
||||||
|
__u32 txtime_delay = 0;
|
||||||
__s64 cycle_time = 0;
|
__s64 cycle_time = 0;
|
||||||
__s64 base_time = 0;
|
__s64 base_time = 0;
|
||||||
int err, idx;
|
int err, idx;
|
||||||
|
|
@ -293,6 +294,17 @@ static int taprio_parse_opt(struct qdisc_util *qu, int argc,
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} else if (strcmp(*argv, "txtime-delay") == 0) {
|
||||||
|
NEXT_ARG();
|
||||||
|
if (txtime_delay != 0) {
|
||||||
|
fprintf(stderr, "taprio: duplicate \"txtime-delay\" specification\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
if (get_u32(&txtime_delay, *argv, 0)) {
|
||||||
|
PREV_ARG();
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
} else if (strcmp(*argv, "help") == 0) {
|
} else if (strcmp(*argv, "help") == 0) {
|
||||||
explain();
|
explain();
|
||||||
return -1;
|
return -1;
|
||||||
|
|
@ -315,6 +327,9 @@ static int taprio_parse_opt(struct qdisc_util *qu, int argc,
|
||||||
if (opt.num_tc > 0)
|
if (opt.num_tc > 0)
|
||||||
addattr_l(n, 1024, TCA_TAPRIO_ATTR_PRIOMAP, &opt, sizeof(opt));
|
addattr_l(n, 1024, TCA_TAPRIO_ATTR_PRIOMAP, &opt, sizeof(opt));
|
||||||
|
|
||||||
|
if (txtime_delay)
|
||||||
|
addattr_l(n, 1024, TCA_TAPRIO_ATTR_TXTIME_DELAY, &txtime_delay, sizeof(txtime_delay));
|
||||||
|
|
||||||
if (base_time)
|
if (base_time)
|
||||||
addattr_l(n, 1024, TCA_TAPRIO_ATTR_SCHED_BASE_TIME, &base_time, sizeof(base_time));
|
addattr_l(n, 1024, TCA_TAPRIO_ATTR_SCHED_BASE_TIME, &base_time, sizeof(base_time));
|
||||||
|
|
||||||
|
|
@ -464,6 +479,13 @@ static int taprio_print_opt(struct qdisc_util *qu, FILE *f, struct rtattr *opt)
|
||||||
print_0xhex(PRINT_ANY, "flags", " flags %#x", flags);
|
print_0xhex(PRINT_ANY, "flags", " flags %#x", flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (tb[TCA_TAPRIO_ATTR_TXTIME_DELAY]) {
|
||||||
|
__u32 txtime_delay;
|
||||||
|
|
||||||
|
txtime_delay = rta_getattr_s32(tb[TCA_TAPRIO_ATTR_TXTIME_DELAY]);
|
||||||
|
print_uint(PRINT_ANY, "txtime_delay", " txtime delay %d", txtime_delay);
|
||||||
|
}
|
||||||
|
|
||||||
print_schedule(f, tb);
|
print_schedule(f, tb);
|
||||||
|
|
||||||
if (tb[TCA_TAPRIO_ATTR_ADMIN_SCHED]) {
|
if (tb[TCA_TAPRIO_ATTR_ADMIN_SCHED]) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue