1. 11 7月, 2007 1 次提交
  2. 26 4月, 2007 1 次提交
  3. 12 12月, 2006 5 次提交
    • A
      [DCCP]: Whitespace cleanups · 8109b02b
      Arnaldo Carvalho de Melo 提交于
      That accumulated over the last months hackaton, shame on me for not
      using git-apply whitespace helping hand, will do that from now on.
      Signed-off-by: NArnaldo Carvalho de Melo <acme@mandriva.com>
      8109b02b
    • A
      [DCCP] ccid3: Fixup some type conversions related to rtts · 1fba78b6
      Arnaldo Carvalho de Melo 提交于
      Spotted by David Miller when compiling on sparc64, I reproduced it here on
      parisc64, that are the only platforms to define __kernel_suseconds_t as an
      'int', all the others, x86_64 and x86 included typedef it as a 'long', but from
      the definition of suseconds_t it should just be an 'int' on platforms where it
      is >= 32bits, it would not require all the castings from suseconds_t to (int)
      when printking variables of this type, that are not needed on parisc64 and
      sparc64.
      Signed-off-by: NArnaldo Carvalho de Melo <acme@mandriva.com>
      1fba78b6
    • G
      [DCCP] ccid3: Sanity-check RTT samples · de553c18
      Gerrit Renker 提交于
      CCID3 performance depends much on the accuracy of RTT samples.  If RTT
      samples grow too large, performance can be catastrophically poor.
      
      To limit the amount of possible damage in such cases, the patch
       * introduces an upper limit which identifies a maximum `sane' RTT value;
       * uses a macro to enforce this upper limit.
      
      Using a macro was given preference, since it is necessary to identify the
      calling function in the warning message. Since exceeding this threshold
      identifies a critical condition, DCCP_CRIT is used and not DCCP_WARN.
      
      Many thanks to Ian McDonald for collaboration on this issue.
      Signed-off-by: NGerrit Renker <gerrit@erg.abdn.ac.uk>
      Acked-by: NIan McDonald <ian.mcdonald@jandi.co.nz>
      Signed-off-by: NArnaldo Carvalho de Melo <acme@mandriva.com>
      de553c18
    • G
      [DCCP]: Simplify TFRC calculation · d63d8364
      Gerrit Renker 提交于
      In migrating towards using the newer functions scaled_div/scaled_div32
      for TFRC computations mapped from floating-point onto integer arithmetic,
      this completes the last stage of modifications.
      
      In particular, the overflow case for computing X_calc is circumvented by
       * breaking the computation into two stages
       * the first stage, res = (s*1E6)/R, cannot overflow due to use of u64
       * in the second stage, res = (res*1E6)/f, overflow on u32 is avoided due
         to (i) returning UINT_MAX in this case (which is logically appropriate)
         and (ii) issuing a warning message into the system log (since very likely
         there is a problem somewhere else with the parameters)
      
      Lastly, all such scaling operations are now exported into tfrc.h, since
      actually this form of scaled computation is specific to TFRC and not to CCID3.
      Signed-off-by: NGerrit Renker <gerrit@erg.abdn.ac.uk>
      Acked-by: NIan McDonald <ian.mcdonald@jandi.co.nz>
      Signed-off-by: NArnaldo Carvalho de Melo <acme@mandriva.com>
      d63d8364
    • G
      [DCCP] ccid3: Finer-grained resolution of sending rates · 1a21e49a
      Gerrit Renker 提交于
      This patch
       * resolves a bug where packets smaller than 32/64 bytes resulted in sending rates of 0
       * supports all sending rates from 1/64 bytes/second up to 4Gbyte/second
       * simplifies the present overflow problems in calculations
      
      Current sending rate X and the cached value X_recv of the receiver-estimated
      sending rate are both scaled by 64 (2^6) in order to
       * cope with low sending rates (minimally 1 byte/second)
       * allow upgrading to use a packets-per-second implementation of CCID 3
       * avoid calculation errors due to integer arithmetic cut-off
      
      The patch implements a revised strategy from
      http://www.mail-archive.com/dccp@vger.kernel.org/msg01040.html
      
      The only difference with regard to that strategy is that t_ipi is already
      used in the calculation of the nofeedback timeout, which saves one division.
      Signed-off-by: NGerrit Renker <gerrit@erg.abdn.ac.uk>
      Acked-by: NIan McDonald <ian.mcdonald@jandi.co.nz>
      Signed-off-by: NArnaldo Carvalho de Melo <acme@mandriva.com>
      1a21e49a
  4. 04 12月, 2006 1 次提交
    • G
      [DCCP] ccid3: Deprecate TFRC_SMALLEST_P · 44158306
      Gerrit Renker 提交于
       This patch deprecates the existing use of an arbitrary value TFRC_SMALLEST_P
       for low-threshold values of p. This avoids masking low-resolution errors.
       Instead, the code now checks against real boundaries (implemented by preceding
       patch) and provides warnings whenever a real value falls below the threshold.
      
       If such messages are observed, it is a better solution to take this as an
       indication that the lookup table needs to be re-engineered.
      
      Changelog:
      ----------
       This patch
         * makes handling all TFRC resolution errors local to the TFRC library
      
         * removes unnecessary test whether X_calc is 'infinity' due to p==0 -- this
           condition is already caught by tfrc_calc_x()
      
         * removes setting ccid3hctx_p = TFRC_SMALLEST_P in ccid3_hc_tx_packet_recv
           since this is now done by the TFRC library
      
         * updates BUG_ON test in ccid3_hc_tx_no_feedback_timer to take into account
           that p now is either 0 (and then X_calc is irrelevant), or it is > 0; since
           the handling of TFRC_SMALLEST_P is now taken care of in the tfrc library
      
      Justification:
      --------------
       The TFRC code uses a lookup table which has a bounded resolution.
       The lowest possible value of the loss event rate `p' which can be
       resolved is currently 0.0001.  Substituting this lower threshold for
       p when p is less than 0.0001 results in a huge, exponentially-growing
       error.  The error can be computed by the following formula:
      
          (f(0.0001) - f(p))/f(p) * 100      for p < 0.0001
      
       Currently the solution is to use an (arbitrary) value
           TFRC_SMALLEST_P  =   40 * 1E-6   =   0.00004
       and to consider all values below this value as `virtually zero'.  Due to
       the exponentially growing resolution error, this is not a good idea, since
       it hides the fact that the table can not resolve practically occurring cases.
       Already at p == TFRC_SMALLEST_P, the error is as high as 58.19%!
      Signed-off-by: NGerrit Renker <gerrit@erg.abdn.ac.uk>
      Acked-by: NIan McDonald <ian.mcdonald@jandi.co.nz>
      Signed-off-by: NArnaldo Carvalho de Melo <acme@mandriva.com>
      44158306
  5. 03 12月, 2006 6 次提交
  6. 27 8月, 2006 2 次提交
    • I
      [DCCP]: Fix CCID3 · 66a377c5
      Ian McDonald 提交于
      This fixes CCID3 to give much closer performance to RFC4342.
      
      CCID3 is meant to alter sending rate based on RTT and loss.
      
      The performance was verified against:
      http://wand.net.nz/~perry/max_download.php
      
      For example I tested with netem and had the following parameters:
      Delayed Acks 1, MSS 256 bytes, RTT 105 ms, packet loss 5%.
      
      This gives a theoretical speed of 71.9 Kbits/s. I measured across three
      runs with this patch set and got 70.1 Kbits/s. Without this patchset the
      average was 232 Kbits/s which means Linux can't be used for CCID3 research
      properly.
      
      I also tested with netem turned off so box just acting as router with 1.2
      msec RTT. The performance with this is the same with or without the patch
      at around 30 Mbit/s.
      
      Signed off by: Ian McDonald <ian.mcdonald@jandi.co.nz>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      66a377c5
    • I
      [DCCP]: Update contact details and copyright · e6bccd35
      Ian McDonald 提交于
      Just updating copyright and contacts
      
      Signed off by: Ian McDonald <ian.mcdonald@jandi.co.nz>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      e6bccd35
  7. 01 7月, 2006 1 次提交
  8. 21 3月, 2006 1 次提交
    • A
      [DCCP] CCID: Improve CCID infrastructure · 91f0ebf7
      Arnaldo Carvalho de Melo 提交于
      1. No need for ->ccid_init nor ->ccid_exit, this is what module_{init,exit}
         does and anynways neither ccid2 nor ccid3 were using it.
      
      2. Rename struct ccid to struct ccid_operations and introduce struct ccid
         with a pointer to ccid_operations and rigth after it the rx or tx
         private state.
      
      3. Remove the pointer to the state of the half connections from struct
         dccp_sock, now its derived thru ccid_priv() from the ccid pointer.
      
      Now we also can implement the setsockopt for changing the CCID easily as
      no ccid init routines can affect struct dccp_sock in any way that prevents
      other CCIDs from working if a CCID switch operation is asked by apps.
      Signed-off-by: NArnaldo Carvalho de Melo <acme@mandriva.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      91f0ebf7
  9. 18 9月, 2005 1 次提交
  10. 10 9月, 2005 1 次提交
  11. 09 9月, 2005 2 次提交
  12. 30 8月, 2005 6 次提交