26 Apr, 2007

29 commits

  • SPIN_LOCK_UNLOCKED cleanup,use __SPIN_LOCK_UNLOCKED instead

    Signed-off-by: Milind Arun Choudhary
    Signed-off-by: Andrew Morton
    Signed-off-by: David S. Miller

    Milind Arun Choudhary
     
  • This prints the value of the parsed Elapsed Time when received via a
    Timestamp Echo option [RFC 4342, 13.3].

    Signed-off-by: Gerrit Renker
    Acked-by: Ian McDonald
    Signed-off-by: Arnaldo Carvalho de Melo
    Signed-off-by: David S. Miller

    Gerrit Renker
     
  • This fixes an error in the calculation of t_ipi when X converges towards
    very low sending rates (between 1 and 64 bytes per second).

    Although this case may not sound likely, it can be reproduced by connecting,
    hitting enter (1 byte sent) and waiting for some time, during which the
    nofeedback timer halves the sending rate until finally it reaches the region
    1..64 bytes/sec. Computing X is handled correctly (tested separately); but by
    dividing X _before_ entering the calculation of t_ipi, X becomes zero as
    a result. This in turn triggers a BUG condition caught in scaled_div().

    Fixed by replacing with equivalent statement and explicit typecast for good
    measure.

    Calculation verified and effect of patch tested - reduced never below 1 byte
    per 64 seconds afterwards, i.e. not allowing divide-by-zero.

    Signed-off-by: Gerrit Renker
    Acked-by: Ian McDonald
    Signed-off-by: Arnaldo Carvalho de Melo
    Signed-off-by: David S. Miller

    Gerrit Renker
     
  • The patch follows the following recommendation made in an erratum to RFC 4342:

    "Senders MAY additionally make use of other available RTT measurements,
    including those from the initial Request-Response packet exchange."

    It implements larger initial windows with regard to this inital RTT measurement,
    using the mechanism suggested in draft-ietf-dccp-rfc3448bis, section 4.2.

    Signed-off-by: Gerrit Renker
    Signed-off-by: Ian McDonald
    Signed-off-by: Arnaldo Carvalho de Melo
    Signed-off-by: David S. Miller

    Gerrit Renker
     
  • Function:

    Gerrit Renker
     
  • This replaces the existing occurrences of RTT sampling with
    the use of the new function dccp_sample_rtt.

    Signed-off-by: Gerrit Renker
    Signed-off-by: Ian McDonald
    Signed-off-by: Arnaldo Carvalho de Melo
    Signed-off-by: David S. Miller

    Gerrit Renker
     
  • A recurring problem, in particular in the CCID code, is that RTT samples
    from packets with timestamp echo and elapsed time options need to be taken.

    This service is provided via a new function dccp_sample_rtt in this patch.
    Furthermore, to protect against `insane' RTT samples, the sampled value
    is bounded between 100 microseconds and 4 seconds - for which u32 is sufficient.

    Signed-off-by: Gerrit Renker
    Signed-off-by: Ian McDonald
    Signed-off-by: Arnaldo Carvalho de Melo
    Signed-off-by: David S. Miller

    Gerrit Renker
     
  • This updates the code with regard to handling idle and application-limited
    periods as specified in [RFC 4342, 5.1].

    Background:

    Gerrit Renker
     
  • The CCID 3 and TFRC specs (RFC 4342, RFC 3448, draft-3448bis) make frequent
    reference to the computation of the RFC-3390 initial sending rate:

    1. Initial sending rate when RTT is known (RFC 4342, p. 6)
    2. Response to Idle/Application-Limited periods (RFC 4342, 5.1)

    This warrants putting the code into its own function, for later code reuse.

    Signed-off-by: Gerrit Renker
    Signed-off-by: Ian McDonald
    Signed-off-by: Arnaldo Carvalho de Melo
    Signed-off-by: David S. Miller

    Gerrit Renker
     
  • This clears the following sparc64 build warnings:
    1) warning: format "%ld" expects type "long int", but argument 3 has type "suseconds_t"
    2) warning: format "%llu" expects type "long long unsigned int", but argument 3 has type "__u64"
    Fixed by using typecast to unsigned. This is argued to be safe, since the quantities, after
    de-scaling (factor 2^6) fit all in u32.

    Signed-off-by: Gerrit Renker
    Signed-off-by: Ian McDonald
    Signed-off-by: Arnaldo Carvalho de Melo
    Signed-off-by: David S. Miller

    Gerrit Renker
     
  • This adds a few more fields of interest to /proc/net/dccpprobe, the following output ensues:

    1 2 3 4 5 6 7 8 9 10 11
    sec.usec src:sport dst:dport size s rtt p X_calc X_recv X t_ipi

    Also made the formatting consistent.

    Scripts that go with this can be downloaded from http://139.133.210.30/users/gerrit/dccp/dccp_probe/

    Signed-off-by: Gerrit Renker
    Acked-by: Ian McDonald
    Signed-off-by: Arnaldo Carvalho de Melo
    Signed-off-by: David S. Miller

    Gerrit Renker
     
  • This adds more detail in the wait_for_ccid packet scheduling loop.
    In particular, it informs about (i) when delay is used and (ii) why
    a packet is discarded.

    Signed-off-by: Gerrit Renker
    Signed-off-by: Ian McDonald
    Signed-off-by: Arnaldo Carvalho de Melo
    Signed-off-by: David S. Miller

    Gerrit Renker
     
  • Currently debugging output (when configured) is automatically enabled when
    DCCP modules are compiled into the kernel rather than built as loadable modules.
    This is not necessary, since the module parameters in this case become kernel
    commandline parameters, e.g. DCCP or CCID3 debug output can be enabled for a
    static build by appending the following at the boot prompt:

    dccp.dccp_debug=1 dccp_ccid3.ccid3_debug=1

    This patch therefore does away with the more complicated way of always enabling
    debug output for static builds

    Signed-off-by: Gerrit Renker
    Signed-off-by: Arnaldo Carvalho de Melo
    Signed-off-by: David S. Miller

    Gerrit Renker
     
  • This:

    1. removes a race condition in the access to the scheduled send time t_nom which
    results from allowing asynchronous r/w access to t_nom without locks;

    2. updates the inter-packet interval t_ipi = s/X when `s' changes, following a
    suggestion by Ian McDonald.

    Signed-off-by: Gerrit Renker
    Acked-by: Ian McDonald
    Signed-off-by: Arnaldo Carvalho de Melo
    Signed-off-by: David S. Miller

    Gerrit Renker
     
  • This adds a few debugging statements to ccid3.c

    Signed-off-by: Ian McDonald
    Signed-off-by: Gerrit Renker
    Signed-off-by: Arnaldo Carvalho de Melo
    Signed-off-by: David S. Miller

    Ian McDonald
     
  • This fixes a bug which uses an invalid comparison.
    The bug resulted in the use of invalid loss intervals.

    Signed-off-by: Ian McDonald
    Acked-by: Gerrit Renker
    Signed-off-by: Arnaldo Carvalho de Melo
    Signed-off-by: David S. Miller

    Ian McDonald
     
  • This improves the slow-start phase by using the MSS
    (as suggested in RFC 4342, sec. 5) instead of the packet size s.
    Also figured out that __u32 is ample resource enough.

    After applying, I got the following in the logs:

    ccid3_hc_tx_packet_recv: client(f7421700), s=6, MSS=1424, w_init=4380, R_sample=176us, X=24886363

    Had the previous variant been used, w_init would have been as low as 24.

    Committer note: removed unneeded cast to unsigned long long that was
    causing a compiler warning on 64bit architectures.

    Signed-off-by: Gerrit Renker
    Acked-by: Ian McDonald
    Signed-off-by: Arnaldo Carvalho de Melo
    Signed-off-by: David S. Miller

    Gerrit Renker
     
  • No code change at all.
    This splits ccid3.c into a RX and a TX section, so that the file has an
    organisation similar to the other ones (e.g. packet_history.{h,c}).

    Signed-off-by: Gerrit Renker
    Acked-by: Ian McDonald
    Signed-off-by: Arnaldo Carvalho de Melo
    Signed-off-by: David S. Miller

    Gerrit Renker
     
  • Since CCID3 avoids sending 0-byte data packets (cf. ccid3_hc_tx_send_packet),
    testing for zero-payload length, as performed by ccid3_hc_tx_update_s, is
    redundant - hence removed by this patch.

    Signed-off-by: Gerrit Renker
    Acked-by: Ian McDonald
    Signed-off-by: Arnaldo Carvalho de Melo
    Signed-off-by: David S. Miller

    Gerrit Renker
     
  • This removes two ambiguities in employing the new definition of before48,
    following the analysis on http://www.mail-archive.com/dccp@vger.kernel.org/msg01295.html

    (1) Updating GSR when P.seqno >= S.SWL
    With the old definition we did not update when P.seqno and S.SWL are 2^47 apart. To
    ensure the same behaviour as with the old definition, this is replaced with the
    equivalent condition dccp_delta_seqno(S.SWL, P.seqno) >= 0

    (2) Sending SYNC when P.seqno >= S.OSR
    Here it is debatable whether the new definition causes an ambiguity: the case is
    similar to (1); and to have consistency with the case (1), we use the equivalent
    condition dccp_delta_seqno(S.OSR, P.seqno) >= 0

    Detailed Justification

    Gerrit Renker
     
  • The follows48 relation identifies whether 48-bit sequence number
    x is the direct successor of y. Currently, it does not handle cases
    of the following type correctly:

    follows48(0x(prefix)10000LL, 0x(prefix)0FFFFLL)

    where prefix is an arbitrary hex sequence of up to 7 digits.

    This is fixed by reusing the new dccp_delta_seqno function.

    Signed-off-by: Gerrit Renker
    Acked-by: Ian McDonald
    Signed-off-by: Arnaldo Carvalho de Melo
    Signed-off-by: David S. Miller

    Gerrit Renker
     
  • Problem:

    Gerrit Renker
     
  • Problem:

    Gerrit Renker
     
  • This patch
    * organizes the sequence arithmetic functions into one corner of dccp.h
    * performs a small modification of dccp_set_seqno to make it more widely reusable
    (now it is safe to use any number, since it performs modulo-2^48 assignment)
    * adds functions and generic macros for 48-bit sequence arithmetic:
    --48 bit complement
    --modulo-48 addition and modulo-48 subtraction
    --dccp_inc_seqno now a special case of add48
    Constants renamed following a suggestion by Arnaldo.

    Signed-off-by: Gerrit Renker
    Acked-by: Ian McDonald
    Signed-off-by: Arnaldo Carvalho de Melo
    Signed-off-by: David S. Miller

    Gerrit Renker
     
  • Signed-off-by: Arnaldo Carvalho de Melo
    Signed-off-by: David S. Miller

    Arnaldo Carvalho de Melo
     
  • Now the skb->nh union has just one member, .raw, i.e. it is just like the
    skb->mac union, strange, no? I'm just leaving it like that till the transport
    layer is done with, when we'll rename skb->mac.raw to skb->mac_header (or
    ->mac_header_offset?), ditto for ->{h,nh}.

    Signed-off-by: Arnaldo Carvalho de Melo
    Signed-off-by: David S. Miller

    Arnaldo Carvalho de Melo
     
  • Signed-off-by: Arnaldo Carvalho de Melo
    Signed-off-by: David S. Miller

    Arnaldo Carvalho de Melo
     
  • For the places where we need a pointer to the network header, it is still legal
    to touch skb->nh.raw directly if just adding to, subtracting from or setting it
    to another layer header.

    Signed-off-by: Arnaldo Carvalho de Melo
    Signed-off-by: David S. Miller

    Arnaldo Carvalho de Melo
     
  • This patch removes the following not or no longer used exports:
    - drivers/char/random.c: secure_tcp_sequence_number
    - net/dccp/options.c: sysctl_dccp_feat_sequence_window
    - net/netlink/af_netlink.c: netlink_set_err

    Signed-off-by: Adrian Bunk
    Signed-off-by: David S. Miller

    Adrian Bunk
     

