Lines Matching +full:system +full:- +full:ctl
1 // SPDX-License-Identifier: GPL-2.0-or-later
11 * based fault-tolerance to ensure that the checkpoint from which a system
14 * Consider for e.g. Remus - a Virtual Machine checkpointing system,
47 * ------------------+--------------------+---------------->
51 * ----------------->|<--------+--------->|+--------------->
59 * a pass-through queue for newly arriving packets.
92 if (likely(sch->qstats.backlog + skb->len <= q->limit)) { in plug_enqueue()
93 if (!q->unplug_indefinite) in plug_enqueue()
94 q->pkts_current_epoch++; in plug_enqueue()
105 if (q->throttled) in plug_dequeue()
108 if (!q->unplug_indefinite) { in plug_dequeue()
109 if (!q->pkts_to_release) { in plug_dequeue()
113 q->throttled = true; in plug_dequeue()
116 q->pkts_to_release--; in plug_dequeue()
127 q->pkts_current_epoch = 0; in plug_init()
128 q->pkts_last_epoch = 0; in plug_init()
129 q->pkts_to_release = 0; in plug_init()
130 q->unplug_indefinite = false; in plug_init()
133 q->limit = qdisc_dev(sch)->tx_queue_len in plug_init()
136 struct tc_plug_qopt *ctl = nla_data(opt); in plug_init() local
138 if (nla_len(opt) < sizeof(*ctl)) in plug_init()
139 return -EINVAL; in plug_init()
141 q->limit = ctl->limit; in plug_init()
144 q->throttled = true; in plug_init()
155 * command is received (just act as a pass-thru queue).
166 return -EINVAL; in plug_change()
168 switch (msg->action) { in plug_change()
171 q->pkts_last_epoch = q->pkts_current_epoch; in plug_change()
172 q->pkts_current_epoch = 0; in plug_change()
173 if (q->unplug_indefinite) in plug_change()
174 q->throttled = true; in plug_change()
175 q->unplug_indefinite = false; in plug_change()
181 q->pkts_to_release += q->pkts_last_epoch; in plug_change()
182 q->pkts_last_epoch = 0; in plug_change()
183 q->throttled = false; in plug_change()
184 netif_schedule_queue(sch->dev_queue); in plug_change()
187 q->unplug_indefinite = true; in plug_change()
188 q->pkts_to_release = 0; in plug_change()
189 q->pkts_last_epoch = 0; in plug_change()
190 q->pkts_current_epoch = 0; in plug_change()
191 q->throttled = false; in plug_change()
192 netif_schedule_queue(sch->dev_queue); in plug_change()
196 q->limit = msg->limit; in plug_change()
199 return -EINVAL; in plug_change()