Lines Matching refs:entry
39 /* The instant that this entry "closes" and the next one
119 struct sched_entry *entry, *n;
124 list_for_each_entry_safe(entry, n, &sched->entries, list) {
125 list_del(&entry->list);
126 kfree(entry);
160 struct sched_entry *entry,
167 intv_end = ktime_add_ns(intv_start, entry->interval);
185 /* Returns the entry corresponding to next available interval. If
200 struct sched_entry *entry = NULL, *entry_found = NULL;
221 list_for_each_entry(entry, &sched->entries, list) {
223 curr_intv_end = get_interval_end_time(sched, admin, entry,
229 if (!(entry->gate_mask & BIT(tc)) ||
230 packet_transmit_time > entry->interval)
233 txtime = entry->next_txtime;
240 entry_found = entry;
249 entry_found = entry;
256 entry_found = entry;
271 struct sched_entry *entry;
277 entry = find_entry_to_transmit(skb, sch, sched, admin, skb->tstamp,
281 return entry;
354 struct sched_entry *entry;
381 entry = find_entry_to_transmit(skb, sch, sched, admin,
385 if (!entry) {
390 txtime = entry->next_txtime;
404 /* Update the txtime of current entry to the next time it's
408 entry->next_txtime = ktime_add(interval_start, sched->cycle_time);
411 entry->next_txtime = transmit_end_time;
451 struct sched_entry *entry;
457 entry = rcu_dereference(q->current_entry);
458 gate_mask = entry ? entry->gate_mask : TAPRIO_ALL_GATES_OPEN;
521 static void taprio_set_budget(struct taprio_sched *q, struct sched_entry *entry)
523 atomic_set(&entry->budget,
524 div64_u64((u64)entry->interval * 1000,
533 struct sched_entry *entry;
538 entry = rcu_dereference(q->current_entry);
539 /* if there's no entry, it means that the schedule didn't
544 gate_mask = entry ? entry->gate_mask : TAPRIO_ALL_GATES_OPEN;
582 /* In the case that there's no gate entry, there's no
586 ktime_after(guard, entry->close_time)) {
593 atomic_sub_return(len, &entry->budget) < 0) {
651 const struct sched_entry *entry)
653 if (list_is_last(&entry->list, &oper->entries))
656 if (ktime_compare(entry->close_time, oper->cycle_close_time) == 0)
701 struct sched_entry *entry, *next;
706 entry = rcu_dereference_protected(q->current_entry,
719 * entry of all schedules are pre-calculated during the
722 if (unlikely(!entry || entry->close_time == oper->base_time)) {
729 if (should_restart_cycle(oper, entry)) {
735 next = list_next_entry(entry, list);
738 close_time = ktime_add_ns(entry->close_time, next->interval);
787 struct sched_entry *entry,
794 entry->command = nla_get_u8(
798 entry->gate_mask = nla_get_u32(
809 NL_SET_ERR_MSG(extack, "Invalid interval for schedule entry");
813 entry->interval = interval;
819 struct sched_entry *entry, int index,
828 NL_SET_ERR_MSG(extack, "Could not parse nested entry");
832 entry->index = index;
834 return fill_sched_entry(q, tb, entry, extack);
849 struct sched_entry *entry;
852 NL_SET_ERR_MSG(extack, "Attribute is not of type 'entry'");
856 entry = kzalloc(sizeof(*entry), GFP_KERNEL);
857 if (!entry) {
858 NL_SET_ERR_MSG(extack, "Not enough memory for entry");
862 err = parse_sched_entry(q, n, entry, i, extack);
864 kfree(entry);
868 list_add_tail(&entry->list, &sched->entries);
884 NL_SET_ERR_MSG(extack, "Adding a single entry is not supported");
904 struct sched_entry *entry;
907 list_for_each_entry(entry, &new->entries, list)
908 cycle = ktime_add_ns(cycle, entry->interval);
1006 * any entry must have 'interval' > 0. Thus if the cycle time is zero,
1118 struct sched_entry *entry;
1121 list_for_each_entry(entry, &sched->entries, list) {
1122 entry->next_txtime = ktime_add_ns(base, interval);
1123 interval += entry->interval;
1220 struct sched_entry *entry;
1227 list_for_each_entry(entry, &sched->entries, list) {
1230 e->command = entry->command;
1231 e->interval = entry->interval;
1232 e->gate_mask = tc_map_to_queue_mask(dev, entry->gate_mask);
1503 NL_SET_ERR_MSG(extack, "There should be at least one entry in the schedule");
1772 const struct sched_entry *entry)
1780 if (nla_put_u32(msg, TCA_TAPRIO_SCHED_ENTRY_INDEX, entry->index))
1783 if (nla_put_u8(msg, TCA_TAPRIO_SCHED_ENTRY_CMD, entry->command))
1787 entry->gate_mask))
1791 entry->interval))
1805 struct sched_entry *entry;
1824 list_for_each_entry(entry, &root->entries, list) {
1825 if (dump_entry(msg, entry) < 0)