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;
--
⑨