linux/net/dccp/ccids
Gerrit Renker f76fd327a8 dccp ccid-3: Runtime verification of timer resolution
The DCCP base time resolution is 10 microseconds (RFC 4340, 13.1 ... 13.3).

Using a timer with a lower resolution was found to trigger the following
bug warnings/problems on high-speed networks (e.g. local loopback):
 * RTT samples are rounded down to 0 if below resolution;
 * in some cases, negative RTT samples were observed;
 * the CCID-3 feedback timer complains that the feedback interval is 0,
   since the feedback interval is in the order of 1 RTT or less and RTT
   measurement rounded this down to 0;
On an Intel computer this will for instance happen when using a
boot-time parameter of "clocksource=jiffies".

The following system log messages were observed:
  11:24:00 kernel: BUG: delta (0) <= 0 at ccid3_hc_rx_send_feedback()
  11:26:12 kernel: BUG: delta (0) <= 0 at ccid3_hc_rx_send_feedback()
  11:26:30 kernel: dccp_sample_rtt: unusable RTT sample 0, using min
  11:26:30 last message repeated 5 times

This patch defines a global constant for the time resolution, adds this in
timer.c, and checks the available clock resolution at CCID-3 module load time.

When the resolution is worse than 10 microseconds, module loading exits with
a message "socket type not supported".

Signed-off-by: Gerrit Renker <gerrit@erg.abdn.ac.uk>
2008-09-04 07:45:40 +02:00
..
lib dccp tfrc/ccid-3: Computing Loss Rate from Loss Event Rate 2008-09-04 07:45:34 +02:00
Kconfig dccp ccid-2: Remove old infrastructure 2008-09-04 07:45:37 +02:00
Makefile
ccid2.c tcp/dccp: Consolidate common code for RFC 3390 conversion 2008-09-04 07:45:39 +02:00
ccid2.h dccp ccid-2: Replace broken RTT estimator with better algorithm 2008-09-04 07:45:39 +02:00
ccid3.c dccp ccid-3: Runtime verification of timer resolution 2008-09-04 07:45:40 +02:00
ccid3.h dccp ccid-3: Remove dead states 2008-09-04 07:45:35 +02:00