code: plan9front

Download patch

ref: 34a0f4660d47cd34340fee4444af5b16ffef5d02
parent: b5655b7247a657bd4b590218a68ed99bbab318f6
author: cinap_lenrek <cinap_lenrek@felloff.net>
date: Fri Jul 10 14:50:37 EDT 2015

etheriwl: dont clear descriptors after completion

--- a/sys/src/9/pc/etheriwl.c
+++ b/sys/src/9/pc/etheriwl.c
@@ -2240,7 +2240,7 @@
 receive(Ctlr *ctlr)
 {
 	Block *b, *bb;
-	uchar *d, *dd, *cc;
+	uchar *d;
 	RXQ *rx;
 	TXQ *tx;
 	uint hw;
@@ -2275,11 +2275,6 @@
 			if(tx->n > 0){
 				bb = tx->b[idx];
 				tx->b[idx] = nil;
-				/* paranoia: clear tx descriptors */
-				dd = tx->d + idx*Tdscsize;
-				cc = tx->c + idx*Tcmdsize;
-				memset(dd, 0, Tdscsize);
-				memset(cc, 0, Tcmdsize);
 				tx->n--;
 
 				wakeup(tx);
@@ -2362,13 +2357,10 @@
 		case 197:	/* rx compressed ba */
 			break;
 		}
-
-		/* paranoia: clear the descriptor */
-		memset(b->rp, 0, Rdscsize);
 	}
+	csr32w(ctlr, FhRxWptr, ((hw+Nrx-1) % Nrx) & ~7);
 	if(bb != nil)
 		freeb(bb);
-	csr32w(ctlr, FhRxWptr, ((hw+Nrx-1) % Nrx) & ~7);
 }
 
 static void