diff --git a/src/etcp_connections.c b/src/etcp_connections.c index d142d3b6..e808aabd 100644 --- a/src/etcp_connections.c +++ b/src/etcp_connections.c @@ -746,8 +746,6 @@ void etcp_socket_remove(struct ETCP_SOCKET* conn) { } -static void bbr_cwnd_updated(void* ctx, uint32_t new_cwnd); - struct ETCP_LINK* etcp_link_new(struct ETCP_CONN* etcp, struct ETCP_SOCKET* conn, struct sockaddr_storage* remote_addr, uint8_t is_server) { DEBUG_TRACE(DEBUG_CATEGORY_CONNECTION, ""); if (!remote_addr) return NULL; @@ -833,9 +831,12 @@ struct ETCP_LINK* etcp_link_new(struct ETCP_CONN* etcp, struct ETCP_SOCKET* conn while (l && l->next) l=l->next; if (l) l->next = link; else etcp->links = link; - etcp_link_update_inflight_lim(link, link->mtu * 4); - link->bbr->on_cwnd_update = bbr_cwnd_updated; - link->bbr->cwnd_update_ctx = link; + link->inflight_lim_bytes = link->mtu * 4; // BBR init_cwnd (~4 packets) + +// пересчитать connection-level optimal_inflight + { uint32_t sum = 0; + for (struct ETCP_LINK* tl = etcp->links; tl; tl = tl->next) sum += tl->inflight_lim_bytes; + etcp->optimal_inflight = sum; } DEBUG_INFO(DEBUG_CATEGORY_CONNECTION, "NEW link initialized on etcp=[%s] link=%p socket=%s id=%d is_server=%d mtu=%d", etcp->log_name, link, conn->name, link->local_link_id, link->is_server, link->mtu); @@ -847,18 +848,6 @@ struct ETCP_LINK* etcp_link_new(struct ETCP_CONN* etcp, struct ETCP_SOCKET* conn return link; } -static void bbr_cwnd_updated(void* ctx, uint32_t new_cwnd) { - etcp_link_update_inflight_lim((struct ETCP_LINK*)ctx, new_cwnd); -} - -void etcp_link_update_inflight_lim(struct ETCP_LINK* link, uint32_t new_lim) { - link->inflight_lim_bytes = new_lim; - struct ETCP_CONN* etcp = link->etcp; - uint32_t sum = 0; - for (struct ETCP_LINK* tl = etcp->links; tl; tl = tl->next) sum += tl->inflight_lim_bytes; - etcp->optimal_inflight = sum; -} - void etcp_link_close(struct ETCP_LINK* link) { DEBUG_TRACE(DEBUG_CATEGORY_CONNECTION, ""); if (!link) return; diff --git a/src/etcp_connections.h b/src/etcp_connections.h index 98943c1e..4bb68cf6 100644 --- a/src/etcp_connections.h +++ b/src/etcp_connections.h @@ -262,7 +262,6 @@ void etcp_socket_remove(struct ETCP_SOCKET* conn); // connection functions // создает новый канал связи для etcp подключения (ETCP_CONN) struct ETCP_LINK* etcp_link_new(struct ETCP_CONN* etcp, struct ETCP_SOCKET* conn, struct sockaddr_storage* remote_addr, uint8_t is_server); -void etcp_link_update_inflight_lim(struct ETCP_LINK* link, uint32_t new_lim); void etcp_link_close(struct ETCP_LINK* link); //int etcp_input_cbk(struct packet_buffer* pkt, struct ETCP_SOCKET* conn);// получает расшифрованный пакет int etcp_encrypt_send(struct ETCP_DGRAM* dgram);// зашифровывает и отправляет пакет