• Home
  • Raw
  • Download

Lines Matching refs:p

230 static inline void red_set_parms(struct red_parms *p,  in red_set_parms()  argument
237 p->qth_min = qth_min << Wlog; in red_set_parms()
238 p->qth_max = qth_max << Wlog; in red_set_parms()
239 p->Wlog = Wlog; in red_set_parms()
240 p->Plog = Plog; in red_set_parms()
243 p->qth_delta = delta; in red_set_parms()
248 p->max_P = max_P; in red_set_parms()
251 p->max_P_reciprocal = reciprocal_value(max_p_delta); in red_set_parms()
258 p->target_min = qth_min + 2*delta; in red_set_parms()
259 p->target_max = qth_min + 3*delta; in red_set_parms()
261 p->Scell_log = Scell_log; in red_set_parms()
262 p->Scell_max = (255 << Scell_log); in red_set_parms()
265 memcpy(p->Stab, stab, sizeof(p->Stab)); in red_set_parms()
290 static inline unsigned long red_calc_qavg_from_idle_time(const struct red_parms *p, in red_calc_qavg_from_idle_time() argument
294 long us_idle = min_t(s64, delta, p->Scell_max); in red_calc_qavg_from_idle_time()
317 shift = p->Stab[(us_idle >> p->Scell_log) & RED_STAB_MASK]; in red_calc_qavg_from_idle_time()
329 us_idle = (v->qavg * (u64)us_idle) >> p->Scell_log; in red_calc_qavg_from_idle_time()
338 static inline unsigned long red_calc_qavg_no_idle_time(const struct red_parms *p, in red_calc_qavg_no_idle_time() argument
351 return v->qavg + (backlog - (v->qavg >> p->Wlog)); in red_calc_qavg_no_idle_time()
354 static inline unsigned long red_calc_qavg(const struct red_parms *p, in red_calc_qavg() argument
359 return red_calc_qavg_no_idle_time(p, v, backlog); in red_calc_qavg()
361 return red_calc_qavg_from_idle_time(p, v); in red_calc_qavg()
365 static inline u32 red_random(const struct red_parms *p) in red_random() argument
367 return reciprocal_divide(prandom_u32(), p->max_P_reciprocal); in red_random()
370 static inline int red_mark_probability(const struct red_parms *p, in red_mark_probability() argument
390 return !(((qavg - p->qth_min) >> p->Wlog) * v->qcount < v->qR); in red_mark_probability()
399 static inline int red_cmp_thresh(const struct red_parms *p, unsigned long qavg) in red_cmp_thresh() argument
401 if (qavg < p->qth_min) in red_cmp_thresh()
403 else if (qavg >= p->qth_max) in red_cmp_thresh()
415 static inline int red_action(const struct red_parms *p, in red_action() argument
419 switch (red_cmp_thresh(p, qavg)) { in red_action()
426 if (red_mark_probability(p, v, qavg)) { in red_action()
428 v->qR = red_random(p); in red_action()
432 v->qR = red_random(p); in red_action()
445 static inline void red_adaptative_algo(struct red_parms *p, struct red_vars *v) in red_adaptative_algo() argument
452 qavg = red_calc_qavg_from_idle_time(p, v); in red_adaptative_algo()
455 qavg >>= p->Wlog; in red_adaptative_algo()
457 if (qavg > p->target_max && p->max_P <= MAX_P_MAX) in red_adaptative_algo()
458 p->max_P += MAX_P_ALPHA(p->max_P); /* maxp = maxp + alpha */ in red_adaptative_algo()
459 else if (qavg < p->target_min && p->max_P >= MAX_P_MIN) in red_adaptative_algo()
460 p->max_P = (p->max_P/10)*9; /* maxp = maxp * Beta */ in red_adaptative_algo()
462 max_p_delta = DIV_ROUND_CLOSEST(p->max_P, p->qth_delta); in red_adaptative_algo()
464 p->max_P_reciprocal = reciprocal_value(max_p_delta); in red_adaptative_algo()