MCPcopy Create free account
hub / github.com/F-Stack/f-stack / ieee80211_sta_join

Function ieee80211_sta_join

freebsd/net80211/ieee80211_node.c:905–1037  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

903}
904
905int
906ieee80211_sta_join(struct ieee80211vap *vap, struct ieee80211_channel *chan,
907 const struct ieee80211_scan_entry *se)
908{
909 struct ieee80211com *ic = vap->iv_ic;
910 struct ieee80211_node *ni;
911 int do_ht = 0;
912
913 ni = ieee80211_alloc_node(&ic->ic_sta, vap, se->se_macaddr);
914 if (ni == NULL) {
915 /* XXX msg */
916 return 0;
917 }
918
919 /*
920 * Expand scan state into node's format.
921 * XXX may not need all this stuff
922 */
923 IEEE80211_ADDR_COPY(ni->ni_bssid, se->se_bssid);
924 ni->ni_esslen = se->se_ssid[1];
925 memcpy(ni->ni_essid, se->se_ssid+2, ni->ni_esslen);
926 ni->ni_tstamp.tsf = se->se_tstamp.tsf;
927 ni->ni_intval = se->se_intval;
928 ni->ni_capinfo = se->se_capinfo;
929 ni->ni_chan = chan;
930 ni->ni_timoff = se->se_timoff;
931 ni->ni_fhdwell = se->se_fhdwell;
932 ni->ni_fhindex = se->se_fhindex;
933 ni->ni_erp = se->se_erp;
934 IEEE80211_RSSI_LPF(ni->ni_avgrssi, se->se_rssi);
935 ni->ni_noise = se->se_noise;
936 if (vap->iv_opmode == IEEE80211_M_STA) {
937 /* NB: only infrastructure mode requires an associd */
938 ni->ni_flags |= IEEE80211_NODE_ASSOCID;
939 }
940
941 if (ieee80211_ies_init(&ni->ni_ies, se->se_ies.data, se->se_ies.len)) {
942 ieee80211_ies_expand(&ni->ni_ies);
943#ifdef IEEE80211_SUPPORT_SUPERG
944 if (ni->ni_ies.ath_ie != NULL)
945 ieee80211_parse_ath(ni, ni->ni_ies.ath_ie);
946#endif
947 if (ni->ni_ies.htcap_ie != NULL)
948 ieee80211_parse_htcap(ni, ni->ni_ies.htcap_ie);
949 if (ni->ni_ies.htinfo_ie != NULL)
950 ieee80211_parse_htinfo(ni, ni->ni_ies.htinfo_ie);
951#ifdef IEEE80211_SUPPORT_MESH
952 if (ni->ni_ies.meshid_ie != NULL)
953 ieee80211_parse_meshid(ni, ni->ni_ies.meshid_ie);
954#endif
955#ifdef IEEE80211_SUPPORT_TDMA
956 if (ni->ni_ies.tdma_ie != NULL)
957 ieee80211_parse_tdma(ni, ni->ni_ies.tdma_ie);
958#endif
959 if (ni->ni_ies.vhtcap_ie != NULL)
960 ieee80211_parse_vhtcap(ni, ni->ni_ies.vhtcap_ie);
961 if (ni->ni_ies.vhtopmode_ie != NULL)
962 ieee80211_parse_vhtopmode(ni, ni->ni_ies.vhtopmode_ie);

Callers 5

setmlme_assoc_staFunction · 0.85
sta_pick_bssFunction · 0.85
sta_roam_checkFunction · 0.85
adhoc_pick_bssFunction · 0.85
mesh_pick_bssFunction · 0.85

Calls 15

ieee80211_alloc_nodeFunction · 0.85
ieee80211_ies_initFunction · 0.85
ieee80211_ies_expandFunction · 0.85
ieee80211_parse_athFunction · 0.85
ieee80211_parse_htcapFunction · 0.85
ieee80211_parse_htinfoFunction · 0.85
ieee80211_parse_meshidFunction · 0.85
ieee80211_parse_tdmaFunction · 0.85
ieee80211_parse_vhtcapFunction · 0.85
ieee80211_setup_ratesFunction · 0.85
ieee80211_iserp_ratesetFunction · 0.85

Tested by

no test coverage detected