Lines Matching refs:ic

115 ieee80211_mac_update(ieee80211com_t *ic)  in ieee80211_mac_update()  argument
124 in = ic->ic_bss; in ieee80211_mac_update()
125 wd.wd_secalloc = ieee80211_crypto_getciphertype(ic); in ieee80211_mac_update()
126 wd.wd_opmode = ic->ic_opmode; in ieee80211_mac_update()
131 if (ic->ic_flags & IEEE80211_F_DATAPAD) in ieee80211_mac_update()
134 (void) mac_pdata_update(ic->ic_mach, &wd, sizeof (wd)); in ieee80211_mac_update()
135 mac_tx_update(ic->ic_mach); in ieee80211_mac_update()
147 ieee80211com_t *ic = arg; in ieee80211_event_thread() local
152 mutex_enter(&ic->ic_doorlock); in ieee80211_event_thread()
154 ev.event = ic->ic_eventq[ic->ic_evq_head]; in ieee80211_event_thread()
155 ic->ic_evq_head ++; in ieee80211_event_thread()
156 if (ic->ic_evq_head >= MAX_EVENT) in ieee80211_event_thread()
157 ic->ic_evq_head = 0; in ieee80211_event_thread()
163 if (door_ki_open(ic->ic_wpadoor, &event_door) != 0) { in ieee80211_event_thread()
165 ic->ic_wpadoor); in ieee80211_event_thread()
185 mutex_exit(&ic->ic_doorlock); in ieee80211_event_thread()
192 ieee80211_notify(ieee80211com_t *ic, wpa_event_type event) in ieee80211_notify() argument
194 if ((ic->ic_flags & IEEE80211_F_WPA) == 0) in ieee80211_notify()
197 ic->ic_eventq[ic->ic_evq_tail] = event; in ieee80211_notify()
198 ic->ic_evq_tail ++; in ieee80211_notify()
199 if (ic->ic_evq_tail >= MAX_EVENT) ic->ic_evq_tail = 0; in ieee80211_notify()
202 (void) timeout(ieee80211_event_thread, (void *)ic, 0); in ieee80211_notify()
209 ieee80211_register_door(ieee80211com_t *ic, const char *drvname, int inst) in ieee80211_register_door() argument
211 (void) snprintf(ic->ic_wpadoor, MAX_IEEE80211STR, "%s_%s%d", in ieee80211_register_door()
226 ieee80211_default_reset(ieee80211com_t *ic) in ieee80211_default_reset() argument
235 ieee80211_chan2ieee(ieee80211com_t *ic, struct ieee80211_channel *ch) in ieee80211_chan2ieee() argument
237 if ((ic->ic_sup_channels <= ch) && in ieee80211_chan2ieee()
238 (ch <= &ic->ic_sup_channels[IEEE80211_CHAN_MAX])) { in ieee80211_chan2ieee()
239 return (ch - ic->ic_sup_channels); in ieee80211_chan2ieee()
296 ieee80211_media_init(ieee80211com_t *ic) in ieee80211_media_init() argument
302 ieee80211_node_lateattach(ic); in ieee80211_media_init()
310 ieee80211_start_watchdog(ieee80211com_t *ic, uint32_t timer) in ieee80211_start_watchdog() argument
312 if (ic->ic_watchdog_timer == 0 && ic->ic_watchdog != NULL) { in ieee80211_start_watchdog()
313 ic->ic_watchdog_timer = timeout(ic->ic_watchdog, ic, in ieee80211_start_watchdog()
322 ieee80211_stop_watchdog(ieee80211com_t *ic) in ieee80211_stop_watchdog() argument
324 if (ic->ic_watchdog_timer != 0) { in ieee80211_stop_watchdog()
325 if (ic->ic_watchdog != NULL) in ieee80211_stop_watchdog()
326 (void) untimeout(ic->ic_watchdog_timer); in ieee80211_stop_watchdog()
327 ic->ic_watchdog_timer = 0; in ieee80211_stop_watchdog()
339 ieee80211com_t *ic = arg; in ieee80211_watchdog() local
340 struct ieee80211_impl *im = ic->ic_private; in ieee80211_watchdog()
344 if (ic->ic_state == IEEE80211_S_INIT) in ieee80211_watchdog()
347 IEEE80211_LOCK(ic); in ieee80211_watchdog()
349 IEEE80211_UNLOCK(ic); in ieee80211_watchdog()
350 ieee80211_new_state(ic, IEEE80211_S_SCAN, -1); in ieee80211_watchdog()
351 IEEE80211_LOCK(ic); in ieee80211_watchdog()
354 nt = &ic->ic_scan; in ieee80211_watchdog()
360 nt = &ic->ic_sta; in ieee80211_watchdog()
367 IEEE80211_UNLOCK(ic); in ieee80211_watchdog()
370 ieee80211_start_watchdog(ic, 1); in ieee80211_watchdog()
382 ieee80211_setmode(ieee80211com_t *ic, enum ieee80211_phymode mode) in ieee80211_setmode() argument
402 if ((ic->ic_modecaps & (1 << mode)) == 0) { in ieee80211_setmode()
404 " (caps 0x%x)\n", mode, ic->ic_modecaps); in ieee80211_setmode()
415 bzero(ic->ic_chan_active, sizeof (ic->ic_chan_active)); in ieee80211_setmode()
417 ch = &ic->ic_sup_channels[i]; in ieee80211_setmode()
423 ieee80211_setbit(ic->ic_chan_active, i); in ieee80211_setmode()
428 ieee80211_setbit(ic->ic_chan_active, i); in ieee80211_setmode()
445 if (ic->ic_ibss_chan == NULL || in ieee80211_setmode()
446 ieee80211_isclr(ic->ic_chan_active, in ieee80211_setmode()
447 ieee80211_chan2ieee(ic, ic->ic_ibss_chan))) { in ieee80211_setmode()
449 if (ieee80211_isset(ic->ic_chan_active, i)) { in ieee80211_setmode()
450 ic->ic_ibss_chan = &ic->ic_sup_channels[i]; in ieee80211_setmode()
458 if (ic->ic_des_chan != IEEE80211_CHAN_ANYC && in ieee80211_setmode()
459 ieee80211_isclr(ic->ic_chan_active, in ieee80211_setmode()
460 ieee80211_chan2ieee(ic, ic->ic_des_chan))) { in ieee80211_setmode()
461 ic->ic_des_chan = IEEE80211_CHAN_ANYC; in ieee80211_setmode()
468 ieee80211_setbasicrates(&ic->ic_sup_rates[mode], mode); in ieee80211_setmode()
476 if (ic->ic_bss != NULL) in ieee80211_setmode()
477 ic->ic_bss->in_rates = ic->ic_sup_rates[mode]; in ieee80211_setmode()
478 ic->ic_curmode = mode; in ieee80211_setmode()
479 ieee80211_reset_erp(ic); /* reset ERP state */ in ieee80211_setmode()
480 ieee80211_wme_initparams(ic); /* reset WME stat */ in ieee80211_setmode()
493 ieee80211_chan2mode(ieee80211com_t *ic, struct ieee80211_channel *chan) in ieee80211_chan2mode() argument
522 ieee80211_get_suprates(ieee80211com_t *ic, struct ieee80211_channel *c) in ieee80211_get_suprates() argument
525 return (&ic->ic_sup_rates[IEEE80211_MODE_11A]); in ieee80211_get_suprates()
527 return (&ic->ic_sup_rates[IEEE80211_MODE_11G]); in ieee80211_get_suprates()
529 return (&ic->ic_sup_rates[ieee80211_chan2mode(ic, c)]); in ieee80211_get_suprates()
538 ieee80211_find_channel(ieee80211com_t *ic, int freq, int flags) in ieee80211_find_channel() argument
546 c = &ic->ic_sup_channels[i]; in ieee80211_find_channel()
580 ieee80211_hdrspace(ieee80211com_t *ic, const void *data) in ieee80211_hdrspace() argument
583 if (ic->ic_flags & IEEE80211_F_DATAPAD) in ieee80211_hdrspace()
613 ieee80211_anyhdrspace(ieee80211com_t *ic, const void *data) in ieee80211_anyhdrspace() argument
616 if (ic->ic_flags & IEEE80211_F_DATAPAD) in ieee80211_anyhdrspace()
651 ieee80211_notify_node_join(ieee80211com_t *ic, ieee80211_node_t *in) in ieee80211_notify_node_join() argument
653 if (in == ic->ic_bss) in ieee80211_notify_node_join()
654 mac_link_update(ic->ic_mach, LINK_STATE_UP); in ieee80211_notify_node_join()
655 ieee80211_notify(ic, EVENT_ASSOC); /* notify WPA service */ in ieee80211_notify_node_join()
664 ieee80211_notify_node_leave(ieee80211com_t *ic, ieee80211_node_t *in) in ieee80211_notify_node_leave() argument
666 if (in == ic->ic_bss) in ieee80211_notify_node_leave()
667 mac_link_update(ic->ic_mach, LINK_STATE_DOWN); in ieee80211_notify_node_leave()
668 ieee80211_notify(ic, EVENT_DISASSOC); /* notify WPA service */ in ieee80211_notify_node_leave()
678 ieee80211_stat(ieee80211com_t *ic, uint_t stat, uint64_t *val) in ieee80211_stat() argument
681 IEEE80211_LOCK(ic); in ieee80211_stat()
684 *val = ic->ic_stats.is_tx_frags; in ieee80211_stat()
687 *val = ic->ic_stats.is_tx_mcast; in ieee80211_stat()
690 *val = ic->ic_stats.is_tx_failed; in ieee80211_stat()
693 *val = ic->ic_stats.is_tx_retries; in ieee80211_stat()
696 *val = ic->ic_stats.is_rts_success; in ieee80211_stat()
699 *val = ic->ic_stats.is_rts_failure; in ieee80211_stat()
702 *val = ic->ic_stats.is_ack_failure; in ieee80211_stat()
705 *val = ic->ic_stats.is_rx_frags; in ieee80211_stat()
708 *val = ic->ic_stats.is_rx_mcast; in ieee80211_stat()
711 *val = ic->ic_stats.is_rx_dups; in ieee80211_stat()
714 *val = ic->ic_stats.is_fcs_errors; in ieee80211_stat()
717 *val = ic->ic_stats.is_wep_errors; in ieee80211_stat()
720 IEEE80211_UNLOCK(ic); in ieee80211_stat()
731 ieee80211_attach(ieee80211com_t *ic) in ieee80211_attach() argument
738 ASSERT(ic->ic_xmit != NULL); in ieee80211_attach()
740 mutex_init(&ic->ic_genlock, NULL, MUTEX_DRIVER, NULL); in ieee80211_attach()
741 mutex_init(&ic->ic_doorlock, NULL, MUTEX_DRIVER, NULL); in ieee80211_attach()
744 ic->ic_private = im; in ieee80211_attach()
753 ic->ic_modecaps |= 1 << IEEE80211_MODE_AUTO; in ieee80211_attach()
755 ch = &ic->ic_sup_channels[i]; in ieee80211_attach()
758 if (i != ieee80211_chan2ieee(ic, ch)) { in ieee80211_attach()
768 ic->ic_modecaps |= 1 << IEEE80211_MODE_11A; in ieee80211_attach()
770 ic->ic_modecaps |= 1 << IEEE80211_MODE_11B; in ieee80211_attach()
772 ic->ic_modecaps |= 1 << IEEE80211_MODE_11G; in ieee80211_attach()
774 ic->ic_modecaps |= 1 << IEEE80211_MODE_FH; in ieee80211_attach()
776 ic->ic_modecaps |= 1 << IEEE80211_MODE_TURBO_A; in ieee80211_attach()
778 ic->ic_modecaps |= 1 << IEEE80211_MODE_TURBO_G; in ieee80211_attach()
780 ic->ic_modecaps |= 1 << IEEE80211_MODE_STURBO_A; in ieee80211_attach()
782 ic->ic_modecaps |= 1 << IEEE80211_MODE_11NA; in ieee80211_attach()
784 ic->ic_modecaps |= 1 << IEEE80211_MODE_11NG; in ieee80211_attach()
785 if (ic->ic_curchan == NULL) { in ieee80211_attach()
787 ic->ic_curchan = &ic->ic_sup_channels[i]; in ieee80211_attach()
792 if ((ic->ic_modecaps & (1 << ic->ic_curmode)) == 0) in ieee80211_attach()
793 ic->ic_curmode = IEEE80211_MODE_AUTO; in ieee80211_attach()
794 ic->ic_des_chan = IEEE80211_CHAN_ANYC; /* any channel is ok */ in ieee80211_attach()
795 (void) ieee80211_setmode(ic, ic->ic_curmode); in ieee80211_attach()
797 if (ic->ic_caps & IEEE80211_C_WME) /* enable if capable */ in ieee80211_attach()
798 ic->ic_flags |= IEEE80211_F_WME; in ieee80211_attach()
799 if (ic->ic_caps & IEEE80211_C_BURST) in ieee80211_attach()
800 ic->ic_flags |= IEEE80211_F_BURST; in ieee80211_attach()
801 ic->ic_bintval = IEEE80211_BINTVAL_DEFAULT; in ieee80211_attach()
802 ic->ic_lintval = ic->ic_bintval; in ieee80211_attach()
803 ic->ic_txpowlimit = IEEE80211_TXPOWER_MAX; in ieee80211_attach()
804 ic->ic_bmissthreshold = IEEE80211_HWBMISS_DEFAULT; in ieee80211_attach()
806 ic->ic_reset = ieee80211_default_reset; in ieee80211_attach()
808 ieee80211_node_attach(ic); in ieee80211_attach()
809 ieee80211_proto_attach(ic); in ieee80211_attach()
810 ieee80211_crypto_attach(ic); in ieee80211_attach()
811 ieee80211_ht_attach(ic); in ieee80211_attach()
813 ic->ic_watchdog_timer = 0; in ieee80211_attach()
820 ieee80211_detach(ieee80211com_t *ic) in ieee80211_detach() argument
822 struct ieee80211_impl *im = ic->ic_private; in ieee80211_detach()
824 ieee80211_stop_watchdog(ic); in ieee80211_detach()
828 if (ic->ic_opt_ie != NULL) in ieee80211_detach()
829 ieee80211_free(ic->ic_opt_ie); in ieee80211_detach()
831 ieee80211_ht_detach(ic); in ieee80211_detach()
832 ieee80211_node_detach(ic); in ieee80211_detach()
833 ieee80211_crypto_detach(ic); in ieee80211_detach()
835 mutex_destroy(&ic->ic_genlock); in ieee80211_detach()
836 mutex_destroy(&ic->ic_doorlock); in ieee80211_detach()