diff options
author | Alon Levy <alevy@redhat.com> | 2010-11-07 12:33:28 +0200 |
---|---|---|
committer | Alon Levy <alevy@redhat.com> | 2010-11-07 12:35:22 +0200 |
commit | 40b2e48daf7eb13be23cf7dfa0bbde14d6e7397d (patch) | |
tree | 79ee3e3005cec8313c1c4d0fe20466b65149d785 | |
parent | 64d1deed403a39a684949ff604d563133e0cec3d (diff) | |
download | spice-40b2e48daf7eb13be23cf7dfa0bbde14d6e7397d.tar.gz spice-40b2e48daf7eb13be23cf7dfa0bbde14d6e7397d.tar.xz spice-40b2e48daf7eb13be23cf7dfa0bbde14d6e7397d.zip |
server/red_channel: make client ack window configurable (from red_worker)
-rw-r--r-- | server/red_channel.c | 6 | ||||
-rw-r--r-- | server/red_channel.h | 1 |
2 files changed, 5 insertions, 2 deletions
diff --git a/server/red_channel.c b/server/red_channel.c index 82181d6d..7a80862c 100644 --- a/server/red_channel.c +++ b/server/red_channel.c @@ -274,6 +274,7 @@ RedChannel *red_channel_create(int size, RedsStreamContext *peer, channel->ack_data.messages_window = ~0; // blocks send message (maybe use send_data.blocked + // block flags) channel->ack_data.client_generation = ~0; + channel->ack_data.client_window = CLIENT_ACK_WINDOW; channel->migrate = migrate; ring_init(&channel->pipe); @@ -398,7 +399,7 @@ int red_channel_handle_message(RedChannel *channel, uint32_t size, break; case SPICE_MSGC_ACK: if (channel->ack_data.client_generation == channel->ack_data.generation) { - channel->ack_data.messages_window -= CLIENT_ACK_WINDOW; + channel->ack_data.messages_window -= channel->ack_data.client_window; red_channel_push(channel); } break; @@ -546,7 +547,8 @@ static PipeItem *red_channel_pipe_get(RedChannel *channel) PipeItem *item; if (!channel || channel->send_data.blocked || - (channel->handle_acks && (channel->ack_data.messages_window > CLIENT_ACK_WINDOW * 2)) || + (channel->handle_acks && + (channel->ack_data.messages_window > channel->ack_data.client_window * 2)) || !(item = (PipeItem *)ring_get_tail(&channel->pipe))) { return NULL; } diff --git a/server/red_channel.h b/server/red_channel.h index e4b46554..65064c42 100644 --- a/server/red_channel.h +++ b/server/red_channel.h @@ -126,6 +126,7 @@ struct RedChannel { uint32_t generation; uint32_t client_generation; uint32_t messages_window; + uint32_t client_window; } ack_data; Ring pipe; |