From owner-p4-projects@FreeBSD.ORG Sun Feb 10 01:06:02 2008 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 7282B16A41A; Sun, 10 Feb 2008 01:06:02 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 2D8B916A46B for ; Sun, 10 Feb 2008 01:06:02 +0000 (UTC) (envelope-from kmacy@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 1E36913C457 for ; Sun, 10 Feb 2008 01:06:02 +0000 (UTC) (envelope-from kmacy@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.1/8.14.1) with ESMTP id m1A161tm026119 for ; Sun, 10 Feb 2008 01:06:01 GMT (envelope-from kmacy@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.1/8.14.1/Submit) id m1A1610O026116 for perforce@freebsd.org; Sun, 10 Feb 2008 01:06:01 GMT (envelope-from kmacy@freebsd.org) Date: Sun, 10 Feb 2008 01:06:01 GMT Message-Id: <200802100106.m1A1610O026116@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to kmacy@freebsd.org using -f From: Kip Macy To: Perforce Change Reviews Cc: Subject: PERFORCE change 135132 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 10 Feb 2008 01:06:03 -0000 http://perforce.freebsd.org/chv.cgi?CH=135132 Change 135132 by kmacy@kmacy:storage:toehead on 2008/02/10 01:05:03 t3_cancel_ubuf should be checking against SBS_CANTRCVMORE Affected files ... .. //depot/projects/toehead/sys/dev/cxgb/ulp/tom/cxgb_ddp.c#10 edit Differences ... ==== //depot/projects/toehead/sys/dev/cxgb/ulp/tom/cxgb_ddp.c#10 (text+ko) ==== @@ -384,13 +384,14 @@ struct ddp_state *p = &toep->tp_ddp_state; int ubuf_pending = t3_ddp_ubuf_pending(toep); struct socket *so = toeptoso(toep); + int err = 0, count=0; if (p->ubuf == NULL) return; SOCKBUF_LOCK_ASSERT(&so->so_rcv); p->cancel_ubuf = 1; - while (ubuf_pending && !(so->so_state & (SS_ISDISCONNECTING|SS_ISDISCONNECTED))) { + while (ubuf_pending && !(so->so_rcv.sb_state & SBS_CANTRCVMORE)) { #ifdef T3_TRACE T3_TRACE3(TB(p), "t3_cancel_ubuf: flags0 0x%x flags1 0x%x get_tcb_count %d", @@ -405,17 +406,18 @@ p->get_tcb_count); if (p->get_tcb_count == 0) t3_cancel_ddpbuf(toep, p->cur_buf); - else { - int err = 0, count=0; - while (p->get_tcb_count && !(so->so_state & (SS_ISDISCONNECTING|SS_ISDISCONNECTED))) { - if (count & 0xffff) - CTR4(KTR_TCB, "waiting err=%d get_tcb_count=%d timeo=%d so=%p\n", - err, p->get_tcb_count, so->so_rcv.sb_timeo, so); - count++; - err = sbwait(&so->so_rcv); - } + else + CTR5(KTR_TOM, "waiting err=%d get_tcb_count=%d timeo=%d so=%p SBS_CANTRCVMORE=%d", + err, p->get_tcb_count, so->so_rcv.sb_timeo, so, + !!(so->so_rcv.sb_state & SBS_CANTRCVMORE)); + + while (p->get_tcb_count && !(so->so_rcv.sb_state & SBS_CANTRCVMORE)) { + if (count & 0xfffffff) + CTR5(KTR_TOM, "waiting err=%d get_tcb_count=%d timeo=%d so=%p count=%d", + err, p->get_tcb_count, so->so_rcv.sb_timeo, so, count); + count++; + err = sbwait(&so->so_rcv); } - ubuf_pending = t3_ddp_ubuf_pending(toep); } p->cancel_ubuf = 0;