From 4253ed3cab2df4ad31f1780b38d78b14b729dd0c Mon Sep 17 00:00:00 2001 From: Marek Lindner Date: Fri, 7 May 2010 21:47:08 +0200 Subject: [PATCH] --- yaml --- r: 197350 b: refs/heads/master c: bd13b616aa9d082dce760759b7473da5ed399452 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/staging/batman-adv/aggregation.c | 12 ++++++++++++ trunk/drivers/staging/batman-adv/send.c | 10 +--------- 3 files changed, 14 insertions(+), 10 deletions(-) diff --git a/[refs] b/[refs] index ee6f7887b612..1ebe37c49b27 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: f347b8736f176681fbfc666bf00165125a3274a5 +refs/heads/master: bd13b616aa9d082dce760759b7473da5ed399452 diff --git a/trunk/drivers/staging/batman-adv/aggregation.c b/trunk/drivers/staging/batman-adv/aggregation.c index 7917322a7e2a..d25e5a89dac3 100644 --- a/trunk/drivers/staging/batman-adv/aggregation.c +++ b/trunk/drivers/staging/batman-adv/aggregation.c @@ -52,6 +52,8 @@ static bool can_aggregate_with(struct batman_packet *new_batman_packet, */ if (time_before(send_time, forw_packet->send_time) && + time_after_eq(send_time + msecs_to_jiffies(MAX_AGGREGATION_MS), + forw_packet->send_time) && (aggregated_bytes <= MAX_AGGREGATION_BYTES)) { /** @@ -195,6 +197,16 @@ void add_bat_packet_to_list(unsigned char *packet_buff, int packet_len, if (forw_packet_aggr == NULL) { /* the following section can run without the lock */ spin_unlock_irqrestore(&forw_bat_list_lock, flags); + + /** + * if we could not aggregate this packet with one of the others + * we hold it back for a while, so that it might be aggregated + * later on + */ + if ((!own_packet) && + (atomic_read(&bat_priv->aggregation_enabled))) + send_time += msecs_to_jiffies(MAX_AGGREGATION_MS); + new_aggregated_packet(packet_buff, packet_len, send_time, direct_link, if_incoming, own_packet); diff --git a/trunk/drivers/staging/batman-adv/send.c b/trunk/drivers/staging/batman-adv/send.c index ff7b1f10684f..d356ce7644a3 100644 --- a/trunk/drivers/staging/batman-adv/send.c +++ b/trunk/drivers/staging/batman-adv/send.c @@ -46,15 +46,7 @@ static unsigned long own_send_time(void) /* when do we schedule a forwarded packet to be sent */ static unsigned long forward_send_time(void) { - unsigned long send_time = jiffies; /* Starting now plus... */ - - if (atomic_read(&aggregation_enabled)) - send_time += (((MAX_AGGREGATION_MS - (JITTER/2) + - (random32() % JITTER)) * HZ) / 1000); - else - send_time += (((random32() % (JITTER/2)) * HZ) / 1000); - - return send_time; + return jiffies + (((random32() % (JITTER/2)) * HZ) / 1000); } /* send out an already prepared packet to the given address via the