From 27b1974c00bfb70f18c81f8e1bbe025660e0592e Mon Sep 17 00:00:00 2001 From: Jeremy Lakeman Date: Mon, 27 May 2013 13:10:58 +0930 Subject: [PATCH] Allow small packets to be delayed to increase the chance of aggregation --- overlay_queue.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/overlay_queue.c b/overlay_queue.c index 8e313ea6..2f3a3640 100644 --- a/overlay_queue.c +++ b/overlay_queue.c @@ -29,7 +29,7 @@ typedef struct overlay_txqueue { struct overlay_frame *last; int length; /* # frames in queue */ int maxLength; /* max # frames in queue before we consider ourselves congested */ - + int small_packet_grace_interval; /* Latency target in ms for this traffic class. Frames older than the latency target will get dropped. */ int latencyTarget; @@ -49,6 +49,8 @@ struct outgoing_packet{ struct decode_context context; }; +#define SMALL_PACKET_SIZE (400) + int32_t mdp_sequence=0; struct sched_ent next_packet; struct profile_total send_packet; @@ -62,12 +64,16 @@ int overlay_queue_init(){ for(i=0;idont_send_until) next_allowed_packet = frame->dont_send_until; + if (ob_position(frame->payload)enqueued_at + overlay_tx[frame->queue].small_packet_grace_interval) + next_allowed_packet = frame->enqueued_at + overlay_tx[frame->queue].small_packet_grace_interval; + overlay_queue_schedule_next(next_allowed_packet); return 0;