git: 9front

Download patch

ref: 75e386ea714adb2a8ff3589582877adf74b74457
parent: 3215c210a699e2a1711bb0a140cb765df5de90fd
author: cinap_lenrek <cinap_lenrek@gmx.de>
date: Fri Feb 15 23:42:42 EST 2013

etheriwl: use first available antenna from eeprom txantmask instead of hardcode to antenna A

--- a/sys/src/9/pc/etheriwl.c
+++ b/sys/src/9/pc/etheriwl.c
@@ -1725,7 +1725,7 @@
 static void
 transmit(Wifi *wifi, Wnode *wn, Block *b)
 {
-	int flags, nodeid, rate;
+	int flags, nodeid, rate, ant;
 	uchar c[Tcmdsize], *p;
 	Ether *edev;
 	Ctlr *ctlr;
@@ -1773,6 +1773,11 @@
 	}
 	qunlock(ctlr);
 
+	/* select first available antenna */
+	ant = ctlr->rfcfg.txantmask & 7;
+	ant |= (ant == 0);
+	ant = ((ant - 1) & ant) ^ ant;
+
 	memset(p = c, 0, sizeof(c));
 	put16(p, BLEN(b));
 	p += 2;
@@ -1783,7 +1788,7 @@
 	p += 4;		/* scratch */
 
 	*p++ = ratetab[rate].plcp;
-	*p++ = ratetab[rate].flags | (1<<6);
+	*p++ = ratetab[rate].flags | (ant<<6);
 
 	p += 2;		/* xflags */
 	*p++ = nodeid;
--