mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-13 19:02:58 +00:00
bgpd: yield more when generating UPDATEs
In the same vein as the round-robin input commit, this re-adds logic for limiting the amount of time spent generating UPDATEs per generation cycle. Missed this when shifting around wpkt_quanta; prior to MT it limited both calls to write() as well as UPDATE generation.
This commit is contained in:
parent
b785b7adda
commit
d0ad6d8e5f
@ -371,9 +371,14 @@ int bgp_generate_updgrp_packets(struct thread *thread)
|
|||||||
struct stream *s;
|
struct stream *s;
|
||||||
struct peer_af *paf;
|
struct peer_af *paf;
|
||||||
struct bpacket *next_pkt;
|
struct bpacket *next_pkt;
|
||||||
|
uint32_t wpq;
|
||||||
|
uint32_t generated = 0;
|
||||||
afi_t afi;
|
afi_t afi;
|
||||||
safi_t safi;
|
safi_t safi;
|
||||||
|
|
||||||
|
wpq = atomic_load_explicit(&peer->bgp->wpkt_quanta,
|
||||||
|
memory_order_relaxed);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The code beyond this part deals with update packets, proceed only
|
* The code beyond this part deals with update packets, proceed only
|
||||||
* if peer is Established and updates are not on hold (as part of
|
* if peer is Established and updates are not on hold (as part of
|
||||||
@ -458,7 +463,7 @@ int bgp_generate_updgrp_packets(struct thread *thread)
|
|||||||
bgp_writes_on(peer);
|
bgp_writes_on(peer);
|
||||||
bpacket_queue_advance_peer(paf);
|
bpacket_queue_advance_peer(paf);
|
||||||
}
|
}
|
||||||
} while (s);
|
} while (s && (++generated < wpq));
|
||||||
|
|
||||||
bgp_write_proceed_actions(peer);
|
bgp_write_proceed_actions(peer);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user