Lines Matching defs:pie

56 	uint16_t active;               /**< Flag for activating/deactivating pie */
73 * @param pie [in,out] data pointer to PIE runtime data
80 rte_pie_rt_data_init(struct rte_pie *pie);
108 * @param pie [in, out] data pointer to PIE runtime data
117 struct rte_pie *pie,
123 pie->qlen++;
124 pie->qlen_bytes += pkt_len;
129 if ((pie->active == 1) &&
130 (pie->qlen < (pie_cfg->tailq_th * 0.1))) {
131 pie->active = 0;
132 pie->in_measurement = 0;
143 * @param pie [in, out] data pointer to PIE runtime data
148 struct rte_pie *pie, uint64_t time)
155 uint64_t current_qdelay = pie->qlen * (pie->avg_dq_time >> 14);
158 RTE_BETA * (current_qdelay - pie->qdelay_old);
160 if (pie->drop_prob < 0.000001)
162 else if (pie->drop_prob < 0.00001)
164 else if (pie->drop_prob < 0.0001)
166 else if (pie->drop_prob < 0.001)
168 else if (pie->drop_prob < 0.01)
170 else if (pie->drop_prob < 0.1)
173 if (pie->drop_prob >= 0.1 && p > 0.02)
176 pie->drop_prob += p;
181 if ((double)current_qdelay < qdelay && pie->qdelay_old < qdelay)
182 pie->drop_prob *= 0.98; /* 1 - 1/64 is sufficient */
185 if (pie->drop_prob < 0)
186 pie->drop_prob = 0;
187 if (pie->drop_prob > 1)
188 pie->drop_prob = 1;
190 pie->qdelay_old = current_qdelay;
191 pie->last_measurement = time;
193 uint64_t burst_allowance = pie->burst_allowance - pie_cfg->dp_update_interval;
195 pie->burst_allowance = (burst_allowance > 0) ? burst_allowance : 0;
203 * @param pie [in, out] data pointer to PIE runtime data
211 struct rte_pie *pie)
216 if (((pie->qdelay_old < qdelay) && (pie->drop_prob < 0.2)) ||
217 (pie->qlen <= (pie_cfg->tailq_th * 0.1)))
220 if (pie->drop_prob == 0)
221 pie->accu_prob = 0;
227 pie->accu_prob += pie->drop_prob;
229 if (pie->accu_prob < 0.85)
232 if (pie->accu_prob >= 8.5)
235 if (rte_drand() < pie->drop_prob) {
236 pie->accu_prob = 0;
248 * @param pie [in,out] data pointer to PIE runtime data
259 struct rte_pie *pie,
264 if (pie->qlen >= pie_cfg->tailq_th) {
266 pie->accu_prob = 0;
270 if (pie->active) {
272 if ((time - pie->last_measurement) >= pie_cfg->dp_update_interval)
273 _calc_drop_probability(pie_cfg, pie, time);
276 if (_rte_pie_drop(pie_cfg, pie) && pie->burst_allowance == 0)
281 if ((pie->active == 0) &&
282 (pie->qlen >= (pie_cfg->tailq_th * 0.1))) {
283 pie->active = 1;
284 pie->qdelay_old = 0;
285 pie->drop_prob = 0;
286 pie->in_measurement = 1;
287 pie->departed_bytes_count = 0;
288 pie->avg_dq_time = 0;
289 pie->last_measurement = time;
290 pie->burst_allowance = pie_cfg->max_burst;
291 pie->accu_prob = 0;
292 pie->start_measurement = time;
296 if (pie->active == 1 &&
297 pie->qlen < (pie_cfg->tailq_th * 0.1)) {
298 pie->active = 0;
299 pie->in_measurement = 0;
303 pie->qlen++;
304 pie->qlen_bytes += pkt_len;
315 * @param pie [in,out] data pointer to PIE runtime data
326 struct rte_pie *pie,
332 RTE_ASSERT(pie != NULL);
335 return rte_pie_enqueue_nonempty(pie_cfg, pie, pkt_len, time);
337 return rte_pie_enqueue_empty(pie_cfg, pie, pkt_len);
344 * @param pie [in] data pointer to PIE runtime data
349 rte_pie_dequeue(struct rte_pie *pie,
354 if (pie->in_measurement) {
355 pie->departed_bytes_count += pkt_len;
358 if (pie->departed_bytes_count >= RTE_DQ_THRESHOLD) {
359 uint64_t dq_time = time - pie->start_measurement;
361 if (pie->avg_dq_time == 0)
362 pie->avg_dq_time = dq_time;
364 pie->avg_dq_time = dq_time * RTE_DQ_WEIGHT + pie->avg_dq_time
367 pie->in_measurement = 0;
372 if ((pie->qlen_bytes >= RTE_DQ_THRESHOLD) && (pie->in_measurement == 0)) {
373 pie->in_measurement = 1;
374 pie->start_measurement = time;
375 pie->departed_bytes_count = 0;