29 Mar, 2007

1 commit


26 Mar, 2007

1 commit


10 Mar, 2007

1 commit

  • The TX CCID needs the write_xmit_timer for delaying packet sends. Previously
    this timer was only activated on active (connecting) sockets.

    This patch initialises the write_xmit_timer in sync with the other timers, i.e.
    the timer will be ready on any socket. This is used by applications with a
    listening socket which start to stream after receiving an initiation by the
    client. The write_xmit_timer is stopped when the application closes, as before.

    Was tested to work and to remove the timer bug reported on dccp@vger.

    Also moved timer initialisation into timer.c (static).

    Signed-off-by: Gerrit Renker
    Acked-by: Ian McDonald
    Signed-off-by: David S. Miller

    Gerrit Renker
     

08 Mar, 2007

1 commit

  • This reverts an earlier patch which disabled bidirectional mode, meaning that
    a listening (passive) socket was not allowed to write to the other (active)
    end of the connection.

    This mode had been disabled when there were problems with CCID3, but it
    imposes a constraint on socket programming and thus hinders deployment.

    A change is included to ignore RX feedback received by the TX CCID3 module.

    Many thanks to Andre Noll for pointing out this issue.

    Signed-off-by: Gerrit Renker
    Signed-off-by: David S. Miller

    Gerrit Renker
     

