diff options
author | imp <imp@FreeBSD.org> | 2002-06-24 07:50:41 +0000 |
---|---|---|
committer | imp <imp@FreeBSD.org> | 2002-06-24 07:50:41 +0000 |
commit | 72d0a6341665316380f8aef1d5f973cac35ebfdd (patch) | |
tree | be89e4c235bba6c7c5a88561216460a92cda189e /sys | |
parent | 7d70f5926fc592b54ee5f411f7c38140722eda81 (diff) | |
download | FreeBSD-src-72d0a6341665316380f8aef1d5f973cac35ebfdd.zip FreeBSD-src-72d0a6341665316380f8aef1d5f973cac35ebfdd.tar.gz |
On REASREQ packets, handled them earlier in processing the association
request. We need to eat the MAC address of the packet before we go
looking at the SSID and such. Doing do is sufficient to make Cisco
cards assocaite with prism II cards.
The submitter says that Linux does the same thing.
Submitted by: jhay
Diffstat (limited to 'sys')
-rw-r--r-- | sys/dev/wi/wi_hostap.c | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/sys/dev/wi/wi_hostap.c b/sys/dev/wi/wi_hostap.c index 905e991..7c6633e 100644 --- a/sys/dev/wi/wi_hostap.c +++ b/sys/dev/wi/wi_hostap.c @@ -693,6 +693,17 @@ wihap_assoc_req(struct wi_softc *sc, struct wi_frame *rxfrm, /* Pull out request parameters. */ capinfo = take_hword(&pkt, &len); lstintvl = take_hword(&pkt, &len); + + if ((rxfrm->wi_frame_ctl & htole16(WI_FCTL_STYPE)) == + htole16(WI_STYPE_MGMT_REASREQ)) { + if (len < 6) + return; + /* Eat the MAC address of the current AP */ + take_hword(&pkt, &len); + take_hword(&pkt, &len); + take_hword(&pkt, &len); + } + if ((ssid_len = take_tlv(&pkt, &len, IEEE80211_ELEMID_SSID, ssid, sizeof(ssid) - 1))<0) return; @@ -701,13 +712,6 @@ wihap_assoc_req(struct wi_softc *sc, struct wi_frame *rxfrm, rates, sizeof(rates)))<0) return; - if ((rxfrm->wi_frame_ctl & htole16(WI_FCTL_STYPE)) == - htole16(WI_STYPE_MGMT_REASREQ)) { - /* Reassociation Request-- * Current AP. (Ignore?) */ - if (len < 6) - return; - } - if (sc->arpcom.ac_if.if_flags & IFF_DEBUG) printf("wihap_assoc_req: from station %6D\n", rxfrm->wi_addr2, ":"); |