Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 11 Nov 2013 09:08:23 +0000 (UTC)
From:      Adrian Chadd <adrian@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r257951 - head/sys/dev/iwn
Message-ID:  <201311110908.rAB98NH0069315@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: adrian
Date: Mon Nov 11 09:08:22 2013
New Revision: 257951
URL: http://svnweb.freebsd.org/changeset/base/257951

Log:
  If A-MPDU transmission fails entirely, then no BA is received from the
  NIC and pushed up to the driver.  Unfortunately this means there's
  no rate control notification done.  Thus, if the rate control code
  makes a decision that hits a crappy rate that can't succeed, the
  rate code would never lower the rate and packet loss would continue.
  
  So, fake some rate control notification in this case.

Modified:
  head/sys/dev/iwn/if_iwn.c

Modified: head/sys/dev/iwn/if_iwn.c
==============================================================================
--- head/sys/dev/iwn/if_iwn.c	Mon Nov 11 08:56:40 2013	(r257950)
+++ head/sys/dev/iwn/if_iwn.c	Mon Nov 11 09:08:22 2013	(r257951)
@@ -2987,12 +2987,24 @@ iwn_ampdu_tx_done(struct iwn_softc *sc, 
 
 	DPRINTF(sc, IWN_DEBUG_TRACE, "->%s begin\n", __func__);
 
-#ifdef NOT_YET
 	if (nframes == 1) {
-		if ((*status & 0xff) != 1 && (*status & 0xff) != 2)
+		if ((*status & 0xff) != 1 && (*status & 0xff) != 2) {
+#ifdef	NOT_YET
 			printf("ieee80211_send_bar()\n");
-	}
 #endif
+			/*
+			 * If we completely fail a transmit, make sure a
+			 * notification is pushed up to the rate control
+			 * layer.
+			 */
+			tap = sc->qid2tap[qid];
+			tid = tap->txa_tid;
+			wn = (void *)tap->txa_ni;
+			ni = tap->txa_ni;
+			ieee80211_ratectl_tx_complete(ni->ni_vap, ni,
+			    IEEE80211_RATECTL_TX_FAILURE, &nframes, NULL);
+		}
+	}
 
 	bitmap = 0;
 	start = idx;



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201311110908.rAB98NH0069315>