mirror of
				https://gitlab.labs.nic.cz/labs/bird.git
				synced 2024-05-11 16:54:54 +00:00 
			
		
		
		
	BGP: split tx explicitly
If BGP has too many data to send and BIRD is slower than the link, TX is always possible until all data is sent. This patch limits maximum number of generated BGP messages in one iteration of TX hook.
This commit is contained in:
		
				
					committed by
					
						
						Maria Matejka
					
				
			
			
				
	
			
			
			
						parent
						
							bb57d9171f
						
					
				
				
					commit
					9dac814ee8
				
			@@ -2789,15 +2789,18 @@ bgp_schedule_packet(struct bgp_conn *conn, struct bgp_channel *c, int type)
 | 
			
		||||
  if ((conn->sk->tpos == conn->sk->tbuf) && !ev_active(conn->tx_ev))
 | 
			
		||||
    ev_schedule(conn->tx_ev);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
bgp_kick_tx(void *vconn)
 | 
			
		||||
{
 | 
			
		||||
  struct bgp_conn *conn = vconn;
 | 
			
		||||
 | 
			
		||||
  DBG("BGP: kicking TX\n");
 | 
			
		||||
  while (bgp_fire_tx(conn) > 0)
 | 
			
		||||
  uint max = 1024;
 | 
			
		||||
  while (--max && (bgp_fire_tx(conn) > 0))
 | 
			
		||||
    ;
 | 
			
		||||
 | 
			
		||||
  if (!max && !ev_active(conn->tx_ev))
 | 
			
		||||
    ev_schedule(conn->tx_ev);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
@@ -2806,8 +2809,12 @@ bgp_tx(sock *sk)
 | 
			
		||||
  struct bgp_conn *conn = sk->data;
 | 
			
		||||
 | 
			
		||||
  DBG("BGP: TX hook\n");
 | 
			
		||||
  while (bgp_fire_tx(conn) > 0)
 | 
			
		||||
  uint max = 1024;
 | 
			
		||||
  while (--max && (bgp_fire_tx(conn) > 0))
 | 
			
		||||
    ;
 | 
			
		||||
 | 
			
		||||
  if (!max && !ev_active(conn->tx_ev))
 | 
			
		||||
    ev_schedule(conn->tx_ev);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user