extern ptype_list* max_delay_path(befig_list* befig, lofig_list* lofig) { ptype_list* head, *path; loins_list* loins; char *insname; if (!befig) { fprintf(stderr,"max_delay_path: NULL pointer\n"); exit(1); } if (!lofig->LOINS) return NULL; head=max_delay(befig); if (head) { /*search instance which begins*/ for (loins=lofig->LOINS; loins; loins=loins->NEXT) { insname=loins_name(head->DATA); if (insname==loins->INSNAME) break; } if (!loins) { fprintf(stderr,"max_delay_path: no loins '%s' found\n", insname); exit(1); } path=search_long_path(loins, befig); head->NEXT=path; } return (ptype_list*) reverse((chain_list*)head); }
/* Update alpha and beta values once per RTT */ static void update_params(struct sock *sk) { struct tcp_sock *tp = tcp_sk(sk); struct illinois *ca = inet_csk_ca(sk); if (tp->snd_cwnd < win_thresh) { ca->alpha = ALPHA_BASE; ca->beta = BETA_BASE; } else if (ca->cnt_rtt > 0) { u32 dm = max_delay(ca); u32 da = avg_delay(ca); ca->alpha = alpha(ca, da, dm); ca->beta = beta(da, dm); } rtt_reset(sk); }