From owner-p4-projects@FreeBSD.ORG Wed May 23 02:40:38 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id F1AB416A46C; Wed, 23 May 2007 02:40:37 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id AF7FF16A469 for ; Wed, 23 May 2007 02:40:37 +0000 (UTC) (envelope-from sam@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id A0A8813C46A for ; Wed, 23 May 2007 02:40:37 +0000 (UTC) (envelope-from sam@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l4N2eb2I017642 for ; Wed, 23 May 2007 02:40:37 GMT (envelope-from sam@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l4N2ebp4017635 for perforce@freebsd.org; Wed, 23 May 2007 02:40:37 GMT (envelope-from sam@freebsd.org) Date: Wed, 23 May 2007 02:40:37 GMT Message-Id: <200705230240.l4N2ebp4017635@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to sam@freebsd.org using -f From: Sam Leffler To: Perforce Change Reviews Cc: Subject: PERFORCE change 120231 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: Wed, 23 May 2007 02:40:38 -0000 http://perforce.freebsd.org/chv.cgi?CH=120231 Change 120231 by sam@sam_laptop on 2007/05/23 02:40:30 Fix some BAR recv issues: o discard retransmits o discard frames w/ seq# in front of the window (as can happen when the peer misses a BA and retransmits) Noticed by: Foo Tang Affected files ... .. //depot/projects/wifi/sys/net80211/ieee80211_ht.c#3 edit Differences ... ==== //depot/projects/wifi/sys/net80211/ieee80211_ht.c#3 (text+ko) ==== @@ -547,13 +547,20 @@ off = IEEE80211_SEQ_SUB(rxseq, rap->rxa_start); if (off >= rap->rxa_wnd) { /* - * Outside the window, flush the reorder q. + * Outside the window, flush the reorder q if + * not pulling the sequence # backward. The + * latter is typically caused by a dropped BA. */ IEEE80211_NOTE(ic, IEEE80211_MSG_INPUT | IEEE80211_MSG_11N, ni, "recv BAR outside BA win <%u:%u> rxseq %u tid %u", rap->rxa_start, IEEE80211_SEQ_ADD(rap->rxa_start, rap->rxa_wnd), rxseq, tid); + ic->ic_stats.is_ampdu_bar_oow++; + if (rxseq < rap->rxa_start) { + /* XXX stat? */ + return; + } if (rap->rxa_qframes != 0) { ic->ic_stats.is_ampdu_rx_oor += rap->rxa_qframes; ampdu_rx_flush(ni, rap, rap->rxa_wnd); @@ -561,10 +568,6 @@ ("lost %u data, %u frames on ampdu rx q", rap->rxa_qbytes, rap->rxa_qframes)); } - ic->ic_stats.is_ampdu_bar_oow++; - /* XXX need better check for pulling seq# backward */ - if (rxseq < rap->rxa_start) - return; } else if (rap->rxa_qframes != 0) { /* * Dispatch packets up to rxseq.