qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 1/3] slirp: make timeout local


From: liu ping fan
Subject: Re: [Qemu-devel] [PATCH 1/3] slirp: make timeout local
Date: Tue, 13 Aug 2013 16:30:28 +0800

On Tue, Aug 13, 2013 at 4:03 PM, Jan Kiszka <address@hidden> wrote:
> On 2013-08-13 05:15, Liu Ping Fan wrote:
>> Each slirp has its own time to caculate timeout.
>>
>> Signed-off-by: Liu Ping Fan <address@hidden>
>> ---
>>  slirp/slirp.c | 22 ++++++++++------------
>>  slirp/slirp.h |  3 +++
>>  2 files changed, 13 insertions(+), 12 deletions(-)
>>
>> diff --git a/slirp/slirp.c b/slirp/slirp.c
>> index 80b28ea..55654d5 100644
>> --- a/slirp/slirp.c
>> +++ b/slirp/slirp.c
>> @@ -40,8 +40,6 @@ static const uint8_t special_ethaddr[ETH_ALEN] = {
>>  static const uint8_t zero_ethaddr[ETH_ALEN] = { 0, 0, 0, 0, 0, 0 };
>>
>>  u_int curtime;
>> -static u_int time_fasttimo, last_slowtimo;
>> -static int do_slowtimo;
>>
>>  static QTAILQ_HEAD(slirp_instances, Slirp) slirp_instances =
>>      QTAILQ_HEAD_INITIALIZER(slirp_instances);
>> @@ -278,14 +276,13 @@ void slirp_pollfds_fill(GArray *pollfds)
>>      /*
>>       * First, TCP sockets
>>       */
>> -    do_slowtimo = 0;
>>
>>      QTAILQ_FOREACH(slirp, &slirp_instances, entry) {
>>          /*
>>           * *_slowtimo needs calling if there are IP fragments
>>           * in the fragment queue, or there are TCP connections active
>>           */
>> -        do_slowtimo |= ((slirp->tcb.so_next != &slirp->tcb) ||
>> +        slirp->do_slowtimo = ((slirp->tcb.so_next != &slirp->tcb) ||
>
> What's the reason for changing the original logic for do_slowtimo as well?
>
Original code, do_slowtimo belong to the slirp system. After changing,
it is based on slirp instance. So no need to OR.

>>                  (&slirp->ipq.ip_link != slirp->ipq.ip_link.next));
>>
>>          for (so = slirp->tcb.so_next; so != &slirp->tcb;
>> @@ -299,8 +296,9 @@ void slirp_pollfds_fill(GArray *pollfds)
>>              /*
>>               * See if we need a tcp_fasttimo
>>               */
>> -            if (time_fasttimo == 0 && so->so_tcpcb->t_flags & TF_DELACK) {
>> -                time_fasttimo = curtime; /* Flag when we want a fasttimo */
>> +            if (slirp->time_fasttimo == 0 &&
>> +                so->so_tcpcb->t_flags & TF_DELACK) {
>> +                slirp->time_fasttimo = curtime; /* Flag when want a 
>> fasttimo */
>>              }
>>
>>              /*
>> @@ -381,7 +379,7 @@ void slirp_pollfds_fill(GArray *pollfds)
>>                      udp_detach(so);
>>                      continue;
>>                  } else {
>> -                    do_slowtimo = 1; /* Let socket expire */
>> +                    slirp->do_slowtimo = 1; /* Let socket expire */
>>                  }
>>              }
>>
>> @@ -422,7 +420,7 @@ void slirp_pollfds_fill(GArray *pollfds)
>>                      icmp_detach(so);
>>                      continue;
>>                  } else {
>> -                    do_slowtimo = 1; /* Let socket expire */
>> +                    slirp->do_slowtimo = 1; /* Let socket expire */
>>                  }
>>              }
>>
>> @@ -454,14 +452,14 @@ void slirp_pollfds_poll(GArray *pollfds, int 
>> select_error)
>>          /*
>>           * See if anything has timed out
>>           */
>> -        if (time_fasttimo && ((curtime - time_fasttimo) >= 2)) {
>> +        if (slirp->time_fasttimo && ((curtime - slirp->time_fasttimo) >= 
>> 2)) {
>>              tcp_fasttimo(slirp);
>> -            time_fasttimo = 0;
>> +            slirp->time_fasttimo = 0;
>>          }
>> -        if (do_slowtimo && ((curtime - last_slowtimo) >= 499)) {
>> +        if (slirp->do_slowtimo && ((curtime - slirp->last_slowtimo) >= 
>> 499)) {
>>              ip_slowtimo(slirp);
>>              tcp_slowtimo(slirp);
>> -            last_slowtimo = curtime;
>> +            slirp->last_slowtimo = curtime;
>>          }
>>
>>          /*
>> diff --git a/slirp/slirp.h b/slirp/slirp.h
>> index fe0e65d..008360e 100644
>> --- a/slirp/slirp.h
>> +++ b/slirp/slirp.h
>> @@ -203,6 +203,9 @@ bool arp_table_search(Slirp *slirp, uint32_t ip_addr,
>>
>>  struct Slirp {
>>      QTAILQ_ENTRY(Slirp) entry;
>> +    u_int time_fasttimo;
>> +    u_int last_slowtimo;
>> +    int do_slowtimo;
>
> "bool do_slowtimo" would be nicer.
>
Ok.

Regards,
Pingfan



reply via email to

[Prev in Thread] Current Thread [Next in Thread]