]> git.ipfire.org Git - thirdparty/knot-dns.git/commitdiff
xdp-tcp: move send_prepare and send_finish out of knot_tcp_send()
authorDaniel Salzman <daniel.salzman@nic.cz>
Wed, 16 Mar 2022 11:09:54 +0000 (12:09 +0100)
committerDaniel Salzman <daniel.salzman@nic.cz>
Wed, 16 Mar 2022 14:24:42 +0000 (15:24 +0100)
src/knot/server/xdp-handler.c
src/libknot/xdp/tcp.c

index 0c33ba20d4a80b1d67e55aa1ed93f037426cf254..339d8f95adccb62d39fa716c1d2ee1f4899cb6f7 100644 (file)
@@ -288,6 +288,8 @@ void xdp_handle_sweep(xdp_handle_ctx_t *ctx)
        uint32_t prev_total;
        knot_tcp_relay_t sweep_relays[XDP_BATCHLEN];
        do {
+               knot_xdp_send_prepare(ctx->sock);
+
                prev_total = ctx->sweep_closed + ctx->sweep_reset;
 
                ret = knot_tcp_sweep(ctx->tcp_table, ctx->tcp_idle_close, ctx->tcp_idle_reset,
@@ -312,6 +314,8 @@ void xdp_handle_sweep(xdp_handle_ctx_t *ctx)
                        ret = knot_tcp_send(ctx->sock, sweep_relays, XDP_BATCHLEN, XDP_BATCHLEN);
                }
                knot_tcp_cleanup(ctx->syn_table, sweep_relays, XDP_BATCHLEN);
+
+               (void)knot_xdp_send_finish(ctx->sock);
        } while (ret == KNOT_EOK && prev_total < ctx->sweep_closed + ctx->sweep_reset);
 
        struct timespec now = time_now();
index 255e7c602f7c228ad3cd5d48174d5c71ee778f03..74586355dd0b5512a63d0d15a4c4fa0fbcd3a662 100644 (file)
@@ -536,8 +536,6 @@ int knot_tcp_send(knot_xdp_socket_t *socket, knot_tcp_relay_t relays[],
                return KNOT_EINVAL;
        }
 
-       knot_xdp_send_prepare(socket);
-
        knot_xdp_msg_t msgs[max_at_once], *first = first_msg(msgs, max_at_once), *msg = first;
 
        for (uint32_t i = 0; i < relay_count; i++) {
@@ -609,7 +607,6 @@ int knot_tcp_send(knot_xdp_socket_t *socket, knot_tcp_relay_t relays[],
        }
 
        send_msgs(msgs, msg - first, socket);
-       (void)knot_xdp_send_finish(socket);
 
        return KNOT_EOK;
 }