Commit 3795da47 authored by Wong Hoi Sing Edison's avatar Wong Hoi Sing Edison Committed by David S. Miller

[TCP] tcp-lp: bug fix for oops in 2.6.18-rc6

Sorry that the patch submited yesterday still contain a small bug.
This version have already been test for hours with BT connections. The
oops is now difficult to reproduce.
Signed-off-by: default avatarWong Hoi Sing Edison <hswong3i@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 485c2967
...@@ -3,13 +3,8 @@ ...@@ -3,13 +3,8 @@
* *
* TCP Low Priority is a distributed algorithm whose goal is to utilize only * TCP Low Priority is a distributed algorithm whose goal is to utilize only
* the excess network bandwidth as compared to the ``fair share`` of * the excess network bandwidth as compared to the ``fair share`` of
* bandwidth as targeted by TCP. Available from: * bandwidth as targeted by TCP.
* http://www.ece.rice.edu/~akuzma/Doc/akuzma/TCP-LP.pdf
*
* Original Author:
* Aleksandar Kuzmanovic <akuzma@northwestern.edu>
* *
* See http://www-ece.rice.edu/networks/TCP-LP/ for their implementation.
* As of 2.6.13, Linux supports pluggable congestion control algorithms. * As of 2.6.13, Linux supports pluggable congestion control algorithms.
* Due to the limitation of the API, we take the following changes from * Due to the limitation of the API, we take the following changes from
* the original TCP-LP implementation: * the original TCP-LP implementation:
...@@ -24,11 +19,20 @@ ...@@ -24,11 +19,20 @@
* o OWD is handled in relative format, where local time stamp will in * o OWD is handled in relative format, where local time stamp will in
* tcp_time_stamp format. * tcp_time_stamp format.
* *
* Port from 2.4.19 to 2.6.16 as module by: * Original Author:
* Wong Hoi Sing Edison <hswong3i@gmail.com> * Aleksandar Kuzmanovic <akuzma@northwestern.edu>
* Hung Hing Lun <hlhung3i@gmail.com> * Available from:
* http://www.ece.rice.edu/~akuzma/Doc/akuzma/TCP-LP.pdf
* Original implementation for 2.4.19:
* http://www-ece.rice.edu/networks/TCP-LP/
*
* 2.6.x module Authors:
* Wong Hoi Sing, Edison <hswong3i@gmail.com>
* Hung Hing Lun, Mike <hlhung3i@gmail.com>
* SourceForge project page:
* http://tcp-lp-mod.sourceforge.net/
* *
* Version: $Id: tcp_lp.c,v 1.22 2006-05-02 18:18:19 hswong3i Exp $ * Version: $Id: tcp_lp.c,v 1.24 2006/09/05 20:22:53 hswong3i Exp $
*/ */
#include <linux/config.h> #include <linux/config.h>
...@@ -153,16 +157,19 @@ static u32 tcp_lp_remote_hz_estimator(struct sock *sk) ...@@ -153,16 +157,19 @@ static u32 tcp_lp_remote_hz_estimator(struct sock *sk)
if (m < 0) if (m < 0)
m = -m; m = -m;
if (rhz != 0) { if (rhz > 0) {
m -= rhz >> 6; /* m is now error in remote HZ est */ m -= rhz >> 6; /* m is now error in remote HZ est */
rhz += m; /* 63/64 old + 1/64 new */ rhz += m; /* 63/64 old + 1/64 new */
} else } else
rhz = m << 6; rhz = m << 6;
out:
/* record time for successful remote HZ calc */ /* record time for successful remote HZ calc */
if (rhz > 0)
lp->flag |= LP_VALID_RHZ; lp->flag |= LP_VALID_RHZ;
else
lp->flag &= ~LP_VALID_RHZ;
out:
/* record reference time stamp */ /* record reference time stamp */
lp->remote_ref_time = tp->rx_opt.rcv_tsval; lp->remote_ref_time = tp->rx_opt.rcv_tsval;
lp->local_ref_time = tp->rx_opt.rcv_tsecr; lp->local_ref_time = tp->rx_opt.rcv_tsecr;
...@@ -333,6 +340,6 @@ static void __exit tcp_lp_unregister(void) ...@@ -333,6 +340,6 @@ static void __exit tcp_lp_unregister(void)
module_init(tcp_lp_register); module_init(tcp_lp_register);
module_exit(tcp_lp_unregister); module_exit(tcp_lp_unregister);
MODULE_AUTHOR("Wong Hoi Sing Edison, Hung Hing Lun"); MODULE_AUTHOR("Wong Hoi Sing Edison, Hung Hing Lun Mike");
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
MODULE_DESCRIPTION("TCP Low Priority"); MODULE_DESCRIPTION("TCP Low Priority");
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment