Lines Matching refs:ic
115 ieee80211_proto_attach(struct ieee80211com *ic)
117 struct ifnet *ifp = ic->ic_ifp;
122 ic->ic_rtsthreshold = IEEE80211_RTS_DEFAULT;
123 ic->ic_fragthreshold = IEEE80211_FRAG_DEFAULT;
124 ic->ic_fixed_rate = IEEE80211_FIXED_RATE_NONE;
125 ic->ic_bmiss_max = IEEE80211_BMISS_MAX;
126 ic->ic_mcast_rate = IEEE80211_MCAST_RATE_DEFAULT;
127 ic->ic_protmode = IEEE80211_PROT_CTSONLY;
128 ic->ic_roaming = IEEE80211_ROAMING_AUTO;
130 ic->ic_wme.wme_hipri_switch_hysteresis =
134 ic->ic_newstate = ieee80211_newstate;
137 ic->ic_recv_mgmt = ieee80211_recv_mgmt;
138 ic->ic_send_mgmt = ieee80211_send_mgmt;
142 ieee80211_proto_detach(struct ieee80211com *ic)
150 if (ic->ic_auth->ia_detach)
151 ic->ic_auth->ia_detach(ic);
153 ieee80211_drain_ifq(&ic->ic_mgtq);
158 if (ic->ic_acl != NULL)
159 ic->ic_acl->iac_detach(ic);
352 struct ieee80211com *ic = ni->ni_ic;
363 ic->ic_fixed_rate == IEEE80211_FIXED_RATE_NONE)
367 srs = &ic->ic_sup_rates[ieee80211_chan2mode(ic, ni->ni_chan)];
389 if (r == RV(srs->rs_rates[ic->ic_fixed_rate]))
419 if (ic->ic_opmode == IEEE80211_M_HOSTAP &&
456 ieee80211_reset_erp(struct ieee80211com *ic)
458 ic->ic_flags &= ~IEEE80211_F_USEPROT;
459 ic->ic_nonerpsta = 0;
460 ic->ic_longslotsta = 0;
466 ieee80211_set_shortslottime(ic,
467 ic->ic_curmode == IEEE80211_MODE_11A ||
468 (ic->ic_curmode == IEEE80211_MODE_11G &&
469 ic->ic_opmode == IEEE80211_M_HOSTAP &&
470 (ic->ic_caps & IEEE80211_C_SHSLOT)));
474 if (ic->ic_curmode == IEEE80211_MODE_11A ||
475 (ic->ic_caps & IEEE80211_C_SHPREAMBLE)) {
476 ic->ic_flags |= IEEE80211_F_SHPREAMBLE;
477 ic->ic_flags &= ~IEEE80211_F_USEBARKER;
479 ic->ic_flags &= ~IEEE80211_F_SHPREAMBLE;
480 ic->ic_flags |= IEEE80211_F_USEBARKER;
488 ieee80211_set_shortslottime(struct ieee80211com *ic, int onoff)
491 ic->ic_flags |= IEEE80211_F_SHSLOT;
493 ic->ic_flags &= ~IEEE80211_F_SHSLOT;
495 if (ic->ic_updateslot != NULL)
496 ic->ic_updateslot(ic->ic_ifp);
504 ieee80211_iserp_rateset(struct ieee80211com *ic,
637 ieee80211_wme_initparams(struct ieee80211com *ic)
639 struct ieee80211_wme_state *wme = &ic->ic_wme;
644 if ((ic->ic_caps & IEEE80211_C_WME) == 0)
650 pPhyParam = &phyParamForAC_BK[ic->ic_curmode];
651 pBssPhyParam = &phyParamForAC_BK[ic->ic_curmode];
654 pPhyParam = &phyParamForAC_VI[ic->ic_curmode];
655 pBssPhyParam = &bssPhyParamForAC_VI[ic->ic_curmode];
658 pPhyParam = &phyParamForAC_VO[ic->ic_curmode];
659 pBssPhyParam = &bssPhyParamForAC_VO[ic->ic_curmode];
663 pPhyParam = &phyParamForAC_BE[ic->ic_curmode];
664 pBssPhyParam = &bssPhyParamForAC_BE[ic->ic_curmode];
669 if (ic->ic_opmode == IEEE80211_M_HOSTAP) {
683 IEEE80211_DPRINTF(ic, IEEE80211_MSG_WME,
700 IEEE80211_DPRINTF(ic, IEEE80211_MSG_WME,
712 if (ic->ic_bss != NULL) {
720 (HIGH_PRI_SWITCH_THRESH * ic->ic_bss->ni_intval) / 100;
721 ieee80211_wme_updateparams(ic);
729 ieee80211_wme_updateparams_locked(struct ieee80211com *ic)
740 struct ieee80211_wme_state *wme = &ic->ic_wme;
770 if ((ic->ic_opmode == IEEE80211_M_HOSTAP &&
772 (ic->ic_opmode != IEEE80211_M_HOSTAP &&
773 (ic->ic_bss->ni_flags & IEEE80211_NODE_QOS) == 0) ||
774 (ic->ic_flags & IEEE80211_F_WME) == 0) {
779 phyParam[ic->ic_curmode].aifsn;
781 phyParam[ic->ic_curmode].logcwmin;
783 phyParam[ic->ic_curmode].logcwmax;
785 (ic->ic_caps & IEEE80211_C_BURST) ?
786 phyParam[ic->ic_curmode].txopLimit : 0;
787 IEEE80211_DPRINTF(ic, IEEE80211_MSG_WME,
800 if (ic->ic_opmode == IEEE80211_M_HOSTAP &&
801 ic->ic_sta_assoc < 2 && (wme->wme_flags & WME_F_AGGRMODE) == 0) {
815 logCwMin[ic->ic_curmode];
816 IEEE80211_DPRINTF(ic, IEEE80211_MSG_WME,
822 if (ic->ic_opmode == IEEE80211_M_HOSTAP) { /* XXX ibss? */
829 ic->ic_flags |= IEEE80211_F_WMEUPDATE;
833 wme->wme_update(ic);
835 IEEE80211_DPRINTF(ic, IEEE80211_MSG_WME,
837 ic->ic_opmode == IEEE80211_M_STA ?
843 ieee80211_wme_updateparams(struct ieee80211com *ic)
846 if (ic->ic_caps & IEEE80211_C_WME) {
847 IEEE80211_BEACON_LOCK(ic);
848 ieee80211_wme_updateparams_locked(ic);
849 IEEE80211_BEACON_UNLOCK(ic);
857 struct ieee80211com *ic = arg;
860 IEEE80211_SEND_MGMT(ic, ni, IEEE80211_FC0_SUBTYPE_DISASSOC,
862 ieee80211_node_leave(ic, ni);
868 ieee80211_beacon_miss(struct ieee80211com *ic)
871 if (ic->ic_flags & IEEE80211_F_SCAN) {
875 IEEE80211_DPRINTF(ic,
884 if (ic->ic_opmode != IEEE80211_M_STA || ic->ic_state != IEEE80211_S_RUN)
887 if (++ic->ic_bmiss_count < ic->ic_bmiss_max) {
894 ieee80211_send_probereq(ic->ic_bss, ic->ic_myaddr,
895 ic->ic_bss->ni_bssid, ic->ic_bss->ni_bssid,
896 ic->ic_bss->ni_essid, ic->ic_bss->ni_esslen,
897 ic->ic_opt_ie, ic->ic_opt_ie_len);
900 ic->ic_bmiss_count = 0;
901 ieee80211_new_state(ic, IEEE80211_S_SCAN, 0);
908 struct ieee80211com *ic = arg;
910 IEEE80211_SEND_MGMT(ic, ni, IEEE80211_FC0_SUBTYPE_DEAUTH,
916 ieee80211_newstate(struct ieee80211com *ic, enum ieee80211_state nstate, int arg)
918 struct ifnet *ifp = ic->ic_ifp;
924 ostate = ic->ic_state;
925 IEEE80211_DPRINTF(ic, IEEE80211_MSG_STATE, "%s: %s -> %s\n", __func__,
927 ic->ic_state = nstate; /* state transition */
928 ni = ic->ic_bss; /* NB: no reference held */
935 switch (ic->ic_opmode) {
937 IEEE80211_SEND_MGMT(ic, ni,
940 ieee80211_sta_leave(ic, ni);
944 ieee80211_iterate_nodes(&ic->ic_sta,
945 sta_disassoc, ic);
953 switch (ic->ic_opmode) {
955 IEEE80211_SEND_MGMT(ic, ni,
961 ieee80211_iterate_nodes(&ic->ic_sta,
962 sta_deauth, ic);
970 ieee80211_cancel_scan(ic);
974 ic->ic_mgt_timer = 0;
975 ieee80211_drain_ifq(&ic->ic_mgtq);
976 ieee80211_reset_bss(ic);
979 if (ic->ic_auth->ia_detach != NULL)
980 ic->ic_auth->ia_detach(ic);
985 if ((ic->ic_opmode == IEEE80211_M_HOSTAP ||
986 ic->ic_opmode == IEEE80211_M_IBSS ||
987 ic->ic_opmode == IEEE80211_M_AHDEMO) &&
988 ic->ic_des_chan != IEEE80211_CHAN_ANYC) {
993 ieee80211_create_ibss(ic, ic->ic_des_chan);
995 ieee80211_begin_scan(ic, arg);
1003 if (ic->ic_flags & IEEE80211_F_ASCAN)
1004 ieee80211_probe_curchan(ic, 0);
1008 IEEE80211_DPRINTF(ic, IEEE80211_MSG_STATE,
1010 ether_sprintf(ic->ic_bss->ni_bssid));
1011 ieee80211_sta_leave(ic, ni);
1012 ic->ic_flags &= ~IEEE80211_F_SIBSS; /* XXX */
1017 ni = ieee80211_find_node(&ic->ic_scan,
1018 ic->ic_bss->ni_macaddr);
1023 if (ic->ic_roaming == IEEE80211_ROAMING_AUTO)
1024 ieee80211_begin_scan(ic, arg);
1032 IEEE80211_SEND_MGMT(ic, ni,
1040 IEEE80211_SEND_MGMT(ic, ni,
1051 IEEE80211_SEND_MGMT(ic, ni,
1053 ic->ic_state = ostate; /* stay RUN */
1056 ieee80211_sta_leave(ic, ni);
1057 if (ic->ic_roaming == IEEE80211_ROAMING_AUTO) {
1059 IEEE80211_SEND_MGMT(ic, ni,
1072 IEEE80211_DPRINTF(ic, IEEE80211_MSG_ANY,
1076 IEEE80211_SEND_MGMT(ic, ni,
1080 ieee80211_sta_leave(ic, ni);
1081 if (ic->ic_roaming == IEEE80211_ROAMING_AUTO) {
1082 IEEE80211_SEND_MGMT(ic, ni,
1089 if (ic->ic_flags & IEEE80211_F_WPA) {
1094 if (ic->ic_opmode == IEEE80211_M_MONITOR)
1098 IEEE80211_DPRINTF(ic, IEEE80211_MSG_ANY,
1110 if (ieee80211_msg_debug(ic)) {
1111 if (ic->ic_opmode == IEEE80211_M_STA)
1117 ieee80211_print_essid(ic->ic_bss->ni_essid,
1120 ieee80211_chan2ieee(ic, ic->ic_curchan),
1124 ic->ic_mgt_timer = 0;
1125 ic->ic_opmode == IEEE80211_M_STA)
1126 ieee80211_notify_node_join(ic, ni,
1136 if (ic->ic_opmode == IEEE80211_M_HOSTAP && /* XXX IBSS/AHDEMO */
1137 ic->ic_auth->ia_attach != NULL) {
1139 ic->ic_auth->ia_attach(ic);
1140 } else if (ic->ic_auth->ia_detach != NULL) {
1141 ic->ic_auth->ia_detach(ic);
1153 ic->ic_scan.nt_inact_timer = IEEE80211_INACT_WAIT;
1154 ic->ic_sta.nt_inact_timer = IEEE80211_INACT_WAIT;