Lines Matching refs:asc
156 extern int32_t ath_getset(ath_t *asc, mblk_t *mp, uint32_t cmd);
303 ath_setup_desc(ath_t *asc, struct ath_buf *bf) in ath_setup_desc() argument
310 ATH_HAL_SETUPRXDESC(asc->asc_ah, ds, in ath_setup_desc()
314 if (asc->asc_rxlink != NULL) in ath_setup_desc()
315 *asc->asc_rxlink = bf->bf_daddr; in ath_setup_desc()
316 asc->asc_rxlink = &ds->ds_link; in ath_setup_desc()
387 ath_buflist_setup(dev_info_t *devinfo, ath_t *asc, list_t *bflist, in ath_buflist_setup() argument
398 bf->bf_daddr = asc->asc_desc_dma.cookie.dmac_address + in ath_buflist_setup()
399 ((uintptr_t)ds - (uintptr_t)asc->asc_desc); in ath_buflist_setup()
404 asc->asc_dmabuf_size, &ath_desc_accattr, DDI_DMA_STREAMING, in ath_buflist_setup()
446 ath_desc_free(ath_t *asc) in ath_desc_free() argument
448 ath_buflist_cleanup(&asc->asc_txbuf_list); in ath_desc_free()
449 ath_buflist_cleanup(&asc->asc_rxbuf_list); in ath_desc_free()
452 ath_free_dma_mem(&asc->asc_desc_dma); in ath_desc_free()
454 kmem_free((void *)asc->asc_vbufptr, asc->asc_vbuflen); in ath_desc_free()
455 asc->asc_vbufptr = NULL; in ath_desc_free()
459 ath_desc_alloc(dev_info_t *devinfo, ath_t *asc) in ath_desc_alloc() argument
470 DDI_DMA_RDWR | DDI_DMA_CONSISTENT, &asc->asc_desc_dma); in ath_desc_alloc()
473 asc->asc_desc = (struct ath_desc *)asc->asc_desc_dma.mem_va; in ath_desc_alloc()
475 ds = asc->asc_desc; in ath_desc_alloc()
478 asc->asc_desc, asc->asc_desc_dma.alength, in ath_desc_alloc()
479 asc->asc_desc_dma.cookie.dmac_address)); in ath_desc_alloc()
482 asc->asc_vbuflen = sizeof (struct ath_buf) * (ATH_TXBUF + ATH_RXBUF); in ath_desc_alloc()
483 bf = (struct ath_buf *)kmem_zalloc(asc->asc_vbuflen, KM_SLEEP); in ath_desc_alloc()
484 asc->asc_vbufptr = bf; in ath_desc_alloc()
487 asc->asc_dmabuf_size = roundup(1000 + sizeof (struct ieee80211_frame) + in ath_desc_alloc()
490 IEEE80211_WEP_CRCLEN), asc->asc_cachelsz); in ath_desc_alloc()
493 err = ath_buflist_setup(devinfo, asc, &asc->asc_rxbuf_list, &bf, &ds, in ath_desc_alloc()
496 ath_desc_free(asc); in ath_desc_alloc()
501 err = ath_buflist_setup(devinfo, asc, &asc->asc_txbuf_list, &bf, &ds, in ath_desc_alloc()
504 ath_desc_free(asc); in ath_desc_alloc()
528 ath_rx_handler(ath_t *asc) in ath_rx_handler() argument
530 ieee80211com_t *ic = (ieee80211com_t *)asc; in ath_rx_handler()
532 struct ath_hal *ah = asc->asc_ah; in ath_rx_handler()
544 mutex_enter(&asc->asc_rxbuflock); in ath_rx_handler()
545 bf = list_head(&asc->asc_rxbuf_list); in ath_rx_handler()
549 mutex_exit(&asc->asc_rxbuflock); in ath_rx_handler()
559 mutex_exit(&asc->asc_rxbuflock); in ath_rx_handler()
566 ATH_PA2DESC(asc, ds->ds_link), rs); in ath_rx_handler()
568 mutex_exit(&asc->asc_rxbuflock); in ath_rx_handler()
571 list_remove(&asc->asc_rxbuf_list, bf); in ath_rx_handler()
572 mutex_exit(&asc->asc_rxbuflock); in ath_rx_handler()
576 asc->asc_stats.ast_rx_crcerr++; in ath_rx_handler()
578 asc->asc_stats.ast_rx_fifoerr++; in ath_rx_handler()
580 asc->asc_stats.ast_rx_badcrypt++; in ath_rx_handler()
582 asc->asc_stats.ast_rx_phyerr++; in ath_rx_handler()
584 asc->asc_stats.ast_rx_phy[phyerr]++; in ath_rx_handler()
592 asc->asc_stats.ast_rx_tooshort++; in ath_rx_handler()
596 if ((rx_mp = allocb(asc->asc_dmabuf_size, BPRI_MED)) == NULL) { in ath_rx_handler()
636 mutex_enter(&asc->asc_rxbuflock); in ath_rx_handler()
637 list_insert_tail(&asc->asc_rxbuf_list, bf); in ath_rx_handler()
638 mutex_exit(&asc->asc_rxbuflock); in ath_rx_handler()
639 ath_setup_desc(asc, bf); in ath_rx_handler()
643 ATH_HAL_RXMONITOR(ah, &hal_node_stats, &asc->asc_curchan); in ath_rx_handler()
669 ath_tx_start(ath_t *asc, struct ieee80211_node *in, struct ath_buf *bf, in ath_tx_start() argument
672 ieee80211com_t *ic = (ieee80211com_t *)asc; in ath_tx_start()
674 struct ath_hal *ah = asc->asc_ah; in ath_tx_start()
748 rt = asc->asc_currates; in ath_tx_start()
759 asc->asc_stats.ast_tx_shortpre++; in ath_tx_start()
788 txq = asc->asc_ac2q[WME_AC_VO]; in ath_tx_start()
800 txq = asc->asc_ac2q[WME_AC_VO]; in ath_tx_start()
811 txq = asc->asc_ac2q[WME_AC_BK]; in ath_tx_start()
815 asc->asc_stats.ast_tx_invalid++; in ath_tx_start()
824 asc->asc_stats.ast_tx_noack++; in ath_tx_start()
827 asc->asc_stats.ast_tx_rts++; in ath_tx_start()
957 ath_t *asc = (ath_t *)ic; in ath_xmit() local
958 struct ath_hal *ah = asc->asc_ah; in ath_xmit()
966 if (!ATH_IS_RUNNING(asc)) { in ath_xmit()
975 mutex_enter(&asc->asc_txbuflock); in ath_xmit()
976 bf = list_head(&asc->asc_txbuf_list); in ath_xmit()
978 list_remove(&asc->asc_txbuf_list, bf); in ath_xmit()
979 if (list_empty(&asc->asc_txbuf_list)) { in ath_xmit()
982 asc->asc_stats.ast_tx_qstop++; in ath_xmit()
984 mutex_exit(&asc->asc_txbuflock); in ath_xmit()
991 asc->asc_stats.ast_tx_nobuf++; in ath_xmit()
992 mutex_enter(&asc->asc_resched_lock); in ath_xmit()
993 asc->asc_resched_needed = B_TRUE; in ath_xmit()
994 mutex_exit(&asc->asc_resched_lock); in ath_xmit()
996 asc->asc_stats.ast_tx_nobufmgt++; in ath_xmit()
1031 asc->asc_stats.ast_tx_mgmt++; in ath_xmit()
1035 error = ath_tx_start(asc, in, bf, mp); in ath_xmit()
1040 mutex_enter(&asc->asc_txbuflock); in ath_xmit()
1041 list_insert_tail(&asc->asc_txbuf_list, bf); in ath_xmit()
1042 mutex_exit(&asc->asc_txbuflock); in ath_xmit()
1058 ath_t *asc = arg; in ath_m_tx() local
1059 ieee80211com_t *ic = (ieee80211com_t *)asc; in ath_m_tx()
1071 asc->asc_stats.ast_tx_discard++; in ath_m_tx()
1096 ath_tx_processq(ath_t *asc, struct ath_txq *txq) in ath_tx_processq() argument
1098 ieee80211com_t *ic = (ieee80211com_t *)asc; in ath_tx_processq()
1099 struct ath_hal *ah = asc->asc_ah; in ath_tx_processq()
1136 asc->asc_stats.ast_tx_altrate++; in ath_tx_processq()
1137 asc->asc_stats.ast_tx_rssidelta = in ath_tx_processq()
1138 ts->ts_rssi - asc->asc_stats.ast_tx_rssi; in ath_tx_processq()
1139 asc->asc_stats.ast_tx_rssi = ts->ts_rssi; in ath_tx_processq()
1143 asc->asc_stats.ast_tx_xretries++; in ath_tx_processq()
1145 asc->asc_stats.ast_tx_fifoerr++; in ath_tx_processq()
1147 asc->asc_stats.ast_tx_filtered++; in ath_tx_processq()
1152 asc->asc_stats.ast_tx_shortretry += sr; in ath_tx_processq()
1153 asc->asc_stats.ast_tx_longretry += lr; in ath_tx_processq()
1173 mutex_enter(&asc->asc_txbuflock); in ath_tx_processq()
1174 list_insert_tail(&asc->asc_txbuf_list, bf); in ath_tx_processq()
1175 mutex_exit(&asc->asc_txbuflock); in ath_tx_processq()
1179 mutex_enter(&asc->asc_resched_lock); in ath_tx_processq()
1180 if (asc->asc_resched_needed) { in ath_tx_processq()
1181 asc->asc_resched_needed = B_FALSE; in ath_tx_processq()
1184 mutex_exit(&asc->asc_resched_lock); in ath_tx_processq()
1191 ath_tx_handler(ath_t *asc) in ath_tx_handler() argument
1199 if (ATH_TXQ_SETUP(asc, i)) { in ath_tx_handler()
1200 (void) ath_tx_processq(asc, &asc->asc_txq[i]); in ath_tx_handler()
1209 ath_t *asc = (ath_t *)ic; in ath_node_alloc() local
1212 ath_rate_update(asc, &an->an_node, 0); in ath_node_alloc()
1220 ath_t *asc = (ath_t *)ic; in ath_node_free() local
1226 if (ATH_TXQ_SETUP(asc, i)) { in ath_node_free()
1227 txq = &asc->asc_txq[i]; in ath_node_free()
1249 ath_t *asc = (ath_t *)ic; in ath_next_scan() local
1251 asc->asc_scan_timer = 0; in ath_next_scan()
1253 asc->asc_scan_timer = timeout(ath_next_scan, (void *)asc, in ath_next_scan()
1260 ath_stop_scantimer(ath_t *asc) in ath_stop_scantimer() argument
1264 while ((asc->asc_scan_timer != 0) && (tmp_id != asc->asc_scan_timer)) { in ath_stop_scantimer()
1265 tmp_id = asc->asc_scan_timer; in ath_stop_scantimer()
1268 asc->asc_scan_timer = 0; in ath_stop_scantimer()
1274 ath_t *asc = (ath_t *)ic; in ath_newstate() local
1275 struct ath_hal *ah = asc->asc_ah; in ath_newstate()
1289 if (!ATH_IS_RUNNING(asc)) in ath_newstate()
1294 ath_stop_scantimer(asc); in ath_newstate()
1296 ATH_LOCK(asc); in ath_newstate()
1300 asc->asc_imask &= ~(HAL_INT_SWBA | HAL_INT_BMISS); in ath_newstate()
1304 ATH_HAL_INTRSET(ah, asc->asc_imask &~ HAL_INT_GLOBAL); in ath_newstate()
1305 ATH_UNLOCK(asc); in ath_newstate()
1309 error = ath_chan_set(asc, ic->ic_curchan); in ath_newstate()
1312 ATH_UNLOCK(asc); in ath_newstate()
1318 rfilt = ath_calcrxfilter(asc); in ath_newstate()
1340 ath_beacon_config(asc); in ath_newstate()
1342 asc->asc_imask &= ~(HAL_INT_SWBA | HAL_INT_BMISS); in ath_newstate()
1343 ATH_HAL_INTRSET(ah, asc->asc_imask); in ath_newstate()
1348 ath_rate_ctl_reset(asc, nstate); in ath_newstate()
1350 ATH_UNLOCK(asc); in ath_newstate()
1355 error = asc->asc_newstate(ic, nstate, arg); in ath_newstate()
1363 ASSERT(asc->asc_scan_timer == 0); in ath_newstate()
1364 asc->asc_scan_timer = timeout(ath_next_scan, (void *)asc, in ath_newstate()
1376 ath_calibrate(ath_t *asc) in ath_calibrate() argument
1378 struct ath_hal *ah = asc->asc_ah; in ath_calibrate()
1381 asc->asc_stats.ast_per_cal++; in ath_calibrate()
1390 asc->asc_stats.ast_per_rfgain++; in ath_calibrate()
1391 (void) ath_reset(&asc->asc_isc); in ath_calibrate()
1393 if (!ATH_HAL_CALIBRATE(ah, &asc->asc_curchan, &iqcaldone)) { in ath_calibrate()
1396 asc->asc_curchan.channel)); in ath_calibrate()
1397 asc->asc_stats.ast_per_calfail++; in ath_calibrate()
1404 ath_t *asc = arg; in ath_watchdog() local
1405 ieee80211com_t *ic = &asc->asc_isc; in ath_watchdog()
1408 ATH_LOCK(asc); in ath_watchdog()
1410 if (!ATH_IS_RUNNING(asc)) { in ath_watchdog()
1411 ATH_UNLOCK(asc); in ath_watchdog()
1417 ath_calibrate(asc); in ath_watchdog()
1424 asc->asc_stats.ast_rate_calls ++; in ath_watchdog()
1429 ath_rate_ctl, asc); in ath_watchdog()
1434 ATH_UNLOCK(asc); in ath_watchdog()
1444 ath_t *asc = arg; in ath_tx_proc() local
1445 ath_tx_handler(asc); in ath_tx_proc()
1453 ath_t *asc = (ath_t *)arg; in ath_intr() local
1454 struct ath_hal *ah = asc->asc_ah; in ath_intr()
1456 ieee80211com_t *ic = (ieee80211com_t *)asc; in ath_intr()
1458 ATH_LOCK(asc); in ath_intr()
1460 if (!ATH_IS_RUNNING(asc)) { in ath_intr()
1465 ATH_UNLOCK(asc); in ath_intr()
1470 ATH_UNLOCK(asc); in ath_intr()
1475 status &= asc->asc_imask; in ath_intr()
1477 asc->asc_stats.ast_hardware++; in ath_intr()
1480 asc->asc_stats.ast_rxorn++; in ath_intr()
1484 asc->asc_stats.ast_rxeol++; in ath_intr()
1485 asc->asc_rxlink = NULL; in ath_intr()
1488 asc->asc_stats.ast_txurn++; in ath_intr()
1493 asc->asc_rx_pend = 1; in ath_intr()
1494 ddi_trigger_softintr(asc->asc_softint_id); in ath_intr()
1497 if (ddi_taskq_dispatch(asc->asc_tq, ath_tx_proc, in ath_intr()
1498 asc, DDI_NOSLEEP) != DDI_SUCCESS) { in ath_intr()
1503 ATH_UNLOCK(asc); in ath_intr()
1522 ATH_UNLOCK(asc); in ath_intr()
1530 ath_t *asc = (ath_t *)data; in ath_softint_handler() local
1536 ATH_LOCK(asc); in ath_softint_handler()
1537 if (asc->asc_rx_pend) { /* Soft interrupt for this driver */ in ath_softint_handler()
1538 asc->asc_rx_pend = 0; in ath_softint_handler()
1539 ATH_UNLOCK(asc); in ath_softint_handler()
1540 ath_rx_handler(asc); in ath_softint_handler()
1543 ATH_UNLOCK(asc); in ath_softint_handler()
1559 ath_stop_locked(ath_t *asc) in ath_stop_locked() argument
1561 ieee80211com_t *ic = (ieee80211com_t *)asc; in ath_stop_locked()
1562 struct ath_hal *ah = asc->asc_ah; in ath_stop_locked()
1564 ATH_LOCK_ASSERT(asc); in ath_stop_locked()
1565 if (!asc->asc_isrunning) in ath_stop_locked()
1583 ATH_UNLOCK(asc); in ath_stop_locked()
1586 ATH_LOCK(asc); in ath_stop_locked()
1588 ath_draintxq(asc); in ath_stop_locked()
1589 if (!asc->asc_invalid) { in ath_stop_locked()
1590 ath_stoprecv(asc); in ath_stop_locked()
1593 asc->asc_rxlink = NULL; in ath_stop_locked()
1595 asc->asc_isrunning = 0; in ath_stop_locked()
1601 ath_t *asc = arg; in ath_m_stop() local
1602 struct ath_hal *ah = asc->asc_ah; in ath_m_stop()
1604 ATH_LOCK(asc); in ath_m_stop()
1605 ath_stop_locked(asc); in ath_m_stop()
1607 asc->asc_invalid = 1; in ath_m_stop()
1608 ATH_UNLOCK(asc); in ath_m_stop()
1612 ath_start_locked(ath_t *asc) in ath_start_locked() argument
1614 ieee80211com_t *ic = (ieee80211com_t *)asc; in ath_start_locked()
1615 struct ath_hal *ah = asc->asc_ah; in ath_start_locked()
1618 ATH_LOCK_ASSERT(asc); in ath_start_locked()
1627 asc->asc_curchan.channel = ic->ic_curchan->ich_freq; in ath_start_locked()
1628 asc->asc_curchan.channelFlags = ath_chan2flags(ic, ic->ic_curchan); in ath_start_locked()
1630 &asc->asc_curchan, AH_FALSE, &status)) { in ath_start_locked()
1637 (void) ath_startrecv(asc); in ath_start_locked()
1642 asc->asc_imask = HAL_INT_RX | HAL_INT_TX in ath_start_locked()
1645 ATH_HAL_INTRSET(ah, asc->asc_imask); in ath_start_locked()
1652 ath_chan_change(asc, ic->ic_curchan); in ath_start_locked()
1654 asc->asc_isrunning = 1; in ath_start_locked()
1662 ath_t *asc = arg; in ath_m_start() local
1665 ATH_LOCK(asc); in ath_m_start()
1670 ath_stop_locked(asc); in ath_m_start()
1672 if ((err = ath_start_locked(asc)) != 0) { in ath_m_start()
1673 ATH_UNLOCK(asc); in ath_m_start()
1677 asc->asc_invalid = 0; in ath_m_start()
1678 ATH_UNLOCK(asc); in ath_m_start()
1687 ath_t *asc = arg; in ath_m_unicst() local
1688 struct ath_hal *ah = asc->asc_ah; in ath_m_unicst()
1695 ATH_LOCK(asc); in ath_m_unicst()
1696 IEEE80211_ADDR_COPY(asc->asc_isc.ic_macaddr, macaddr); in ath_m_unicst()
1697 ATH_HAL_SETMAC(ah, asc->asc_isc.ic_macaddr); in ath_m_unicst()
1699 (void) ath_reset(&asc->asc_isc); in ath_m_unicst()
1700 ATH_UNLOCK(asc); in ath_m_unicst()
1707 ath_t *asc = arg; in ath_m_promisc() local
1708 struct ath_hal *ah = asc->asc_ah; in ath_m_promisc()
1711 ATH_LOCK(asc); in ath_m_promisc()
1717 asc->asc_promisc = on; in ath_m_promisc()
1719 ATH_UNLOCK(asc); in ath_m_promisc()
1727 ath_t *asc = arg; in ath_m_multicst() local
1728 struct ath_hal *ah = asc->asc_ah; in ath_m_multicst()
1731 uint32_t *mfilt = asc->asc_mcast_hash; in ath_m_multicst()
1733 ATH_LOCK(asc); in ath_m_multicst()
1745 asc->asc_mcast_refs[pos]++; in ath_m_multicst()
1748 if (--asc->asc_mcast_refs[pos] == 0) in ath_m_multicst()
1753 ATH_UNLOCK(asc); in ath_m_multicst()
1763 ath_t *asc = arg; in ath_m_setprop() local
1766 err = ieee80211_setprop(&asc->asc_isc, pr_name, wldp_pr_num, in ath_m_setprop()
1769 ATH_LOCK(asc); in ath_m_setprop()
1772 if (ATH_IS_RUNNING(asc)) { in ath_m_setprop()
1773 ATH_UNLOCK(asc); in ath_m_setprop()
1774 (void) ath_m_start(asc); in ath_m_setprop()
1775 (void) ieee80211_new_state(&asc->asc_isc, in ath_m_setprop()
1777 ATH_LOCK(asc); in ath_m_setprop()
1782 ATH_UNLOCK(asc); in ath_m_setprop()
1791 ath_t *asc = arg; in ath_m_getprop() local
1794 err = ieee80211_getprop(&asc->asc_isc, pr_name, wldp_pr_num, in ath_m_getprop()
1804 ath_t *asc = arg; in ath_m_propinfo() local
1806 ieee80211_propinfo(&asc->asc_isc, pr_name, wldp_pr_num, mph); in ath_m_propinfo()
1812 ath_t *asc = arg; in ath_m_ioctl() local
1815 err = ieee80211_ioctl(&asc->asc_isc, wq, mp); in ath_m_ioctl()
1816 ATH_LOCK(asc); in ath_m_ioctl()
1818 if (ATH_IS_RUNNING(asc)) { in ath_m_ioctl()
1819 ATH_UNLOCK(asc); in ath_m_ioctl()
1820 (void) ath_m_start(asc); in ath_m_ioctl()
1821 (void) ieee80211_new_state(&asc->asc_isc, in ath_m_ioctl()
1823 ATH_LOCK(asc); in ath_m_ioctl()
1826 ATH_UNLOCK(asc); in ath_m_ioctl()
1832 ath_t *asc = arg; in ath_m_stat() local
1833 ieee80211com_t *ic = (ieee80211com_t *)asc; in ath_m_stat()
1837 ATH_LOCK(asc); in ath_m_stat()
1844 *val = asc->asc_stats.ast_tx_nobuf + in ath_m_stat()
1845 asc->asc_stats.ast_tx_nobufmgt; in ath_m_stat()
1848 *val = asc->asc_stats.ast_rx_tooshort; in ath_m_stat()
1864 *val = asc->asc_stats.ast_tx_fifoerr + in ath_m_stat()
1865 asc->asc_stats.ast_tx_xretries + in ath_m_stat()
1866 asc->asc_stats.ast_tx_discard; in ath_m_stat()
1869 *val = asc->asc_stats.ast_tx_xretries; in ath_m_stat()
1872 *val = asc->asc_stats.ast_rx_crcerr; in ath_m_stat()
1875 *val = asc->asc_stats.ast_rx_badcrypt; in ath_m_stat()
1885 ATH_UNLOCK(asc); in ath_m_stat()
1888 ATH_UNLOCK(asc); in ath_m_stat()
1891 ATH_UNLOCK(asc); in ath_m_stat()
1897 ath_pci_setup(ath_t *asc) in ath_pci_setup() argument
1904 ASSERT(asc != NULL); in ath_pci_setup()
1905 command = pci_config_get16(asc->asc_cfg_handle, PCI_CONF_COMM); in ath_pci_setup()
1907 pci_config_put16(asc->asc_cfg_handle, PCI_CONF_COMM, command); in ath_pci_setup()
1908 command = pci_config_get16(asc->asc_cfg_handle, PCI_CONF_COMM); in ath_pci_setup()
1928 ath_t *asc; in ath_resume() local
1931 asc = ddi_get_soft_state(ath_soft_state_p, ddi_get_instance(devinfo)); in ath_resume()
1932 if (asc == NULL) { in ath_resume()
1938 ATH_LOCK(asc); in ath_resume()
1943 if (ath_pci_setup(asc) != 0) { in ath_resume()
1946 ATH_UNLOCK(asc); in ath_resume()
1950 if (!asc->asc_invalid) in ath_resume()
1951 ret = ath_start_locked(asc); in ath_resume()
1952 ATH_UNLOCK(asc); in ath_resume()
1960 ath_t *asc; in ath_attach() local
1994 asc = ddi_get_soft_state(ath_soft_state_p, ddi_get_instance(devinfo)); in ath_attach()
1995 ic = (ieee80211com_t *)asc; in ath_attach()
1996 asc->asc_dev = devinfo; in ath_attach()
1998 mutex_init(&asc->asc_genlock, NULL, MUTEX_DRIVER, NULL); in ath_attach()
1999 mutex_init(&asc->asc_txbuflock, NULL, MUTEX_DRIVER, NULL); in ath_attach()
2000 mutex_init(&asc->asc_rxbuflock, NULL, MUTEX_DRIVER, NULL); in ath_attach()
2001 mutex_init(&asc->asc_resched_lock, NULL, MUTEX_DRIVER, NULL); in ath_attach()
2003 err = pci_config_setup(devinfo, &asc->asc_cfg_handle); in ath_attach()
2010 if (ath_pci_setup(asc) != 0) in ath_attach()
2017 csz = pci_config_get8(asc->asc_cfg_handle, PCI_CONF_CACHE_LINESZ); in ath_attach()
2025 pci_config_put8(asc->asc_cfg_handle, PCI_CONF_CACHE_LINESZ, in ath_attach()
2028 asc->asc_cachelsz = csz << 2; in ath_attach()
2029 vendor_id = pci_config_get16(asc->asc_cfg_handle, PCI_CONF_VENID); in ath_attach()
2030 device_id = pci_config_get16(asc->asc_cfg_handle, PCI_CONF_DEVID); in ath_attach()
2038 pci_config_put8(asc->asc_cfg_handle, PCI_CONF_LATENCY_TIMER, 0xa8); in ath_attach()
2039 val = pci_config_get32(asc->asc_cfg_handle, 0x40); in ath_attach()
2041 pci_config_put32(asc->asc_cfg_handle, 0x40, val & 0xffff00ff); in ath_attach()
2044 ®s, 0, 0, &ath_reg_accattr, &asc->asc_io_handle); in ath_attach()
2053 ah = ath_hal_attach(device_id, asc, 0, regs, &status); in ath_attach()
2064 asc->asc_ah = ah; in ath_attach()
2097 asc->asc_mrretry = ATH_HAL_SETUPXTXDESC(ah, NULL, 0, 0, 0, 0, 0, 0); in ath_attach()
2100 asc->asc_mrretry)); in ath_attach()
2105 asc->asc_keymax = ATH_HAL_KEYCACHESIZE(ah); in ath_attach()
2106 if (asc->asc_keymax > sizeof (asc->asc_keymap) * NBBY) { in ath_attach()
2109 sizeof (asc->asc_keymap) * NBBY, asc->asc_keymax)); in ath_attach()
2110 asc->asc_keymax = sizeof (asc->asc_keymap) * NBBY; in ath_attach()
2116 for (i = 0; i < asc->asc_keymax; i++) in ath_attach()
2127 asc->asc_have11g = 0; in ath_attach()
2130 err = ath_getchannels(asc, ath_countrycode, AH_FALSE, AH_TRUE); in ath_attach()
2137 ath_rate_setup(asc, IEEE80211_MODE_11A); in ath_attach()
2138 ath_rate_setup(asc, IEEE80211_MODE_11B); in ath_attach()
2139 ath_rate_setup(asc, IEEE80211_MODE_11G); in ath_attach()
2140 ath_rate_setup(asc, IEEE80211_MODE_TURBO_A); in ath_attach()
2143 ath_setcurmode(asc, IEEE80211_MODE_11A); in ath_attach()
2145 err = ath_desc_alloc(devinfo, asc); in ath_attach()
2152 if ((asc->asc_tq = ddi_taskq_create(devinfo, "ath_taskq", 1, in ath_attach()
2157 if (ath_txq_setup(asc)) in ath_attach()
2167 if (asc->asc_have11g) in ath_attach()
2202 asc->asc_splitmic = 1; in ath_attach()
2207 asc->asc_hasclrkey = ATH_HAL_CIPHERSUPPORTED(ah, HAL_CIPHER_CLR); in ath_attach()
2214 setbit(asc->asc_keymap, i); in ath_attach()
2215 setbit(asc->asc_keymap, i+64); in ath_attach()
2216 if (asc->asc_splitmic) { in ath_attach()
2217 setbit(asc->asc_keymap, i+32); in ath_attach()
2218 setbit(asc->asc_keymap, i+32+64); in ath_attach()
2237 asc->asc_newstate = ic->ic_newstate; in ath_attach()
2251 asc->asc_rx_pend = 0; in ath_attach()
2254 &asc->asc_softint_id, NULL, 0, ath_softint_handler, (caddr_t)asc); in ath_attach()
2261 if (ddi_get_iblock_cookie(devinfo, 0, &asc->asc_iblock) in ath_attach()
2269 (caddr_t)asc) != DDI_SUCCESS) { in ath_attach()
2290 macp->m_driver = asc; in ath_attach()
2317 asc->asc_invalid = 1; in ath_attach()
2318 asc->asc_isrunning = 0; in ath_attach()
2319 asc->asc_promisc = B_FALSE; in ath_attach()
2320 bzero(asc->asc_mcast_refs, sizeof (asc->asc_mcast_refs)); in ath_attach()
2321 bzero(asc->asc_mcast_hash, sizeof (asc->asc_mcast_hash)); in ath_attach()
2324 ddi_remove_intr(devinfo, 0, asc->asc_iblock); in ath_attach()
2326 ddi_remove_softintr(asc->asc_softint_id); in ath_attach()
2330 ath_desc_free(asc); in ath_attach()
2331 if (asc->asc_tq) in ath_attach()
2332 ddi_taskq_destroy(asc->asc_tq); in ath_attach()
2334 ah->ah_detach(asc->asc_ah); in ath_attach()
2336 ddi_regs_map_free(&asc->asc_io_handle); in ath_attach()
2338 pci_config_teardown(&asc->asc_cfg_handle); in ath_attach()
2340 asc->asc_invalid = 1; in ath_attach()
2341 mutex_destroy(&asc->asc_txbuflock); in ath_attach()
2343 if (ATH_TXQ_SETUP(asc, i)) { in ath_attach()
2344 struct ath_txq *txq = &asc->asc_txq[i]; in ath_attach()
2348 mutex_destroy(&asc->asc_rxbuflock); in ath_attach()
2349 mutex_destroy(&asc->asc_genlock); in ath_attach()
2350 mutex_destroy(&asc->asc_resched_lock); in ath_attach()
2360 ath_suspend(ath_t *asc) in ath_suspend() argument
2362 ATH_LOCK(asc); in ath_suspend()
2363 ath_stop_locked(asc); in ath_suspend()
2364 ATH_UNLOCK(asc); in ath_suspend()
2373 ath_t *asc; in ath_detach() local
2375 asc = ddi_get_soft_state(ath_soft_state_p, ddi_get_instance(devinfo)); in ath_detach()
2376 ASSERT(asc != NULL); in ath_detach()
2383 return (ath_suspend(asc)); in ath_detach()
2389 if (mac_disable(asc->asc_isc.ic_mach) != 0) in ath_detach()
2392 ath_stop_scantimer(asc); in ath_detach()
2395 ATH_HAL_INTRSET(asc->asc_ah, 0); in ath_detach()
2400 (void) mac_unregister(asc->asc_isc.ic_mach); in ath_detach()
2403 ddi_remove_intr(devinfo, 0, asc->asc_iblock); in ath_detach()
2404 ddi_remove_softintr(asc->asc_softint_id); in ath_detach()
2417 ieee80211_detach(&asc->asc_isc); in ath_detach()
2418 ath_desc_free(asc); in ath_detach()
2419 ddi_taskq_destroy(asc->asc_tq); in ath_detach()
2420 ath_txq_cleanup(asc); in ath_detach()
2421 asc->asc_ah->ah_detach(asc->asc_ah); in ath_detach()
2424 ddi_regs_map_free(&asc->asc_io_handle); in ath_detach()
2425 pci_config_teardown(&asc->asc_cfg_handle); in ath_detach()
2428 mutex_destroy(&asc->asc_rxbuflock); in ath_detach()
2429 mutex_destroy(&asc->asc_genlock); in ath_detach()
2430 mutex_destroy(&asc->asc_resched_lock); in ath_detach()
2451 ath_t *asc; in ath_quiesce() local
2455 asc = ddi_get_soft_state(ath_soft_state_p, ddi_get_instance(devinfo)); in ath_quiesce()
2457 if (asc == NULL || (ah = asc->asc_ah) == NULL) in ath_quiesce()
2469 if (ATH_TXQ_SETUP(asc, i)) { in ath_quiesce()
2470 ATH_HAL_STOPTXDMA(ah, asc->asc_txq[i].axq_qnum); in ath_quiesce()