| 2656 | } |
| 2657 | |
| 2658 | static uint32_t |
| 2659 | rack_get_decrease(struct tcp_rack *rack, uint32_t curper, int32_t rtt_diff) |
| 2660 | { |
| 2661 | /* |
| 2662 | * norm_grad = rtt_diff / minrtt; |
| 2663 | * new_per = curper * (1 - B * norm_grad) |
| 2664 | * |
| 2665 | * B = rack_gp_decrease_per (default 10%) |
| 2666 | * rtt_dif = input var current rtt-diff |
| 2667 | * curper = input var current percentage |
| 2668 | * minrtt = from rack filter |
| 2669 | * |
| 2670 | */ |
| 2671 | uint64_t perf; |
| 2672 | |
| 2673 | perf = (((uint64_t)curper * ((uint64_t)1000000 - |
| 2674 | ((uint64_t)rack_gp_decrease_per * (uint64_t)10000 * |
| 2675 | (((uint64_t)rtt_diff * (uint64_t)1000000)/ |
| 2676 | (uint64_t)get_filter_value_small(&rack->r_ctl.rc_gp_min_rtt)))/ |
| 2677 | (uint64_t)1000000)) / |
| 2678 | (uint64_t)1000000); |
| 2679 | if (perf > curper) { |
| 2680 | /* TSNH */ |
| 2681 | perf = curper - 1; |
| 2682 | } |
| 2683 | return ((uint32_t)perf); |
| 2684 | } |
| 2685 | |
| 2686 | static uint32_t |
| 2687 | rack_decrease_highrtt(struct tcp_rack *rack, uint32_t curper, uint32_t rtt) |
no test coverage detected