From owner-svn-src-user@FreeBSD.ORG Mon Nov 5 09:23:22 2012 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 3B02AD88; Mon, 5 Nov 2012 09:23:22 +0000 (UTC) (envelope-from andre@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 20CC38FC0A; Mon, 5 Nov 2012 09:23:22 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id qA59NLrT068771; Mon, 5 Nov 2012 09:23:21 GMT (envelope-from andre@svn.freebsd.org) Received: (from andre@localhost) by svn.freebsd.org (8.14.5/8.14.5/Submit) id qA59NLSe068769; Mon, 5 Nov 2012 09:23:21 GMT (envelope-from andre@svn.freebsd.org) Message-Id: <201211050923.qA59NLSe068769@svn.freebsd.org> From: Andre Oppermann Date: Mon, 5 Nov 2012 09:23:21 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r242602 - user/andre/tcp_workqueue/sys/netinet X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 05 Nov 2012 09:23:22 -0000 Author: andre Date: Mon Nov 5 09:23:21 2012 New Revision: 242602 URL: http://svnweb.freebsd.org/changeset/base/242602 Log: Partial fix for window update problems. Modified: user/andre/tcp_workqueue/sys/netinet/tcp_output.c Modified: user/andre/tcp_workqueue/sys/netinet/tcp_output.c ============================================================================== --- user/andre/tcp_workqueue/sys/netinet/tcp_output.c Mon Nov 5 09:13:06 2012 (r242601) +++ user/andre/tcp_workqueue/sys/netinet/tcp_output.c Mon Nov 5 09:23:21 2012 (r242602) @@ -228,7 +228,7 @@ again: tso = 0; mtu = 0; off = tp->snd_nxt - tp->snd_una; - sendwin = min(tp->snd_wnd, tp->snd_cwnd); + sendwin = ulmax(ulmin(tp->snd_wnd - off, tp->snd_cwnd), 0); flags = tcp_outflags[tp->t_state]; /* @@ -249,7 +249,7 @@ again: (p = tcp_sack_output(tp, &sack_bytes_rxmt))) { long cwin; - cwin = min(tp->snd_wnd, tp->snd_cwnd) - sack_bytes_rxmt; + cwin = ulmin(tp->snd_wnd - off, tp->snd_cwnd) - sack_bytes_rxmt; if (cwin < 0) cwin = 0; /* Do not retransmit SACK segments beyond snd_recover */ @@ -355,7 +355,7 @@ after_sack_rexmit: * sending new data, having retransmitted all the * data possible in the scoreboard. */ - len = ((long)ulmin(so->so_snd.sb_cc, tp->snd_wnd) + len = ((long)ulmin(so->so_snd.sb_cc, tp->snd_wnd - off) - off); /* * Don't remove this (len > 0) check !