Date: Fri, 10 Jul 2009 18:35:11 +0000 (UTC) From: Sam Leffler <sam@FreeBSD.org> To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r195577 - in projects/mesh11s/sys: conf net80211 Message-ID: <200907101835.n6AIZBWb028546@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: sam Date: Fri Jul 10 18:35:11 2009 New Revision: 195577 URL: http://svn.freebsd.org/changeset/base/195577 Log: add IEEE80211_SUPPORT_MESH knob to control inclusion of mesh support Modified: projects/mesh11s/sys/conf/files projects/mesh11s/sys/conf/options projects/mesh11s/sys/net80211/ieee80211.c projects/mesh11s/sys/net80211/ieee80211_ddb.c projects/mesh11s/sys/net80211/ieee80211_input.c projects/mesh11s/sys/net80211/ieee80211_node.c projects/mesh11s/sys/net80211/ieee80211_output.c projects/mesh11s/sys/net80211/ieee80211_proto.c projects/mesh11s/sys/net80211/ieee80211_scan_sta.c Modified: projects/mesh11s/sys/conf/files ============================================================================== --- projects/mesh11s/sys/conf/files Fri Jul 10 18:34:19 2009 (r195576) +++ projects/mesh11s/sys/conf/files Fri Jul 10 18:35:11 2009 (r195577) @@ -2246,10 +2246,10 @@ net80211/ieee80211_dfs.c optional wlan net80211/ieee80211_freebsd.c optional wlan net80211/ieee80211_hostap.c optional wlan net80211/ieee80211_ht.c optional wlan -net80211/ieee80211_hwmp.c optional wlan +net80211/ieee80211_hwmp.c optional wlan ieee80211_support_mesh net80211/ieee80211_input.c optional wlan net80211/ieee80211_ioctl.c optional wlan -net80211/ieee80211_mesh.c optional wlan +net80211/ieee80211_mesh.c optional wlan ieee80211_support_mesh net80211/ieee80211_monitor.c optional wlan net80211/ieee80211_node.c optional wlan net80211/ieee80211_output.c optional wlan Modified: projects/mesh11s/sys/conf/options ============================================================================== --- projects/mesh11s/sys/conf/options Fri Jul 10 18:34:19 2009 (r195576) +++ projects/mesh11s/sys/conf/options Fri Jul 10 18:35:11 2009 (r195577) @@ -804,6 +804,7 @@ INTR_FILTER IEEE80211_DEBUG opt_wlan.h IEEE80211_DEBUG_REFCNT opt_wlan.h IEEE80211_AMPDU_AGE opt_wlan.h +IEEE80211_SUPPORT_MESH opt_wlan.h IEEE80211_SUPPORT_SUPERG opt_wlan.h IEEE80211_SUPPORT_TDMA opt_wlan.h Modified: projects/mesh11s/sys/net80211/ieee80211.c ============================================================================== --- projects/mesh11s/sys/net80211/ieee80211.c Fri Jul 10 18:34:19 2009 (r195576) +++ projects/mesh11s/sys/net80211/ieee80211.c Fri Jul 10 18:35:11 2009 (r195577) @@ -74,7 +74,9 @@ const int ieee80211_opcap[IEEE80211_OPMO [IEEE80211_M_AHDEMO] = IEEE80211_C_AHDEMO, [IEEE80211_M_HOSTAP] = IEEE80211_C_HOSTAP, [IEEE80211_M_MONITOR] = IEEE80211_C_MONITOR, +#ifdef IEEE80211_SUPPORT_MBSS [IEEE80211_M_MBSS] = IEEE80211_C_MBSS, +#endif }; static const uint8_t ieee80211broadcastaddr[IEEE80211_ADDR_LEN] = Modified: projects/mesh11s/sys/net80211/ieee80211_ddb.c ============================================================================== --- projects/mesh11s/sys/net80211/ieee80211_ddb.c Fri Jul 10 18:34:19 2009 (r195576) +++ projects/mesh11s/sys/net80211/ieee80211_ddb.c Fri Jul 10 18:35:11 2009 (r195577) @@ -50,7 +50,9 @@ __FBSDID("$FreeBSD$"); #ifdef IEEE80211_SUPPORT_TDMA #include <net80211/ieee80211_tdma.h> #endif +#ifdef IEEE80211_SUPPORT_MESH #include <net80211/ieee80211_mesh.h> +#endif #include <ddb/ddb.h> #include <ddb/db_sym.h> @@ -78,7 +80,9 @@ static void _db_show_txparams(const char const struct ieee80211_txparam *tp); static void _db_show_ageq(const char *tag, const struct ieee80211_ageq *q); static void _db_show_stats(const struct ieee80211_stats *); +#ifdef IEEE80211_SUPPORT_MESH static void _db_show_mesh(const struct ieee80211_mesh_state *); +#endif DB_SHOW_COMMAND(sta, db_show_sta) { @@ -181,6 +185,7 @@ DB_SHOW_ALL_COMMAND(vaps, db_show_all_va } } +#ifdef IEEE80211_SUPPORT_MESH DB_SHOW_ALL_COMMAND(mesh, db_show_mesh) { const struct ieee80211_mesh_state *ms; @@ -192,6 +197,7 @@ DB_SHOW_ALL_COMMAND(mesh, db_show_mesh) ms = (const struct ieee80211_mesh_state *) addr; _db_show_mesh(ms); } +#endif /* IEEE80211_SUPPORT_MESH */ static void _db_show_txampdu(const char *sep, int ix, const struct ieee80211_tx_ampdu *tap) @@ -298,12 +304,12 @@ _db_show_sta(const struct ieee80211_node db_printf("\tinact %u inact_reload %u txrate %u\n", ni->ni_inact, ni->ni_inact_reload, ni->ni_txrate); - +#ifdef IEEE80211_SUPPORT_MESH _db_show_ssid("\tmeshid ", 0, ni->ni_meshidlen, ni->ni_meshid); db_printf(" mlstate %b mllid 0x%x mlpid 0x%x mlrcnt %u mltval %u\n", ni->ni_mlstate, IEEE80211_MESH_MLSTATE_BITS, ni->ni_mllid, ni->ni_mlpid, ni->ni_mlrcnt, ni->ni_mltval); - /* XXX wdsq */ +#endif } #ifdef IEEE80211_SUPPORT_TDMA @@ -851,6 +857,7 @@ _db_show_stats(const struct ieee80211_st { } +#ifdef IEEE80211_SUPPORT_MESH static void _db_show_mesh(const struct ieee80211_mesh_state *ms) { @@ -870,4 +877,5 @@ _db_show_mesh(const struct ieee80211_mes i++; } } +#endif /* IEEE80211_SUPPORT_MESH */ #endif /* DDB */ Modified: projects/mesh11s/sys/net80211/ieee80211_input.c ============================================================================== --- projects/mesh11s/sys/net80211/ieee80211_input.c Fri Jul 10 18:34:19 2009 (r195576) +++ projects/mesh11s/sys/net80211/ieee80211_input.c Fri Jul 10 18:35:11 2009 (r195577) @@ -46,7 +46,9 @@ __FBSDID("$FreeBSD$"); #include <net80211/ieee80211_var.h> #include <net80211/ieee80211_input.h> +#ifdef IEEE80211_SUPPORT_MESH #include <net80211/ieee80211_mesh.h> +#endif #include <net/bpf.h> @@ -231,12 +233,16 @@ ieee80211_deliver_data(struct ieee80211v struct mbuf * ieee80211_decap(struct ieee80211vap *vap, struct mbuf *m, int hdrlen) { +#ifdef IEEE80211_SUPPORT_MESH union { struct ieee80211_qosframe_addr4 wh4; uint8_t b[sizeof(struct ieee80211_qosframe_addr4) + sizeof(struct ieee80211_meshcntl_ae11)]; } whu; #define wh whu.wh4 +#else + struct ieee80211_qosframe_addr4 wh; +#endif struct ether_header *eh; struct llc *llc; @@ -568,12 +574,14 @@ ieee80211_parse_beacon(struct ieee80211_ case IEEE80211_ELEMID_HTINFO: scan->htinfo = frm; break; +#ifdef IEEE80211_SUPPORT_TDMA case IEEE80211_ELEMID_MESHID: scan->meshid = frm; break; case IEEE80211_ELEMID_MESHCONF: scan->meshconf = frm; break; +#endif case IEEE80211_ELEMID_VENDOR: if (iswpaoui(frm)) scan->wpa = frm; Modified: projects/mesh11s/sys/net80211/ieee80211_node.c ============================================================================== --- projects/mesh11s/sys/net80211/ieee80211_node.c Fri Jul 10 18:34:19 2009 (r195576) +++ projects/mesh11s/sys/net80211/ieee80211_node.c Fri Jul 10 18:35:11 2009 (r195577) @@ -367,9 +367,11 @@ ieee80211_create_ibss(struct ieee80211va if ((vap->iv_caps & IEEE80211_C_TDMA) == 0) #endif memset(ni->ni_bssid, 0, IEEE80211_ADDR_LEN); +#ifdef IEEE80211_SUPPORT_MESH } else if (vap->iv_opmode == IEEE80211_M_MBSS) { ni->ni_meshidlen = vap->iv_mesh->ms_idlen; memcpy(ni->ni_meshid, vap->iv_mesh->ms_id, ni->ni_meshidlen); +#endif } /* * Fix the channel and related attributes. @@ -795,8 +797,10 @@ ieee80211_sta_join(struct ieee80211vap * ieee80211_parse_htcap(ni, ni->ni_ies.htcap_ie); if (ni->ni_ies.htinfo_ie != NULL) ieee80211_parse_htinfo(ni, ni->ni_ies.htinfo_ie); +#ifdef IEEE80211_SUPPORT_MESH if (ni->ni_ies.meshid_ie != NULL) ieee80211_parse_meshid(ni, ni->ni_ies.meshid_ie); +#endif #ifdef IEEE80211_SUPPORT_TDMA if (ni->ni_ies.tdma_ie != NULL) ieee80211_parse_tdma(ni, ni->ni_ies.tdma_ie); @@ -927,9 +931,11 @@ ieee80211_ies_expand(struct ieee80211_ie case IEEE80211_ELEMID_HTCAP: ies->htcap_ie = ie; break; +#ifdef IEEE80211_SUPPORT_MESH case IEEE80211_ELEMID_MESHID: ies->meshid_ie = ie; break; +#endif } ielen -= 2 + ie[1]; ie += 2 + ie[1]; @@ -967,12 +973,13 @@ node_cleanup(struct ieee80211_node *ni) else if (ni->ni_ath_flags & IEEE80211_NODE_ATH) ieee80211_ff_node_cleanup(ni); #endif +#ifdef IEEE80211_SUPPORT_MESH /* * Cleanup any mesh-related state. */ if (vap->iv_opmode == IEEE80211_M_MBSS) ieee80211_mesh_node_cleanup(ni); - +#endif /* * Clear any staging queue entries. */ @@ -1112,9 +1119,10 @@ ieee80211_alloc_node(struct ieee80211_no ni->ni_inact = ni->ni_inact_reload; ni->ni_ath_defkeyix = 0x7fff; ieee80211_psq_init(&ni->ni_psq, "unknown"); +#ifdef IEEE80211_SUPPORT_MESH if (vap->iv_opmode == IEEE80211_M_MBSS) ieee80211_mesh_node_init(vap, ni); - +#endif IEEE80211_NODE_LOCK(nt); TAILQ_INSERT_TAIL(&nt->nt_node, ni, ni_list); LIST_INSERT_HEAD(&nt->nt_hash[hash], ni, ni_hash); @@ -1404,8 +1412,6 @@ ieee80211_init_neighbor(struct ieee80211 const struct ieee80211_frame *wh, const struct ieee80211_scanparams *sp) { - struct ieee80211vap *vap = ni->ni_vap; - ni->ni_esslen = sp->ssid[1]; memcpy(ni->ni_essid, sp->ssid + 2, sp->ssid[1]); IEEE80211_ADDR_COPY(ni->ni_bssid, wh->i_addr3); @@ -1417,9 +1423,10 @@ ieee80211_init_neighbor(struct ieee80211 ni->ni_fhindex = sp->fhindex; ni->ni_erp = sp->erp; ni->ni_timoff = sp->timoff; - if (vap->iv_opmode == IEEE80211_M_MBSS) +#ifdef IEEE80211_SUPPORT_MESH + if (ni->ni_vap->iv_opmode == IEEE80211_M_MBSS) ieee80211_mesh_init_neighbor(ni, wh, sp); - +#endif if (ieee80211_ies_init(&ni->ni_ies, sp->ies, sp->ies_len)) { ieee80211_ies_expand(&ni->ni_ies); if (ni->ni_ies.wme_ie != NULL) @@ -2553,6 +2560,7 @@ get_adhoc_rssi(void *arg, struct ieee802 } } +#ifdef IEEE80211_SUPPORT_MESH static void get_mesh_rssi(void *arg, struct ieee80211_node *ni) { @@ -2571,7 +2579,7 @@ get_mesh_rssi(void *arg, struct ieee8021 info->rssi_total += rssi; } } - +#endif /* IEEE80211_SUPPORT_MESH */ int8_t ieee80211_getrssi(struct ieee80211vap *vap) @@ -2591,9 +2599,11 @@ ieee80211_getrssi(struct ieee80211vap *v case IEEE80211_M_HOSTAP: /* average of all associated stations */ ieee80211_iterate_nodes(&ic->ic_sta, get_hostap_rssi, &info); break; +#ifdef IEEE80211_SUPPORT_MESH case IEEE80211_M_MBSS: /* average of all mesh neighbors */ ieee80211_iterate_nodes(&ic->ic_sta, get_mesh_rssi, &info); break; +#endif case IEEE80211_M_MONITOR: /* XXX */ case IEEE80211_M_STA: /* use stats from associated ap */ default: Modified: projects/mesh11s/sys/net80211/ieee80211_output.c ============================================================================== --- projects/mesh11s/sys/net80211/ieee80211_output.c Fri Jul 10 18:34:19 2009 (r195576) +++ projects/mesh11s/sys/net80211/ieee80211_output.c Fri Jul 10 18:35:11 2009 (r195577) @@ -218,7 +218,9 @@ ieee80211_start(struct ifnet *ifp) ieee80211_dwds_mcast(vap, m); } } +#ifdef IEEE80211_SUPPORT_MESH if (vap->iv_opmode != IEEE80211_M_MBSS) { +#endif ni = ieee80211_find_txnode(vap, eh->ether_dhost); if (ni == NULL) { /* NB: ieee80211_find_txnode does stat+msg */ @@ -238,6 +240,7 @@ ieee80211_start(struct ifnet *ifp) ieee80211_free_node(ni); continue; } +#ifdef IEEE80211_SUPPORT_MESH } else { ni = ieee80211_mesh_discover(vap, eh->ether_dhost, m); if (ni == NULL) { @@ -250,6 +253,7 @@ ieee80211_start(struct ifnet *ifp) continue; } } +#endif if ((ni->ni_flags & IEEE80211_NODE_PWR_MGT) && (m->m_flags & M_PWR_SAV) == 0) { @@ -525,6 +529,7 @@ ieee80211_send_setup( IEEE80211_ADDR_COPY(WH4(wh)->i_addr4, sa); break; case IEEE80211_M_MBSS: +#ifdef IEEE80211_SUPPORT_MESH /* XXX add support for proxied addresses */ if (IEEE80211_IS_MULTICAST(da)) { wh->i_fc[1] = IEEE80211_FC1_DIR_FROMDS; @@ -540,6 +545,7 @@ ieee80211_send_setup( IEEE80211_ADDR_COPY(wh->i_addr3, da); IEEE80211_ADDR_COPY(WH4(wh)->i_addr4, sa); } +#endif break; case IEEE80211_M_MONITOR: /* NB: to quiet compiler */ break; @@ -548,9 +554,11 @@ ieee80211_send_setup( wh->i_fc[1] = IEEE80211_FC1_DIR_NODS; IEEE80211_ADDR_COPY(wh->i_addr1, da); IEEE80211_ADDR_COPY(wh->i_addr2, sa); +#ifdef IEEE80211_SUPPORT_MESH if (vap->iv_opmode == IEEE80211_M_MBSS) IEEE80211_ADDR_COPY(wh->i_addr3, sa); else +#endif IEEE80211_ADDR_COPY(wh->i_addr3, bssid); } *(uint16_t *)&wh->i_dur[0] = 0; @@ -977,7 +985,10 @@ ieee80211_encap(struct ieee80211vap *vap { #define WH4(wh) ((struct ieee80211_frame_addr4 *)(wh)) struct ieee80211com *ic = ni->ni_ic; +#ifdef IEEE80211_SUPPORT_MESH struct ieee80211_mesh_state *ms = vap->iv_mesh; + struct ieee80211_meshcntl_ae11 *mc; +#endif struct ether_header eh; struct ieee80211_frame *wh; struct ieee80211_key *key; @@ -985,7 +996,6 @@ ieee80211_encap(struct ieee80211vap *vap int hdrsize, hdrspace, datalen, addqos, txfrag, is4addr; ieee80211_seq seqno; int meshhdrsize, meshae; - struct ieee80211_meshcntl_ae11 *mc; uint8_t *qos; /* @@ -1039,6 +1049,7 @@ ieee80211_encap(struct ieee80211vap *vap hdrsize = sizeof(struct ieee80211_qosframe); else hdrsize = sizeof(struct ieee80211_frame); +#ifdef IEEE80211_SUPPORT_MESH if (vap->iv_opmode == IEEE80211_M_MBSS) { /* * Mesh data frames are encapsulated according to the @@ -1072,6 +1083,7 @@ ieee80211_encap(struct ieee80211vap *vap meshhdrsize += 3*IEEE80211_ADDR_LEN; } } else { +#endif /* * 4-address frames need to be generated for: * o packets sent through a WDS vap (IEEE80211_M_WDS) @@ -1084,7 +1096,9 @@ ieee80211_encap(struct ieee80211vap *vap if (is4addr) hdrsize += IEEE80211_ADDR_LEN; meshhdrsize = meshae = 0; +#ifdef IEEE80211_SUPPORT_MESH } +#endif /* * Honor driver DATAPAD requirement. */ @@ -1162,6 +1176,7 @@ ieee80211_encap(struct ieee80211vap *vap IEEE80211_ADDR_COPY(wh->i_addr2, ni->ni_bssid); IEEE80211_ADDR_COPY(wh->i_addr3, eh.ether_shost); break; +#ifdef IEEE80211_SUPPORT_MESH case IEEE80211_M_MBSS: /* NB: offset by hdrspace to deal with DATAPAD */ mc = (struct ieee80211_meshcntl_ae11 *) @@ -1214,8 +1229,9 @@ ieee80211_encap(struct ieee80211vap *vap ms->ms_seq++; LE_WRITE_4(mc->mc_seq, ms->ms_seq); break; - case IEEE80211_M_MONITOR: +#endif case IEEE80211_M_WDS: /* NB: is4addr should always be true */ + default: goto bad; } if (m->m_flags & M_MORE_DATA) @@ -2222,8 +2238,10 @@ ieee80211_alloc_proberesp(struct ieee802 #ifdef IEEE80211_SUPPORT_SUPERG + sizeof(struct ieee80211_ath_ie) #endif +#ifdef IEEE80211_SUPPORT_MESH + 2 + IEEE80211_MESHID_LEN + sizeof(struct ieee80211_meshconf_ie) +#endif + (vap->iv_appie_proberesp != NULL ? vap->iv_appie_proberesp->ie_len : 0) ); @@ -2313,10 +2331,12 @@ ieee80211_alloc_proberesp(struct ieee802 #endif if (vap->iv_appie_proberesp != NULL) frm = add_appie(frm, vap->iv_appie_proberesp); +#ifdef IEEE80211_SUPPORT_MESH if (vap->iv_opmode == IEEE80211_M_MBSS) { frm = ieee80211_add_meshid(frm, vap); frm = ieee80211_add_meshconf(frm, vap); } +#endif m->m_pkthdr.len = m->m_len = frm - mtod(m, uint8_t *); return m; @@ -2619,10 +2639,12 @@ ieee80211_beacon_construct(struct mbuf * bo->bo_appie_len = vap->iv_appie_beacon->ie_len; frm = add_appie(frm, vap->iv_appie_beacon); } +#ifdef IEEE80211_SUPPORT_MESH if (vap->iv_opmode == IEEE80211_M_MBSS) { frm = ieee80211_add_meshid(frm, vap); frm = ieee80211_add_meshconf(frm, vap); } +#endif bo->bo_tim_trailer_len = frm - bo->bo_tim_trailer; bo->bo_csa_trailer_len = frm - bo->bo_csa; m->m_pkthdr.len = m->m_len = frm - mtod(m, uint8_t *); @@ -2635,7 +2657,6 @@ struct mbuf * ieee80211_beacon_alloc(struct ieee80211_node *ni, struct ieee80211_beacon_offsets *bo) { - static const uint8_t zerobssid[IEEE80211_ADDR_LEN]; struct ieee80211vap *vap = ni->ni_vap; struct ieee80211com *ic = ni->ni_ic; struct ifnet *ifp = vap->iv_ifp; @@ -2701,10 +2722,10 @@ ieee80211_beacon_alloc(struct ieee80211_ + (vap->iv_caps & IEEE80211_C_TDMA ? /* TDMA */ sizeof(struct ieee80211_tdma_param) : 0) #endif - + (vap->iv_opmode == IEEE80211_M_MBSS ? - 2 + ni->ni_meshidlen : 0) - + (vap->iv_opmode == IEEE80211_M_MBSS ? - sizeof(struct ieee80211_meshconf_ie) : 0) +#ifdef IEEE80211_SUPPORT_MESH + + 2 + ni->ni_meshidlen + + sizeof(struct ieee80211_meshconf_ie) +#endif + IEEE80211_MAX_APPIE ; m = ieee80211_getmgtframe(&frm, @@ -2726,9 +2747,12 @@ ieee80211_beacon_alloc(struct ieee80211_ *(uint16_t *)wh->i_dur = 0; IEEE80211_ADDR_COPY(wh->i_addr1, ifp->if_broadcastaddr); IEEE80211_ADDR_COPY(wh->i_addr2, vap->iv_myaddr); - if (vap->iv_opmode == IEEE80211_M_MBSS) +#ifdef IEEE80211_SUPPORT_MESH + if (vap->iv_opmode == IEEE80211_M_MBSS) { + static const uint8_t zerobssid[IEEE80211_ADDR_LEN]; IEEE80211_ADDR_COPY(wh->i_addr3, zerobssid); - else + } else +#endif IEEE80211_ADDR_COPY(wh->i_addr3, ni->ni_bssid); *(uint16_t *)wh->i_seq = 0; Modified: projects/mesh11s/sys/net80211/ieee80211_proto.c ============================================================================== --- projects/mesh11s/sys/net80211/ieee80211_proto.c Fri Jul 10 18:34:19 2009 (r195576) +++ projects/mesh11s/sys/net80211/ieee80211_proto.c Fri Jul 10 18:35:11 2009 (r195577) @@ -50,7 +50,9 @@ __FBSDID("$FreeBSD$"); #include <net80211/ieee80211_sta.h> #include <net80211/ieee80211_hostap.h> #include <net80211/ieee80211_wds.h> +#ifdef IEEE80211_SUPPORT_MESH #include <net80211/ieee80211_mesh.h> +#endif #include <net80211/ieee80211_monitor.h> #include <net80211/ieee80211_input.h> @@ -154,7 +156,9 @@ ieee80211_proto_attach(struct ieee80211c ieee80211_sta_attach(ic); ieee80211_wds_attach(ic); ieee80211_hostap_attach(ic); +#ifdef IEEE80211_SUPPORT_MESH ieee80211_mesh_attach(ic); +#endif ieee80211_monitor_attach(ic); } @@ -162,7 +166,9 @@ void ieee80211_proto_detach(struct ieee80211com *ic) { ieee80211_monitor_detach(ic); +#ifdef IEEE80211_SUPPORT_MESH ieee80211_mesh_detach(ic); +#endif ieee80211_hostap_detach(ic); ieee80211_wds_detach(ic); ieee80211_adhoc_detach(ic); Modified: projects/mesh11s/sys/net80211/ieee80211_scan_sta.c ============================================================================== --- projects/mesh11s/sys/net80211/ieee80211_scan_sta.c Fri Jul 10 18:34:19 2009 (r195576) +++ projects/mesh11s/sys/net80211/ieee80211_scan_sta.c Fri Jul 10 18:35:11 2009 (r195577) @@ -48,7 +48,9 @@ __FBSDID("$FreeBSD$"); #ifdef IEEE80211_SUPPORT_TDMA #include <net80211/ieee80211_tdma.h> #endif +#ifdef IEEE80211_SUPPORT_MESH #include <net80211/ieee80211_mesh.h> +#endif #include <net/bpf.h> @@ -142,6 +144,10 @@ isocmp(const uint8_t cc1[], const uint8_ /* number of references from net80211 layer */ static int nrefs = 0; +/* + * Module glue. + */ +IEEE80211_SCANNER_MODULE(sta, 1); /* * Attach prior to any scanning work. @@ -284,8 +290,10 @@ found: memcpy(ise->se_tstamp.data, sp->tstamp, sizeof(ise->se_tstamp)); ise->se_intval = sp->bintval; ise->se_capinfo = sp->capinfo; +#ifdef IEEE80211_SUPPORT_MESH if (sp->meshid != NULL && sp->meshid[1] != 0) memcpy(ise->se_meshid, sp->meshid, 2+sp->meshid[1]); +#endif /* * Beware of overriding se_chan for frames seen * off-channel; this can cause us to attempt an @@ -996,6 +1004,7 @@ match_bss(struct ieee80211vap *vap, #endif } #endif /* IEEE80211_SUPPORT_TDMA */ +#ifdef IEEE80211_SUPPORT_MESH } else if (vap->iv_opmode == IEEE80211_M_MBSS) { const struct ieee80211_mesh_state *ms = vap->iv_mesh; /* @@ -1006,10 +1015,11 @@ match_bss(struct ieee80211vap *vap, fail |= MATCH_CAPINFO; else if (se->se_meshid == NULL) fail |= MATCH_MESH_NOID; - else if (vap->iv_mesh->ms_idlen != 0 && + else if (ms->ms_idlen != 0 && match_id(se->se_meshid, ms->ms_id, ms->ms_idlen)) fail |= MATCH_MESHID; } else { +#endif if ((se->se_capinfo & IEEE80211_CAPINFO_ESS) == 0) fail |= MATCH_CAPINFO; /* @@ -1439,6 +1449,7 @@ static const struct ieee80211_scanner st .scan_assoc_fail = sta_assoc_fail, .scan_assoc_success = sta_assoc_success, }; +IEEE80211_SCANNER_ALG(sta, IEEE80211_M_STA, sta_default); /* * Adhoc mode-specific support. @@ -1655,6 +1666,8 @@ static const struct ieee80211_scanner ad .scan_assoc_fail = sta_assoc_fail, .scan_assoc_success = sta_assoc_success, }; +IEEE80211_SCANNER_ALG(ibss, IEEE80211_M_IBSS, adhoc_default); +IEEE80211_SCANNER_ALG(ahdemo, IEEE80211_M_AHDEMO, adhoc_default); static void ap_force_promisc(struct ieee80211com *ic) @@ -1806,7 +1819,9 @@ static const struct ieee80211_scanner ap .scan_assoc_success = sta_assoc_success, .scan_assoc_fail = sta_assoc_fail, }; +IEEE80211_SCANNER_ALG(ap, IEEE80211_M_HOSTAP, ap_default); +#ifdef IEEE80211_SUPPORT_MESH /* * Pick an mbss network to join or find a channel * to use to start an mbss network. @@ -1907,13 +1922,5 @@ static const struct ieee80211_scanner me .scan_assoc_fail = sta_assoc_fail, .scan_assoc_success = sta_assoc_success, }; - -/* - * Module glue. - */ -IEEE80211_SCANNER_MODULE(sta, 1); -IEEE80211_SCANNER_ALG(sta, IEEE80211_M_STA, sta_default); -IEEE80211_SCANNER_ALG(ibss, IEEE80211_M_IBSS, adhoc_default); -IEEE80211_SCANNER_ALG(ahdemo, IEEE80211_M_AHDEMO, adhoc_default); -IEEE80211_SCANNER_ALG(ap, IEEE80211_M_HOSTAP, ap_default); IEEE80211_SCANNER_ALG(mesh, IEEE80211_M_MBSS, mesh_default); +#endif /* IEEE80211_SUPPORT_MESH */
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200907101835.n6AIZBWb028546>