Date: Mon, 27 Apr 2009 15:31:28 GMT From: Andrew Thompson <thompsa@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 161174 for review Message-ID: <200904271531.n3RFVSbE048139@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=161174 Change 161174 by thompsa@thompsa_burger on 2009/04/27 15:30:34 Catch up with changes in HEAD - Hoist 802.11 encapsulation up into net80211 - Eiminate ic_myaddr so changing the mac address of a device works correctly Affected files ... .. //depot/projects/vap/sys/dev/bwi/if_bwi.c#24 edit Differences ... ==== //depot/projects/vap/sys/dev/bwi/if_bwi.c#24 (text+ko) ==== @@ -361,6 +361,7 @@ struct bwi_phy *phy; int i, error; uint8_t bands; + uint8_t macaddr[IEEE80211_ADDR_LEN]; BWI_LOCK_INIT(sc); @@ -482,13 +483,13 @@ setbit(&bands, IEEE80211_MODE_11G); } - bwi_get_eaddr(sc, BWI_SPROM_11BG_EADDR, ic->ic_myaddr); - if (IEEE80211_IS_MULTICAST(ic->ic_myaddr)) { - bwi_get_eaddr(sc, BWI_SPROM_11A_EADDR, ic->ic_myaddr); - if (IEEE80211_IS_MULTICAST(ic->ic_myaddr)) { + bwi_get_eaddr(sc, BWI_SPROM_11BG_EADDR, macaddr); + if (IEEE80211_IS_MULTICAST(macaddr)) { + bwi_get_eaddr(sc, BWI_SPROM_11A_EADDR, macaddr); + if (IEEE80211_IS_MULTICAST(macaddr)) { device_printf(dev, "invalid MAC address: %6D\n", - ic->ic_myaddr, ":"); + macaddr, ":"); } } } else if (phy->phy_mode == IEEE80211_MODE_11A) { @@ -514,7 +515,7 @@ IEEE80211_C_WPA | IEEE80211_C_MONITOR; ic->ic_opmode = IEEE80211_M_STA; - ieee80211_ifattach(ic); + ieee80211_ifattach(ic, macaddr); ic->ic_headroom = sizeof(struct bwi_txbuf_hdr); @@ -1263,11 +1264,9 @@ } bwi_bbp_power_on(sc, BWI_CLOCK_MODE_DYN); - - bcopy(IF_LLADDR(ifp), ic->ic_myaddr, sizeof(ic->ic_myaddr)); bwi_set_bssid(sc, bwi_zero_addr); /* Clear BSSID */ - bwi_set_addr_filter(sc, BWI_ADDR_FILTER_MYADDR, ic->ic_myaddr); + bwi_set_addr_filter(sc, BWI_ADDR_FILTER_MYADDR, IF_LLADDR(ifp)); bwi_mac_reset_hwkeys(mac); @@ -1407,13 +1406,6 @@ break; ni = (struct ieee80211_node *) m->m_pkthdr.rcvif; - m = ieee80211_encap(ni, m); - if (m == NULL) { - ieee80211_free_node(ni); - ifp->if_oerrors++; - continue; - } - wh = mtod(m, struct ieee80211_frame *); if (wh->i_fc[1] & IEEE80211_FC1_WEP) { k = ieee80211_crypto_encap(ni, m); @@ -3711,7 +3703,7 @@ bwi_set_addr_filter(sc, BWI_ADDR_FILTER_BSSID, bssid); - bcopy(ic->ic_myaddr, buf.myaddr, sizeof(buf.myaddr)); + bcopy(IF_LLADDR(ifp), buf.myaddr, sizeof(buf.myaddr)); bcopy(bssid, buf.bssid, sizeof(buf.bssid)); n = sizeof(buf) / sizeof(val);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200904271531.n3RFVSbE048139>