PERFORCE change 161174 for review
Andrew Thompson
thompsa at FreeBSD.org
Mon Apr 27 15:31:31 UTC 2009
http://perforce.freebsd.org/chv.cgi?CH=161174
Change 161174 by thompsa at 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);
More information about the p4-projects
mailing list