| Submitter | Douglas Leith |
|---|---|
| Date | Nov. 12, 2008, 8:58 a.m. |
| Message ID | <63599554-7243-4E44-BFEF-5B4B36743606@nuim.ie> |
| Download | mbox | patch |
| Permalink | /patch/8341/ |
| State | Accepted |
| Delegated to: | David Miller |
| Headers | show |
Comments
From: Douglas Leith <Doug.Leith@nuim.ie> Date: Wed, 12 Nov 2008 08:58:18 +0000 > This patch fixes a minor bug in tcp_htcp.c which has been > highlighted by Lachlan Andrew and Lawrence Stewart. Currently, the > time since the last congestion event, which is stored in variable > last_cong, is reset whenever there is a state change into > TCP_CA_Open. This includes transitions of the type > TCP_CA_Open->TCP_CA_Disorder->TCP_CA_Open which are not associated > with backoff of cwnd. The patch changes last_cong to be updated > only on transitions into TCP_CA_Open that occur after experiencing > the congestion-related states TCP_CA_Loss, TCP_CA_Recovery, > TCP_CA_CWR. > > Signed-off-by: Doug Leith <doug.leith@nuim.ie> Applied, but I still had to fix up a bunch of details :-( + ca->undo_last_cong = 0; That line had trailing whitespace. + case TCP_CA_Open: That one too. + if (ca->undo_last_cong) { That line had an initial set of space characters, instead of pure leading tab characters. + ca->last_cong = jiffies; More trailing whitespace. + break; And some more trailing whitespace. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Patch
--- net/ipv4/tcp_htcp.c 2008-11-05 15:50:18.000000000 +0000 +++ net/ipv4/tcp_htcp.c.new 2008-11-11 15:20:31.000000000 +0000 @@ -71,5 +71,8 @@ static u32 htcp_cwnd_undo(struct sock *s - ca->last_cong = ca->undo_last_cong; - ca->maxRTT = ca->undo_maxRTT; - ca->old_maxB = ca->undo_old_maxB; + if (ca->undo_last_cong) { + ca->last_cong = ca->undo_last_cong; + ca->maxRTT = ca->undo_maxRTT; + ca->old_maxB = ca->undo_old_maxB; + ca->undo_last_cong = 0; + } @@ -267,8 +270,11 @@ static void htcp_state(struct sock *sk, switch (new_state) { - case TCP_CA_Open: + case TCP_CA_Open: { struct htcp *ca = inet_csk_ca(sk); - ca->last_cong = jiffies; + if (ca->undo_last_cong) { + ca->last_cong = jiffies; + ca->undo_last_cong = 0; + } } - break; + break; case TCP_CA_CWR:
This patch fixes a minor bug in tcp_htcp.c which has been highlighted by Lachlan Andrew and Lawrence Stewart. Currently, the time since the last congestion event, which is stored in variable last_cong, is reset whenever there is a state change into TCP_CA_Open. This includes transitions of the type TCP_CA_Open->TCP_CA_Disorder->TCP_CA_Open which are not associated with backoff of cwnd. The patch changes last_cong to be updated only on transitions into TCP_CA_Open that occur after experiencing the congestion-related states TCP_CA_Loss, TCP_CA_Recovery, TCP_CA_CWR. Signed-off-by: Doug Leith <doug.leith@nuim.ie> --- Resending with patch as attachment. Hope this does the trick.