Lines Matching refs:asc
80 extern void ath_setup_desc(ath_t *asc, struct ath_buf *bf);
112 ath_calcrxfilter(ath_t *asc) in ath_calcrxfilter() argument
114 ieee80211com_t *ic = (ieee80211com_t *)asc; in ath_calcrxfilter()
115 struct ath_hal *ah = asc->asc_ah; in ath_calcrxfilter()
122 if (ic->ic_opmode != IEEE80211_M_HOSTAP && asc->asc_promisc) in ath_calcrxfilter()
132 ath_set_data_queue(ath_t *asc, int ac, int haltype) in ath_set_data_queue() argument
136 struct ath_hal *ah = asc->asc_ah; in ath_set_data_queue()
139 if (ac >= ATH_N(asc->asc_ac2q)) { in ath_set_data_queue()
142 ac, ATH_N(asc->asc_ac2q))); in ath_set_data_queue()
167 if (qnum >= ATH_N(asc->asc_txq)) { in ath_set_data_queue()
170 qnum, ATH_N(asc->asc_txq))); in ath_set_data_queue()
173 if (!ATH_TXQ_SETUP(asc, qnum)) { in ath_set_data_queue()
174 txq = &asc->asc_txq[qnum]; in ath_set_data_queue()
182 asc->asc_txqsetup |= 1<<qnum; in ath_set_data_queue()
184 asc->asc_ac2q[ac] = &asc->asc_txq[qnum]; in ath_set_data_queue()
189 ath_txq_setup(ath_t *asc) in ath_txq_setup() argument
191 if (ath_set_data_queue(asc, WME_AC_BE, HAL_WME_AC_BK) || in ath_txq_setup()
192 ath_set_data_queue(asc, WME_AC_BK, HAL_WME_AC_BE) || in ath_txq_setup()
193 ath_set_data_queue(asc, WME_AC_VI, HAL_WME_AC_VI) || in ath_txq_setup()
194 ath_set_data_queue(asc, WME_AC_VO, HAL_WME_AC_VO)) { in ath_txq_setup()
202 ath_txq_cleanup(ath_t *asc) in ath_txq_cleanup() argument
206 mutex_destroy(&asc->asc_txbuflock); in ath_txq_cleanup()
208 if (ATH_TXQ_SETUP(asc, i)) { in ath_txq_cleanup()
209 struct ath_txq *txq = &asc->asc_txq[i]; in ath_txq_cleanup()
211 ATH_HAL_RELEASETXQUEUE(asc->asc_ah, txq->axq_qnum); in ath_txq_cleanup()
213 asc->asc_txqsetup &= ~(1 << txq->axq_qnum); in ath_txq_cleanup()
219 ath_setcurmode(ath_t *asc, enum ieee80211_phymode mode) in ath_setcurmode() argument
224 for (i = 0; i < sizeof (asc->asc_rixmap); i++) in ath_setcurmode()
225 asc->asc_rixmap[i] = 0xff; in ath_setcurmode()
227 rt = asc->asc_rates[mode]; in ath_setcurmode()
231 asc->asc_rixmap[rt->info[i].dot11Rate & IEEE80211_RATE_VAL] = in ath_setcurmode()
234 asc->asc_currates = rt; in ath_setcurmode()
235 asc->asc_curmode = mode; in ath_setcurmode()
242 asc->asc_protrix = (mode == IEEE80211_MODE_11G ? 1 : 0); in ath_setcurmode()
247 ath_mode_init(ath_t *asc) in ath_mode_init() argument
249 ieee80211com_t *ic = (ieee80211com_t *)asc; in ath_mode_init()
250 struct ath_hal *ah = asc->asc_ah; in ath_mode_init()
254 rfilt = ath_calcrxfilter(asc); in ath_mode_init()
257 ATH_HAL_SETMCASTFILTER(ah, asc->asc_mcast_hash[0], in ath_mode_init()
258 asc->asc_mcast_hash[1]); in ath_mode_init()
262 asc->asc_mcast_hash[0], asc->asc_mcast_hash[1])); in ath_mode_init()
269 ath_stoprecv(ath_t *asc) in ath_stoprecv() argument
271 ATH_HAL_STOPPCURECV(asc->asc_ah); /* disable PCU */ in ath_stoprecv()
272 ATH_HAL_SETRXFILTER(asc->asc_ah, 0); /* clear recv filter */ in ath_stoprecv()
273 ATH_HAL_STOPDMARECV(asc->asc_ah); /* disable DMA engine */ in ath_stoprecv()
277 ATH_HAL_GETRXBUF(asc->asc_ah), asc->asc_rxlink)); in ath_stoprecv()
278 asc->asc_rxlink = NULL; in ath_stoprecv()
298 ath_getchannels(ath_t *asc, uint32_t cc, HAL_BOOL outdoor, HAL_BOOL xchanmode) in ath_getchannels() argument
300 ieee80211com_t *ic = (ieee80211com_t *)asc; in ath_getchannels()
301 struct ath_hal *ah = asc->asc_ah; in ath_getchannels()
360 asc->asc_have11g = 1; in ath_getchannels()
367 ath_drainq(ath_t *asc, struct ath_txq *txq) in ath_drainq() argument
385 mutex_enter(&asc->asc_txbuflock); in ath_drainq()
386 list_insert_tail(&asc->asc_txbuf_list, bf); in ath_drainq()
387 mutex_exit(&asc->asc_txbuflock); in ath_drainq()
396 ath_draintxq(ath_t *asc) in ath_draintxq() argument
398 struct ath_hal *ah = asc->asc_ah; in ath_draintxq()
402 if (!asc->asc_invalid) { in ath_draintxq()
404 if (ATH_TXQ_SETUP(asc, i)) { in ath_draintxq()
405 txq = &asc->asc_txq[i]; in ath_draintxq()
411 if (ATH_TXQ_SETUP(asc, i)) { in ath_draintxq()
412 ath_drainq(asc, &asc->asc_txq[i]); in ath_draintxq()
420 ath_startrecv(ath_t *asc) in ath_startrecv() argument
424 asc->asc_rxlink = NULL; in ath_startrecv()
426 bf = list_head(&asc->asc_rxbuf_list); in ath_startrecv()
428 ath_setup_desc(asc, bf); in ath_startrecv()
429 bf = list_next(&asc->asc_rxbuf_list, bf); in ath_startrecv()
432 bf = list_head(&asc->asc_rxbuf_list); in ath_startrecv()
433 ATH_HAL_PUTRXBUF(asc->asc_ah, bf->bf_daddr); in ath_startrecv()
434 ATH_HAL_RXENA(asc->asc_ah); /* enable recv descriptors */ in ath_startrecv()
435 ath_mode_init(asc); /* set filters, etc. */ in ath_startrecv()
436 ATH_HAL_STARTPCURECV(asc->asc_ah); /* re-enable PCU/DMA engine */ in ath_startrecv()
444 ath_chan_change(ath_t *asc, struct ieee80211_channel *chan) in ath_chan_change() argument
446 struct ieee80211com *ic = &asc->asc_isc; in ath_chan_change()
454 if (mode != asc->asc_curmode) in ath_chan_change()
455 ath_setcurmode(asc, mode); in ath_chan_change()
464 ath_chan_set(ath_t *asc, struct ieee80211_channel *chan) in ath_chan_set() argument
466 struct ath_hal *ah = asc->asc_ah; in ath_chan_set()
467 ieee80211com_t *ic = &asc->asc_isc; in ath_chan_set()
480 ath_draintxq(asc); /* clear pending tx frames */ in ath_chan_set()
481 ath_stoprecv(asc); /* turn off frame recv */ in ath_chan_set()
499 asc->asc_curchan = hchan; in ath_chan_set()
504 if (ath_startrecv(asc) != 0) { in ath_chan_set()
515 ath_chan_change(asc, chan); in ath_chan_set()
519 ATH_HAL_INTRSET(ah, asc->asc_imask); in ath_chan_set()
541 ath_beacon_config(ath_t *asc) in ath_beacon_config() argument
543 struct ath_hal *ah = asc->asc_ah; in ath_beacon_config()
544 ieee80211com_t *ic = (ieee80211com_t *)asc; in ath_beacon_config()
603 asc->asc_imask |= HAL_INT_BMISS; in ath_beacon_config()
604 ATH_HAL_INTRSET(ah, asc->asc_imask); in ath_beacon_config()
608 asc->asc_imask |= HAL_INT_SWBA; /* beacon prepare */ in ath_beacon_config()
609 ATH_HAL_INTRSET(ah, asc->asc_imask); in ath_beacon_config()
617 key_alloc_pair(ath_t *asc, ieee80211_keyix *txkeyix, in key_alloc_pair() argument
622 ASSERT(!asc->asc_splitmic); in key_alloc_pair()
623 for (i = 0; i < ATH_N(asc->asc_keymap)/4; i++) { in key_alloc_pair()
624 uint8_t b = asc->asc_keymap[i]; in key_alloc_pair()
629 if ((b & 1) || isset(asc->asc_keymap, keyix+64)) { in key_alloc_pair()
633 setbit(asc->asc_keymap, keyix); in key_alloc_pair()
634 setbit(asc->asc_keymap, keyix+64); in key_alloc_pair()
652 key_alloc_2pair(ath_t *asc, ieee80211_keyix *txkeyix, ieee80211_keyix *rxkeyix) in key_alloc_2pair() argument
656 ASSERT(asc->asc_splitmic); in key_alloc_2pair()
657 for (i = 0; i < ATH_N(asc->asc_keymap)/4; i++) { in key_alloc_2pair()
658 uint8_t b = asc->asc_keymap[i]; in key_alloc_2pair()
670 if (isset(asc->asc_keymap, keyix+32) || in key_alloc_2pair()
671 isset(asc->asc_keymap, keyix+64) || in key_alloc_2pair()
672 isset(asc->asc_keymap, keyix+32+64)) { in key_alloc_2pair()
680 setbit(asc->asc_keymap, keyix); in key_alloc_2pair()
681 setbit(asc->asc_keymap, keyix+64); in key_alloc_2pair()
682 setbit(asc->asc_keymap, keyix+32); in key_alloc_2pair()
683 setbit(asc->asc_keymap, keyix+32+64); in key_alloc_2pair()
700 key_alloc_single(ath_t *asc, ieee80211_keyix *txkeyix, ieee80211_keyix *rxkeyix) in key_alloc_single() argument
705 for (i = 0; i < ATH_N(asc->asc_keymap); i++) { in key_alloc_single()
706 uint8_t b = asc->asc_keymap[i]; in key_alloc_single()
715 setbit(asc->asc_keymap, keyix); in key_alloc_single()
739 ath_t *asc = (ath_t *)ic; in ath_key_alloc() local
750 return (key_alloc_single(asc, keyix, rxkeyix)); in ath_key_alloc()
753 if (asc->asc_splitmic) in ath_key_alloc()
754 return (key_alloc_2pair(asc, keyix, rxkeyix)); in ath_key_alloc()
756 return (key_alloc_pair(asc, keyix, rxkeyix)); in ath_key_alloc()
758 return (key_alloc_single(asc, keyix, rxkeyix)); in ath_key_alloc()
768 ath_t *asc = (ath_t *)ic; in ath_key_delete() local
769 struct ath_hal *ah = asc->asc_ah; in ath_key_delete()
781 (k->wk_flags & IEEE80211_KEY_SWMIC) == 0 && asc->asc_splitmic) in ath_key_delete()
789 clrbit(asc->asc_keymap, keyix); in ath_key_delete()
796 clrbit(asc->asc_keymap, keyix+64); in ath_key_delete()
797 if (asc->asc_splitmic) { in ath_key_delete()
799 clrbit(asc->asc_keymap, keyix+32); in ath_key_delete()
801 clrbit(asc->asc_keymap, keyix+32+64); in ath_key_delete()
809 ath_keyprint(ath_t *asc, const char *tag, uint_t ix, in ath_keyprint() argument
834 asc->asc_splitmic ? "mic" : "rxmic"); in ath_keyprint()
841 if (!asc->asc_splitmic) { in ath_keyprint()
860 ath_keyset_tkip(ath_t *asc, const struct ieee80211_key *k, in ath_keyset_tkip() argument
865 struct ath_hal *ah = asc->asc_ah; in ath_keyset_tkip()
869 if (asc->asc_splitmic) { in ath_keyset_tkip()
876 ath_keyprint(asc, "ath_keyset_tkip:", k->wk_keyix, hk, in ath_keyset_tkip()
883 ath_keyprint(asc, "ath_keyset_tkip:", k->wk_keyix+32, in ath_keyset_tkip()
896 ath_keyprint(asc, "ath_keyset_tkip", k->wk_keyix, hk, in ath_keyset_tkip()
907 ath_keyprint(asc, "ath_keyset_tkip:", k->wk_keyix, hk, in ath_keyset_tkip()
931 ath_t *asc = (ath_t *)ic; in ath_key_set() local
932 struct ath_hal *ah = asc->asc_ah; in ath_key_set()
953 return (ath_keyset_tkip(asc, k, &hk, mac)); in ath_key_set()
955 ath_keyprint(asc, "ath_keyset:", k->wk_keyix, &hk, mac); in ath_key_set()
977 ath_t *asc = (ath_t *)ic; in ath_reset() local
978 struct ath_hal *ah = asc->asc_ah; in ath_reset()
987 asc->asc_curchan.channel = ch->ich_freq; in ath_reset()
988 asc->asc_curchan.channelFlags = ath_chan2flags(ic, ch); in ath_reset()
991 ath_draintxq(asc); /* stop xmit side */ in ath_reset()
992 if (ATH_IS_RUNNING(asc)) { in ath_reset()
993 ath_stoprecv(asc); /* stop recv side */ in ath_reset()
996 &asc->asc_curchan, AH_TRUE, &status)) { in ath_reset()
1001 ath_chan_change(asc, ch); in ath_reset()
1003 if (ATH_IS_RUNNING(asc)) { in ath_reset()
1004 if (ath_startrecv(asc) != 0) /* restart recv */ in ath_reset()
1008 ath_beacon_config(asc); /* restart beacons */ in ath_reset()
1010 ATH_HAL_INTRSET(ah, asc->asc_imask); in ath_reset()