etheriwl: allow switching channels in promisc mode

promisc mode prevented the call to rxon() in transmit
possibly causing association to fail while running snoopy.
This commit is contained in:
cinap_lenrek 2013-06-23 18:27:17 +02:00
parent f39374b47e
commit 5c0106b7cf

View file

@ -1723,6 +1723,8 @@ rxon(Ether *edev, Wnode *bss)
filter = FilterNoDecrypt | FilterMulticast | FilterBeacon;
if(ctlr->prom){
filter |= FilterPromisc;
if(bss != nil)
ctlr->channel = bss->channel;
bss = nil;
}
if(bss != nil){
@ -1843,10 +1845,8 @@ transmit(Wifi *wifi, Wnode *wn, Block *b)
return;
}
if(ctlr->prom == 0)
if(wn->aid != ctlr->aid
|| wn->channel != ctlr->channel
|| memcmp(wn->bssid, ctlr->bssid, Eaddrlen) != 0)
if((wn->channel != ctlr->channel)
|| (!ctlr->prom && (wn->aid != ctlr->aid || memcmp(wn->bssid, ctlr->bssid, Eaddrlen) != 0)))
rxon(edev, wn);
if(b == nil){