summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorOndrej Zajicek <santiago@crfreenet.org>2009-10-11 18:56:16 +0200
committerOndrej Zajicek <santiago@crfreenet.org>2009-10-11 18:56:16 +0200
commitea89da381fc682155e7d08d6ad3d4ac8aa5fe115 (patch)
tree169955732d5886614af061e9472473b01fb8904c /lib
parent7ea5b00f42bd3d1fdafb0be349e3ebbcdf3ea466 (diff)
downloadbird-ea89da381fc682155e7d08d6ad3d4ac8aa5fe115.tar
bird-ea89da381fc682155e7d08d6ad3d4ac8aa5fe115.zip
Workaround for stupid callback scheduler.
There is no reak callback scheduler and previous behavior causes bad things during hard congestion (like BGP hold timeouts). Smart callback scheduler is still missing, but main loop was changed such that it first processes all tx callbacks (which are fast enough) (but max 4* per socket) + rx callbacks for CLI, and in the second phase it processes one rx callback per socket up to four sockets (as rx callback can be slow when there are too many protocols, because route redistribution is done synchronously inside rx callback). If there is event callback ready, second phase is skipped in 90% of iterations (to speed up CLI during congestion).
Diffstat (limited to 'lib')
-rw-r--r--lib/socket.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/lib/socket.h b/lib/socket.h
index f192260..53e89ed 100644
--- a/lib/socket.h
+++ b/lib/socket.h
@@ -51,6 +51,7 @@ void sk_reallocate(sock *); /* Free and allocate tbuf & rbuf */
void sk_dump_all(void);
int sk_set_ttl(sock *s, int ttl); /* Set TTL for given socket */
int sk_set_md5_auth(sock *s, ip_addr a, char *passwd); /* Add or remove security associations for given passive socket */
+int sk_rx_ready(sock *s);
static inline int
sk_send_buffer_empty(sock *sk)