07 Mar, 2007

2 commits

  • This mirrors a recent change in tcp_open_req_child, whereby the icsk_rto of the
    newly created child socket was not set (but rather on the parent socket). Same
    fix for DCCP.

    Signed-off-by: Gerrit Renker
    Signed-off-by: Arnaldo Carvalho de Melo
    Signed-off-by: David S. Miller

    Gerrit Renker
     
  • This fixes a bug caused by a previous patch, which causes DCCP servers in
    LISTEN state to not receive packets.

    This patch changes the logic so that
    * servers in either LISTEN or OPEN state get the RX half connection packets
    * clients in OPEN state get the TX half connection packets

    Signed-off-by: Gerrit Renker
    Signed-off-by: Arnaldo Carvalho de Melo
    Signed-off-by: David S. Miller

    Gerrit Renker
     

01 Mar, 2007

1 commit


15 Feb, 2007

2 commits

  • The semantic effect of insert_at_head is that it would allow new registered
    sysctl entries to override existing sysctl entries of the same name. Which is
    pain for caching and the proc interface never implemented.

    I have done an audit and discovered that none of the current users of
    register_sysctl care as (excpet for directories) they do not register
    duplicate sysctl entries.

    So this patch simply removes the support for overriding existing entries in
    the sys_sysctl interface since no one uses it or cares and it makes future
    enhancments harder.

    Signed-off-by: Eric W. Biederman
    Acked-by: Ralf Baechle
    Acked-by: Martin Schwidefsky
    Cc: Russell King
    Cc: David Howells
    Cc: "Luck, Tony"
    Cc: Ralf Baechle
    Cc: Paul Mackerras
    Cc: Martin Schwidefsky
    Cc: Andi Kleen
    Cc: Jens Axboe
    Cc: Corey Minyard
    Cc: Neil Brown
    Cc: "John W. Linville"
    Cc: James Bottomley
    Cc: Jan Kara
    Cc: Trond Myklebust
    Cc: Mark Fasheh
    Cc: David Chinner
    Cc: "David S. Miller"
    Cc: Patrick McHardy
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Eric W. Biederman
     
  • Signed-off-by: Eric W. Biederman
    Cc: Arnaldo Carvalho de Melo
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Eric W. Biederman
     

13 Feb, 2007

1 commit

  • Many struct file_operations in the kernel can be "const". Marking them const
    moves these to the .rodata section, which avoids false sharing with potential
    dirty data. In addition it'll catch accidental writes at compile time to
    these shared resources.

    Signed-off-by: Arjan van de Ven
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Arjan van de Ven
     

11 Feb, 2007

1 commit