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);
}
示例#2
0
/* 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);
}