Lines Matching defs:table
62 static inline int gred_wred_mode(struct gred_sched *table)
64 return test_bit(GRED_WRED_MODE, &table->flags);
67 static inline void gred_enable_wred_mode(struct gred_sched *table)
69 __set_bit(GRED_WRED_MODE, &table->flags);
72 static inline void gred_disable_wred_mode(struct gred_sched *table)
74 __clear_bit(GRED_WRED_MODE, &table->flags);
77 static inline int gred_rio_mode(struct gred_sched *table)
79 return test_bit(GRED_RIO_MODE, &table->flags);
82 static inline void gred_enable_rio_mode(struct gred_sched *table)
84 __set_bit(GRED_RIO_MODE, &table->flags);
87 static inline void gred_disable_rio_mode(struct gred_sched *table)
89 __clear_bit(GRED_RIO_MODE, &table->flags);
94 struct gred_sched *table = qdisc_priv(sch);
98 for (i = 0; i < table->DPs; i++) {
99 struct gred_sched_data *q = table->tab[i];
105 for (n = i + 1; n < table->DPs; n++)
106 if (table->tab[n] && table->tab[n]->prio == q->prio)
113 static inline unsigned int gred_backlog(struct gred_sched *table,
117 if (gred_wred_mode(table))
128 static inline void gred_load_wred_set(const struct gred_sched *table,
131 q->vars.qavg = table->wred_set.qavg;
132 q->vars.qidlestart = table->wred_set.qidlestart;
135 static inline void gred_store_wred_set(struct gred_sched *table,
138 table->wred_set.qavg = q->vars.qavg;
139 table->wred_set.qidlestart = q->vars.qidlestart;
152 static bool gred_per_vq_red_flags_used(struct gred_sched *table)
157 if (table->red_flags)
160 if (table->tab[i] && table->tab[i]->red_flags)
313 struct gred_sched *table = qdisc_priv(sch);
315 struct tc_gred_qopt_offload *opt = table->opt;
328 opt->set.grio_on = gred_rio_mode(table);
329 opt->set.wred_on = gred_wred_mode(table);
330 opt->set.dp_cnt = table->DPs;
331 opt->set.dp_def = table->def;
333 for (i = 0; i < table->DPs; i++) {
334 struct gred_sched_data *q = table->tab[i];
356 struct gred_sched *table = qdisc_priv(sch);
372 if (table->tab[i])
373 hw_stats->stats.xstats[i] = &table->tab[i]->stats;
382 if (!table->tab[i])
384 table->tab[i]->packetsin += u64_stats_read(&hw_stats->stats.bstats[i].packets);
385 table->tab[i]->bytesin += u64_stats_read(&hw_stats->stats.bstats[i].bytes);
386 table->tab[i]->backlog += hw_stats->stats.qstats[i].backlog;
411 struct gred_sched *table = qdisc_priv(sch);
434 if (sopt->flags && gred_per_vq_red_flags_used(table)) {
440 table->DPs = sopt->DPs;
441 table->def = sopt->def_DP;
442 red_flags_changed = table->red_flags != sopt->flags;
443 table->red_flags = sopt->flags;
453 gred_enable_rio_mode(table);
454 gred_disable_wred_mode(table);
456 gred_enable_wred_mode(table);
458 gred_disable_rio_mode(table);
459 gred_disable_wred_mode(table);
463 for (i = 0; i < table->DPs; i++)
464 if (table->tab[i])
465 table->tab[i]->red_flags =
466 table->red_flags & GRED_VQ_RED_FLAGS;
468 for (i = table->DPs; i < MAX_DPs; i++) {
469 if (table->tab[i]) {
472 gred_destroy_vq(table->tab[i]);
473 table->tab[i] = NULL;
487 struct gred_sched *table = qdisc_priv(sch);
488 struct gred_sched_data *q = table->tab[dp];
496 table->tab[dp] = q = *prealloc;
500 q->red_flags = table->red_flags & GRED_VQ_RED_FLAGS;
538 static void gred_vq_apply(struct gred_sched *table, const struct nlattr *entry)
549 table->tab[dp]->red_flags = nla_get_u32(tb[TCA_GRED_VQ_FLAGS]);
552 static void gred_vqs_apply(struct gred_sched *table, struct nlattr *vqs)
560 gred_vq_apply(table, attr);
566 static int gred_vq_validate(struct gred_sched *table, u32 cdp,
584 if (dp >= table->DPs) {
588 if (dp != cdp && !table->tab[dp]) {
596 if (table->red_flags && table->red_flags != red_flags) {
610 static int gred_vqs_validate(struct gred_sched *table, u32 cdp,
624 err = gred_vq_validate(table, cdp, attr, extack);
645 struct gred_sched *table = qdisc_priv(sch);
676 if (ctl->DP >= table->DPs) {
682 err = gred_vqs_validate(table, ctl->DP, tb[TCA_GRED_VQ_LIST],
688 if (gred_rio_mode(table)) {
692 if (table->tab[table->def])
693 def_prio = table->tab[table->def]->prio;
712 gred_vqs_apply(table, tb[TCA_GRED_VQ_LIST]);
714 if (gred_rio_mode(table)) {
715 gred_disable_wred_mode(table);
717 gred_enable_wred_mode(table);
735 struct gred_sched *table = qdisc_priv(sch);
760 table->opt = kzalloc(sizeof(*table->opt), GFP_KERNEL);
761 if (!table->opt)
770 struct gred_sched *table = qdisc_priv(sch);
775 .DPs = table->DPs,
776 .def_DP = table->def,
777 .grio = gred_rio_mode(table),
778 .flags = table->red_flags,
791 struct gred_sched_data *q = table->tab[i];
807 struct gred_sched_data *q = table->tab[i];
824 opt.backlog = gred_backlog(table, q, sch);
837 if (gred_wred_mode(table))
838 gred_load_wred_set(table, q);
857 struct gred_sched_data *q = table->tab[i];
880 gred_backlog(table, q, sch)))
910 struct gred_sched *table = qdisc_priv(sch);
913 for (i = 0; i < table->DPs; i++)
914 gred_destroy_vq(table->tab[i]);
917 kfree(table->opt);