merge
This commit is contained in:
commit
60cbbb123b
4 changed files with 26 additions and 9 deletions
|
@ -1845,7 +1845,12 @@ rxon(Ether *edev, Wnode *bss)
|
|||
ctlr->channel = bss->channel;
|
||||
bss = nil;
|
||||
}
|
||||
flags = RFlagTSF | RFlagCTSToSelf | RFlag24Ghz | RFlagAuto;
|
||||
if(bss != nil){
|
||||
if(bss->cap & (1<<5))
|
||||
flags |= RFlagShPreamble;
|
||||
if(bss->cap & (1<<10))
|
||||
flags |= RFlagShSlot;
|
||||
ctlr->channel = bss->channel;
|
||||
memmove(ctlr->bssid, bss->bssid, Eaddrlen);
|
||||
ctlr->aid = bss->aid;
|
||||
|
@ -1861,7 +1866,6 @@ rxon(Ether *edev, Wnode *bss)
|
|||
ctlr->bcastnodeid = -1;
|
||||
ctlr->bssnodeid = -1;
|
||||
}
|
||||
flags = RFlagTSF | RFlagCTSToSelf | RFlag24Ghz | RFlagAuto;
|
||||
|
||||
if(ctlr->aid != 0)
|
||||
setled(ctlr, 2, 0, 1); /* on when associated */
|
||||
|
|
|
@ -1318,10 +1318,12 @@ rxon(Ether *edev, Wnode *bss)
|
|||
{
|
||||
u32int tmp;
|
||||
Ctlr *ctlr;
|
||||
int cap;
|
||||
|
||||
ctlr = edev->ctlr;
|
||||
|
||||
if(bss != nil){
|
||||
cap = bss->cap;
|
||||
ctlr->channel = bss->channel;
|
||||
memmove(ctlr->bssid, bss->bssid, Eaddrlen);
|
||||
ctlr->aid = bss->aid;
|
||||
|
@ -1332,6 +1334,7 @@ rxon(Ether *edev, Wnode *bss)
|
|||
}else
|
||||
ctlr->bcastnodeid = -1;
|
||||
}else{
|
||||
cap = 0;
|
||||
memmove(ctlr->bssid, edev->bcast, Eaddrlen);
|
||||
ctlr->aid = 0;
|
||||
ctlr->bcastnodeid = -1;
|
||||
|
@ -1377,14 +1380,13 @@ rxon(Ether *edev, Wnode *bss)
|
|||
/* update slot */
|
||||
tmp = csr32r(ctlr, BkoffSlotCfg);
|
||||
tmp &= ~0xff;
|
||||
tmp |= /* (ic->ic_flags & IEEE80211_F_SHSLOT) ? 9 : */ 20;
|
||||
tmp |= (cap & (1<<10)) ? 9 : 20;
|
||||
csr32w(ctlr, BkoffSlotCfg, tmp);
|
||||
|
||||
/* set TX preamble */
|
||||
tmp = csr32r(ctlr, AutoRspCfg);
|
||||
tmp &= ~CckShortEn;
|
||||
/* if(sc->sc_ic.ic_flags & IEEE80211_F_SHPREAMBLE)
|
||||
tmp |= CckShortEn; */
|
||||
if(cap & (1<<5)) tmp |= CckShortEn;
|
||||
csr32w(ctlr, AutoRspCfg, tmp);
|
||||
|
||||
/* set basic rates */
|
||||
|
|
|
@ -1304,7 +1304,12 @@ rxon(Ether *edev, Wnode *bss)
|
|||
ctlr->channel = bss->channel;
|
||||
bss = nil;
|
||||
}
|
||||
flags = RFlagTSF | RFlag24Ghz | RFlagAuto;
|
||||
if(bss != nil){
|
||||
if(bss->cap & (1<<5))
|
||||
flags |= RFlagShPreamble;
|
||||
if(bss->cap & (1<<10))
|
||||
flags |= RFlagShSlot;
|
||||
ctlr->channel = bss->channel;
|
||||
memmove(ctlr->bssid, bss->bssid, Eaddrlen);
|
||||
ctlr->aid = bss->aid;
|
||||
|
@ -1319,7 +1324,6 @@ rxon(Ether *edev, Wnode *bss)
|
|||
ctlr->bcastnodeid = -1;
|
||||
ctlr->bssnodeid = -1;
|
||||
}
|
||||
flags = RFlagTSF | RFlag24Ghz | RFlagAuto;
|
||||
|
||||
if(ctlr->aid != 0)
|
||||
setled(ctlr, 2, 0, 1); /* on when associated */
|
||||
|
|
|
@ -320,7 +320,7 @@ sendassoc(Wifi *wifi, Wnode *bss)
|
|||
Wifipkt *w;
|
||||
Block *b;
|
||||
uchar *p;
|
||||
int n;
|
||||
int cap, n;
|
||||
|
||||
b = allocb(WIFIHDRSIZE + 512);
|
||||
w = (Wifipkt*)b->wp;
|
||||
|
@ -331,9 +331,16 @@ sendassoc(Wifi *wifi, Wnode *bss)
|
|||
memmove(w->a3, bss->bssid, Eaddrlen);
|
||||
b->wp += WIFIHDRSIZE;
|
||||
p = b->wp;
|
||||
*p++ = 1; /* capinfo */
|
||||
*p++ = 0;
|
||||
*p++ = 16; /* interval */
|
||||
|
||||
/* capinfo */
|
||||
cap = 1; // ESS
|
||||
cap |= (1<<5); // Short Preamble
|
||||
cap |= (1<<10) & bss->cap; // Short Slot Time
|
||||
*p++ = cap;
|
||||
*p++ = cap>>8;
|
||||
|
||||
/* interval */
|
||||
*p++ = 16;
|
||||
*p++ = 16>>8;
|
||||
|
||||
n = strlen(bss->ssid);
|
||||
|
|
Loading…
Reference in a new issue