[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r23297 - gnunet/src/mesh
From: |
gnunet |
Subject: |
[GNUnet-SVN] r23297 - gnunet/src/mesh |
Date: |
Sat, 18 Aug 2012 12:26:01 +0200 |
Author: bartpolot
Date: 2012-08-18 12:26:01 +0200 (Sat, 18 Aug 2012)
New Revision: 23297
Modified:
gnunet/src/mesh/gnunet-service-mesh.c
Log:
- use deltas in bck ack
Modified: gnunet/src/mesh/gnunet-service-mesh.c
===================================================================
--- gnunet/src/mesh/gnunet-service-mesh.c 2012-08-18 02:35:52 UTC (rev
23296)
+++ gnunet/src/mesh/gnunet-service-mesh.c 2012-08-18 10:26:01 UTC (rev
23297)
@@ -3744,7 +3744,13 @@
tunnel_send_clients_bck_ack (struct MeshTunnel *t)
{
unsigned int i;
+ unsigned int tunnel_delta;
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, " Sending BCK ACK to clients\n");
+
+ tunnel_delta = t->bck_ack - t->bck_pid;
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, " tunnel delta: %u\n", tunnel_delta);
+
/* Find client whom to allow to send to origin (with lowest buffer space) */
for (i = 0; i < t->nclients; i++)
{
@@ -3753,16 +3759,18 @@
clinfo = &t->clients_fc[i];
delta = clinfo->bck_ack - clinfo->bck_pid;
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, " client %u delta: %u\n",
+ t->clients[i]->id, delta);
- if ((GNUNET_NO == t->nobuffer && ACK_THRESHOLD > delta) ||
+ if ((GNUNET_NO == t->nobuffer && tunnel_delta > delta) ||
(GNUNET_YES == t->nobuffer && 0 == delta))
{
uint32_t ack;
ack = clinfo->bck_pid;
- ack += t->nobuffer ? 1 : INITIAL_WINDOW_SIZE;
+ ack += t->nobuffer ? 1 : tunnel_delta;
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- " sending ack to client %u: %u\n",
+ " sending ack to client %u: %u\n",
t->clients[i]->id, ack);
send_local_ack (t, t->clients[i], ack);
clinfo->bck_ack = ack;
@@ -3786,28 +3794,21 @@
tunnel_send_bck_ack (struct MeshTunnel *t, uint16_t type)
{
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "Sending BCK ACK on tunnel %u [%u]\n",
- t->id.oid, t->id.tid);
+ "Sending BCK ACK on tunnel %u [%u] due to %s\n",
+ t->id.oid, t->id.tid, GNUNET_MESH_DEBUG_M2S(type));
/* Is it after data to_origin retransmission? */
switch (type)
{
case GNUNET_MESSAGE_TYPE_MESH_TO_ORIGIN:
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "ACK due to BCK DATA retransmission\n");
if (GNUNET_YES == t->nobuffer)
{
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Not sending ACK, nobuffer\n");
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ " Not sending ACK, nobuffer\n");
return;
}
- if (t->bck_queue_max > t->bck_queue_n * 2)
- {
-// GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Not sending ACK, buffer
free\n");
-// return;
- }
break;
case GNUNET_MESSAGE_TYPE_MESH_ACK:
case GNUNET_MESSAGE_TYPE_MESH_LOCAL_ACK:
- // FIXME fc
break;
default:
GNUNET_break (0);
@@ -7020,6 +7021,7 @@
struct MeshTunnel *t;
struct MeshClient *c;
MESH_TunnelNumber tid;
+ uint32_t ack;
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Got a local ACK\n");
/* Sanity check for client registration */
@@ -7044,17 +7046,20 @@
return;
}
+ ack = ntohl (msg->max_pid);
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, " ack %u\n", ack);
+
/* Does client own tunnel? I.E: Is this and ACK for BCK traffic? */
if (NULL != t->owner && t->owner->handle == client)
{
/* The client owns the tunnel, ACK is for data to_origin, send BCK ACK. */
- t->bck_ack = ntohl(msg->max_pid);
+ t->bck_ack = ack;
tunnel_send_bck_ack(t, GNUNET_MESSAGE_TYPE_MESH_LOCAL_ACK);
}
else
{
/* The client doesn't own the tunnel, this ACK is for FWD traffic. */
- tunnel_set_client_fwd_ack (t, c, ntohl (msg->max_pid));
+ tunnel_set_client_fwd_ack (t, c, ack);
tunnel_send_fwd_ack (t, GNUNET_MESSAGE_TYPE_MESH_LOCAL_ACK);
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r23297 - gnunet/src/mesh,
gnunet <=