Lines Matching refs:vars

389 static void cobalt_newton_step(struct cobalt_vars *vars)  in cobalt_newton_step()  argument
394 invsqrt = vars->rec_inv_sqrt; in cobalt_newton_step()
396 val = (3LL << 32) - ((u64)vars->count * invsqrt2); in cobalt_newton_step()
401 vars->rec_inv_sqrt = val; in cobalt_newton_step()
404 static void cobalt_invsqrt(struct cobalt_vars *vars) in cobalt_invsqrt() argument
406 if (vars->count < REC_INV_SQRT_CACHE) in cobalt_invsqrt()
407 vars->rec_inv_sqrt = inv_sqrt_cache[vars->count]; in cobalt_invsqrt()
409 cobalt_newton_step(vars); in cobalt_invsqrt()
412 static void cobalt_vars_init(struct cobalt_vars *vars) in cobalt_vars_init() argument
414 memset(vars, 0, sizeof(*vars)); in cobalt_vars_init()
432 static bool cobalt_queue_full(struct cobalt_vars *vars, in cobalt_queue_full() argument
438 if (ktime_to_ns(ktime_sub(now, vars->blue_timer)) > p->target) { in cobalt_queue_full()
439 up = !vars->p_drop; in cobalt_queue_full()
440 vars->p_drop += p->p_inc; in cobalt_queue_full()
441 if (vars->p_drop < p->p_inc) in cobalt_queue_full()
442 vars->p_drop = ~0; in cobalt_queue_full()
443 vars->blue_timer = now; in cobalt_queue_full()
445 vars->dropping = true; in cobalt_queue_full()
446 vars->drop_next = now; in cobalt_queue_full()
447 if (!vars->count) in cobalt_queue_full()
448 vars->count = 1; in cobalt_queue_full()
456 static bool cobalt_queue_empty(struct cobalt_vars *vars, in cobalt_queue_empty() argument
462 if (vars->p_drop && in cobalt_queue_empty()
463 ktime_to_ns(ktime_sub(now, vars->blue_timer)) > p->target) { in cobalt_queue_empty()
464 if (vars->p_drop < p->p_dec) in cobalt_queue_empty()
465 vars->p_drop = 0; in cobalt_queue_empty()
467 vars->p_drop -= p->p_dec; in cobalt_queue_empty()
468 vars->blue_timer = now; in cobalt_queue_empty()
469 down = !vars->p_drop; in cobalt_queue_empty()
471 vars->dropping = false; in cobalt_queue_empty()
473 if (vars->count && ktime_to_ns(ktime_sub(now, vars->drop_next)) >= 0) { in cobalt_queue_empty()
474 vars->count--; in cobalt_queue_empty()
475 cobalt_invsqrt(vars); in cobalt_queue_empty()
476 vars->drop_next = cobalt_control(vars->drop_next, in cobalt_queue_empty()
478 vars->rec_inv_sqrt); in cobalt_queue_empty()
487 static enum skb_drop_reason cobalt_should_drop(struct cobalt_vars *vars, in cobalt_should_drop() argument
514 schedule = ktime_sub(now, vars->drop_next); in cobalt_should_drop()
518 next_due = vars->count && ktime_to_ns(schedule) >= 0; in cobalt_should_drop()
520 vars->ecn_marked = false; in cobalt_should_drop()
523 if (!vars->dropping) { in cobalt_should_drop()
524 vars->dropping = true; in cobalt_should_drop()
525 vars->drop_next = cobalt_control(now, in cobalt_should_drop()
527 vars->rec_inv_sqrt); in cobalt_should_drop()
529 if (!vars->count) in cobalt_should_drop()
530 vars->count = 1; in cobalt_should_drop()
531 } else if (vars->dropping) { in cobalt_should_drop()
532 vars->dropping = false; in cobalt_should_drop()
535 if (next_due && vars->dropping) { in cobalt_should_drop()
537 if (!(vars->ecn_marked = INET_ECN_set_ce(skb))) in cobalt_should_drop()
540 vars->count++; in cobalt_should_drop()
541 if (!vars->count) in cobalt_should_drop()
542 vars->count--; in cobalt_should_drop()
543 cobalt_invsqrt(vars); in cobalt_should_drop()
544 vars->drop_next = cobalt_control(vars->drop_next, in cobalt_should_drop()
546 vars->rec_inv_sqrt); in cobalt_should_drop()
547 schedule = ktime_sub(now, vars->drop_next); in cobalt_should_drop()
550 vars->count--; in cobalt_should_drop()
551 cobalt_invsqrt(vars); in cobalt_should_drop()
552 vars->drop_next = cobalt_control(vars->drop_next, in cobalt_should_drop()
554 vars->rec_inv_sqrt); in cobalt_should_drop()
555 schedule = ktime_sub(now, vars->drop_next); in cobalt_should_drop()
556 next_due = vars->count && ktime_to_ns(schedule) >= 0; in cobalt_should_drop()
561 if (vars->p_drop && reason == SKB_NOT_DROPPED_YET && in cobalt_should_drop()
562 get_random_u32() < vars->p_drop) in cobalt_should_drop()
566 if (!vars->count) in cobalt_should_drop()
567 vars->drop_next = ktime_add_ns(now, p->interval); in cobalt_should_drop()
569 vars->drop_next = now; in cobalt_should_drop()