12 Dec, 2006

16 commits

  • 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: Gerrit Renker
    Acked-by: Ian McDonald
    Signed-off-by: Arnaldo Carvalho de Melo

    Gerrit Renker
     
  • This fixes
    1) a bug in the recomputation of the sending rate by the nofeedback
    timer when no feedback at all has so far been sent by the receiver:
    min_t was used instead of max_t, which is wrong (cf. RFC 3448, p. 10);

    2) an error in the computation of larger initial windows: instead of
    min(... max()) (cf. RFC 4342, 5.), the code had used max(... max()).

    Signed-off-by: Gerrit Renker
    Acked-by: Ian McDonald
    Signed-off-by: Arnaldo Carvalho de Melo

    Gerrit Renker
     
  • This performs two optimisations for the recomputation of the sending rate.

    1) Currently the target sending rate X_calc is recalculated whenever
    a) the nofeedback timer expires, or
    b) a feedback packet is received.
    In the (a) case, recomputing X_calc is redundant, since

    * the parameters p and RTT do not change in between the
    reception of feedback packets;

    * the parameter X_recv is either modified from received
    feedback or via the nofeedback timer;

    * a test (`p == 0') in the nofeedback timer avoids using
    a stale/undefined value of X_calc if p was previously 0.

    2) The nofeedback timer now only recomputes a timestamp when p == 0.
    This is according to step (4) of [RFC 3448, 4.3] and avoids
    unnecessarily determining a timestamp.

    A debug statement about not updating X is also removed - it helps very
    little in debugging and just clutters the logs.

    Signed-off-by: Gerrit Renker
    Acked-by: Ian McDonald
    Signed-off-by: Arnaldo Carvalho de Melo

    Gerrit Renker
     
  • This patch follows a suggestion by Ian McDonald and ensures that in
    the current code the value of p can not exceed 100%. Such a value is
    illegal and would consequently cause a bug condition in tfrc_calc_x().

    The receiver case is also tested, and a warning message is added.

    Signed-off-by: Gerrit Renker
    Acked-by: Ian McDonald
    Signed-off-by: Arnaldo Carvalho de Melo

    Gerrit Renker
     
  • As Eddie Kohler points out the RFC is Proposed Standard not experimental.
    Also removed documentation about deprecated socket option.

    Signed-off-by: Ian McDonald
    Signed-off-by: Gerrit Renker
    Signed-off-by: Arnaldo Carvalho de Melo

    Ian McDonald
     
  • It simplifies waiting for the CCID module to signal that a packet
    is ready to be sent. Other simplifications flow on from this such as
    removing constants.

    As a result of this EAGAIN is not returned any more by dccp_wait_for_ccid
    (which would otherwise lead to unnecessarily discarding the packet in
    dccp_write_xmit).

    Signed-off-by: Ian McDonald
    Signed-off-by: Gerrit Renker
    Signed-off-by: Arnaldo Carvalho de Melo

    Ian McDonald
     
  • Acked-by: Herbert Xu
    Signed-off-by: David S. Miller

    Andrew Morton
     
  • Signed-off-by: Ralf Baechle
    Signed-off-by: David S. Miller

    Ralf Baechle
     
  • Currently WAN router drivers can be built in-kernel while the
    register/unregister_wan_device interfaces are built as modules.
    This causes:

    drivers/built-in.o: In function `cycx_init':
    cycx_main.c:(.init.text+0x5c4b): undefined reference to `register_wan_device'
    drivers/built-in.o: In function `cycx_exit':
    cycx_main.c:(.exit.text+0x560): undefined reference to `unregister_wan_device'
    make: *** [.tmp_vmlinux1] Error 1

    The problem is caused by tristate -> bool conversion (y or m => y),
    so convert WAN_ROUTER_DRIVERS to a tristate so that the correct
    dependency is preserved.

    Signed-off-by: Randy Dunlap
    Signed-off-by: David S. Miller

    Randy Dunlap
     
  • The SHA384 block size should be 128 bytes, not 96 bytes. This was
    spotted by Andrew Donofrio.

    Fortunately the block size isn't actually used anywhere so this typo
    has had no real impact.

    Signed-off-by: Herbert Xu

    Herbert Xu
     
  • Fix typo in 'EXPERIMENTAL' in config CC_STACKPROTECTOR in arch/x86_64/Kconfig.

    Signed-off-by: Brice Goglin
    Signed-off-by: Linus Torvalds

    Brice Goglin
     
  • Make powerpc's __ilog2_u64() take a 64-bit argument.

    Signed-off-by: David Howells
    Signed-off-by: Linus Torvalds

    David Howells
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/drzeus/mmc:
    AT91 MMC update for 2.6.19
    mmc: Change SDHCI iomem error to a warning
    mmc: fix "prev->state: 2 != TASK_RUNNING??" problem on SD/MMC card removal
    AT91 MMC 5 : Minor cleanups
    AT91 MMC 4 : Interrupt handler cleanup
    AT91 MMC 3 : Move global mci_clk variable
    AT91 MMC 2 : Use platform resources
    AT91 MMC 1: Pass host structure.

    Linus Torvalds
     
  • * 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6:
    [PATCH] smc91x: Kill off excessive versatile hooks.
    [PATCH] myri10ge: update driver version to 1.1.0
    [PATCH] myri10ge: fix big_bytes in case of vlan frames
    [PATCH] myri10ge: Full vlan frame in small_bytes
    [PATCH] myri10ge: drop contiguous skb routines
    [PATCH] myri10ge: switch to page-based skb
    [PATCH] myri10ge: add page-based skb routines
    [PATCH] myri10ge: indentation cleanups
    [PATCH] chelsio: working NAPI
    [PATCH] MACB: Use __raw register access
    [PATCH] MACB: Use struct delayed_work instead of struct work_struct
    [PATCH] ucc_geth: Initialize mdio_lock.
    [PATCH] ucc_geth: compilation error fixes

    Linus Torvalds
     
  • We should not initialize rootfs before all the core initializers have
    run. So do it as a separate stage just before starting the regular
    driver initializers.

    Signed-off-by: Linus Torvalds

    Linus Torvalds
     
  • As reported by Andy Whitcroft, at least the SLES9 initrd build process
    depends on getting the kernel version from the kernel binary. It does
    that by simply trawling the binary and looking for the signature of the
    "linux_banner" string (the string "Linux version " to be exact. Which
    is really broken in itself, but whatever..)

    That got broken when the string was changed to allow /proc/version to
    change the UTS release information dynamically, and "get_kernel_version"
    thus returned "%s" (see commit a2ee8649ba6d71416712e798276bf7c40b64e6e5:
    "[PATCH] Fix linux banner utsname information").

    This just restores "linux_banner" as a static string, which should fix
    the version finding. And /proc/version simply uses a different string.

    To avoid wasting even that miniscule amount of memory, the early boot
    string should really be marked __initdata, but that just causes the same
    bug in SLES9 to re-appear, since it will then find other occurrences of
    "Linux version " first.

    Cc: Andy Whitcroft
    Acked-by: Herbert Poetzl
    Cc: Andi Kleen
    Cc: Andrew Morton
    Cc: Steve Fox
    Acked-by: Olaf Hering
    Signed-off-by: Linus Torvalds

    Linus Torvalds
     

11 Dec, 2006

24 commits