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:
parent
f39374b47e
commit
5c0106b7cf
|
@ -1723,6 +1723,8 @@ rxon(Ether *edev, Wnode *bss)
|
||||||
filter = FilterNoDecrypt | FilterMulticast | FilterBeacon;
|
filter = FilterNoDecrypt | FilterMulticast | FilterBeacon;
|
||||||
if(ctlr->prom){
|
if(ctlr->prom){
|
||||||
filter |= FilterPromisc;
|
filter |= FilterPromisc;
|
||||||
|
if(bss != nil)
|
||||||
|
ctlr->channel = bss->channel;
|
||||||
bss = nil;
|
bss = nil;
|
||||||
}
|
}
|
||||||
if(bss != nil){
|
if(bss != nil){
|
||||||
|
@ -1843,10 +1845,8 @@ transmit(Wifi *wifi, Wnode *wn, Block *b)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(ctlr->prom == 0)
|
if((wn->channel != ctlr->channel)
|
||||||
if(wn->aid != ctlr->aid
|
|| (!ctlr->prom && (wn->aid != ctlr->aid || memcmp(wn->bssid, ctlr->bssid, Eaddrlen) != 0)))
|
||||||
|| wn->channel != ctlr->channel
|
|
||||||
|| memcmp(wn->bssid, ctlr->bssid, Eaddrlen) != 0)
|
|
||||||
rxon(edev, wn);
|
rxon(edev, wn);
|
||||||
|
|
||||||
if(b == nil){
|
if(b == nil){
|
||||||
|
|
Loading…
Reference in a new issue