Lines Matching defs:rtlsp
117 static void rtls_chip_stop(rtls_t *rtlsp);
118 static void rtls_chip_start(rtls_t *rtlsp);
119 static void rtls_chip_restart(rtls_t *rtlsp);
227 static uint8_t rtls_reg_get8(rtls_t *rtlsp, uint32_t reg);
230 rtls_reg_get8(rtls_t *rtlsp, uint32_t reg)
234 addr = REG8(rtlsp->io_reg, reg);
235 return (ddi_get8(rtlsp->io_handle, addr));
238 static uint16_t rtls_reg_get16(rtls_t *rtlsp, uint32_t reg);
241 rtls_reg_get16(rtls_t *rtlsp, uint32_t reg)
245 addr = REG16(rtlsp->io_reg, reg);
246 return (ddi_get16(rtlsp->io_handle, addr));
249 static uint32_t rtls_reg_get32(rtls_t *rtlsp, uint32_t reg);
252 rtls_reg_get32(rtls_t *rtlsp, uint32_t reg)
256 addr = REG32(rtlsp->io_reg, reg);
257 return (ddi_get32(rtlsp->io_handle, addr));
260 static void rtls_reg_set8(rtls_t *rtlsp, uint32_t reg, uint8_t value);
263 rtls_reg_set8(rtls_t *rtlsp, uint32_t reg, uint8_t value)
267 addr = REG8(rtlsp->io_reg, reg);
268 ddi_put8(rtlsp->io_handle, addr, value);
271 static void rtls_reg_set16(rtls_t *rtlsp, uint32_t reg, uint16_t value);
274 rtls_reg_set16(rtls_t *rtlsp, uint32_t reg, uint16_t value)
278 addr = REG16(rtlsp->io_reg, reg);
279 ddi_put16(rtlsp->io_handle, addr, value);
282 static void rtls_reg_set32(rtls_t *rtlsp, uint32_t reg, uint32_t value);
285 rtls_reg_set32(rtls_t *rtlsp, uint32_t reg, uint32_t value)
289 addr = REG32(rtlsp->io_reg, reg);
290 ddi_put32(rtlsp->io_handle, addr, value);
338 rtls_t *rtlsp; /* Our private device info */
351 if ((rtlsp = ddi_get_driver_private(devinfo)) == NULL) {
354 mutex_enter(&rtlsp->rtls_io_lock);
355 mutex_enter(&rtlsp->rtls_rx_lock);
356 mutex_enter(&rtlsp->rtls_tx_lock);
363 mutex_exit(&rtlsp->rtls_tx_lock);
364 mutex_exit(&rtlsp->rtls_rx_lock);
365 mutex_exit(&rtlsp->rtls_io_lock);
374 rtls_chip_restart(rtlsp);
375 rtlsp->chip_error = B_FALSE;
376 rtlsp->tx_retry = 0;
377 rtlsp->rtls_suspended = B_FALSE;
378 mutex_exit(&rtlsp->rtls_tx_lock);
379 mutex_exit(&rtlsp->rtls_rx_lock);
380 mutex_exit(&rtlsp->rtls_io_lock);
382 mii_resume(rtlsp->mii);
384 mac_tx_update(rtlsp->mh);
447 rtlsp = kmem_zalloc(sizeof (rtls_t), KM_SLEEP);
449 ddi_set_driver_private(devinfo, rtlsp);
450 rtlsp->devinfo = devinfo;
451 rtlsp->instance = ddi_get_instance(devinfo);
456 err = ddi_regs_map_setup(devinfo, 1, &rtlsp->io_reg,
457 (offset_t)0, 0, &rtls_reg_accattr, &rtlsp->io_handle);
459 kmem_free((caddr_t)rtlsp, sizeof (rtls_t));
467 if (rtls_alloc_bufs(rtlsp) == DDI_FAILURE) {
475 err = rtls_chip_reset(rtlsp, B_FALSE);
482 rtls_get_mac_addr(rtlsp, rtlsp->netaddr);
494 if (ddi_add_intr(devinfo, 0, &rtlsp->iblk, NULL, rtls_intr,
495 (caddr_t)rtlsp) != DDI_SUCCESS) {
500 if ((rtlsp->mii = mii_alloc(rtlsp, devinfo, &rtls_mii_ops)) == NULL) {
501 ddi_remove_intr(devinfo, 0, rtlsp->iblk);
509 mii_set_pauseable(rtlsp->mii, B_FALSE, B_FALSE);
513 ddi_remove_intr(devinfo, 0, rtlsp->iblk);
520 mutex_init(&rtlsp->rtls_io_lock, NULL, MUTEX_DRIVER, rtlsp->iblk);
521 mutex_init(&rtlsp->rtls_tx_lock, NULL, MUTEX_DRIVER, rtlsp->iblk);
522 mutex_init(&rtlsp->rtls_rx_lock, NULL, MUTEX_DRIVER, rtlsp->iblk);
529 macp->m_driver = rtlsp;
531 macp->m_src_addr = rtlsp->netaddr;
537 if (mac_register(macp, &rtlsp->mh) != 0) {
538 ddi_remove_intr(devinfo, 0, rtlsp->iblk);
539 mutex_destroy(&rtlsp->rtls_io_lock);
540 mutex_destroy(&rtlsp->rtls_tx_lock);
541 mutex_destroy(&rtlsp->rtls_rx_lock);
552 if (rtlsp->mii)
553 mii_free(rtlsp->mii);
556 ddi_regs_map_free(&rtlsp->io_handle);
557 rtls_free_bufs(rtlsp);
558 kmem_free(rtlsp, sizeof (rtls_t));
569 rtls_t *rtlsp; /* our private device info */
574 if ((rtlsp = ddi_get_driver_private(devinfo)) == NULL) {
583 mii_suspend(rtlsp->mii);
585 mutex_enter(&rtlsp->rtls_io_lock);
586 mutex_enter(&rtlsp->rtls_rx_lock);
587 mutex_enter(&rtlsp->rtls_tx_lock);
589 rtlsp->rtls_suspended = B_TRUE;
590 rtls_chip_stop(rtlsp);
592 mutex_exit(&rtlsp->rtls_tx_lock);
593 mutex_exit(&rtlsp->rtls_rx_lock);
594 mutex_exit(&rtlsp->rtls_io_lock);
601 if (mac_unregister(rtlsp->mh) != 0) {
606 ddi_remove_intr(devinfo, 0, rtlsp->iblk);
608 mii_free(rtlsp->mii);
610 mutex_destroy(&rtlsp->rtls_io_lock);
611 mutex_destroy(&rtlsp->rtls_tx_lock);
612 mutex_destroy(&rtlsp->rtls_rx_lock);
614 ddi_regs_map_free(&rtlsp->io_handle);
615 rtls_free_bufs(rtlsp);
616 kmem_free(rtlsp, sizeof (rtls_t));
634 rtls_t *rtlsp; /* our private device info */
639 if ((rtlsp = ddi_get_driver_private(devinfo)) == NULL) {
642 return (rtls_chip_reset(rtlsp, B_TRUE));
655 rtls_t *rtlsp = (rtls_t *)arg;
657 mutex_enter(&rtlsp->rtls_io_lock);
658 mutex_enter(&rtlsp->rtls_rx_lock);
659 mutex_enter(&rtlsp->rtls_tx_lock);
661 if (!rtlsp->rtls_suspended)
662 rtls_chip_restart(rtlsp);
664 rtlsp->rtls_running = B_TRUE;
666 mutex_exit(&rtlsp->rtls_tx_lock);
667 mutex_exit(&rtlsp->rtls_rx_lock);
668 mutex_exit(&rtlsp->rtls_io_lock);
672 mii_start(rtlsp->mii);
683 rtls_t *rtlsp = (rtls_t *)arg;
685 mii_stop(rtlsp->mii);
687 mutex_enter(&rtlsp->rtls_io_lock);
689 if (!rtlsp->rtls_suspended)
690 rtls_chip_stop(rtlsp);
691 rtlsp->rtls_running = B_FALSE;
693 mutex_exit(&rtlsp->rtls_io_lock);
703 rtls_t *rtlsp = arg;
705 mutex_enter(&rtlsp->rtls_io_lock);
706 bcopy(macaddr, rtlsp->netaddr, ETHERADDRL);
707 if (!rtlsp->rtls_suspended)
708 rtls_set_mac_addr(rtlsp, rtlsp->netaddr);
709 mutex_exit(&rtlsp->rtls_io_lock);
721 rtls_t *rtlsp = (rtls_t *)arg;
725 mutex_enter(&rtlsp->rtls_io_lock);
726 hashp = rtlsp->multi_hash;
731 if (rtlsp->multicast_cnt[index]++) {
732 mutex_exit(&rtlsp->rtls_io_lock);
737 if (--rtlsp->multicast_cnt[index]) {
738 mutex_exit(&rtlsp->rtls_io_lock);
747 if (!rtlsp->rtls_suspended) {
748 rtls_reg_set32(rtlsp, MULTICAST_0_REG, hashp[0]);
749 rtls_reg_set32(rtlsp, MULTICAST_4_REG, hashp[1]);
752 mutex_exit(&rtlsp->rtls_io_lock);
796 rtls_t *rtlsp = arg;
798 mutex_enter(&rtlsp->rtls_io_lock);
800 rtlsp->promisc = on;
801 if (!rtlsp->rtls_suspended) {
802 uint32_t val32 = rtls_reg_get32(rtlsp, RX_CONFIG_REG);
808 rtls_reg_set32(rtlsp, RX_CONFIG_REG, val32);
810 mutex_exit(&rtlsp->rtls_io_lock);
826 rtls_t *rtlsp = arg;
828 if (mii_m_getstat(rtlsp->mii, stat, val) == 0) {
834 *val = rtlsp->stats.ipackets;
837 *val = rtlsp->stats.rbytes;
840 *val = rtlsp->stats.opackets;
843 *val = rtlsp->stats.obytes;
846 *val = rtlsp->stats.rcv_err;
849 *val = rtlsp->stats.xmt_err;
852 *val = rtlsp->stats.multi_rcv;
855 *val = rtlsp->stats.brdcst_rcv;
858 *val = rtlsp->stats.multi_xmt;
861 *val = rtlsp->stats.brdcst_xmt;
864 *val = rtlsp->stats.underflow;
867 *val = rtlsp->stats.overflow;
870 *val = rtlsp->stats.no_rcvbuf;
873 *val = rtlsp->stats.collisions;
876 *val = rtlsp->stats.crc_err;
879 *val = rtlsp->stats.frame_err;
882 *val = rtlsp->stats.defer;
885 *val = rtlsp->stats.xmt_latecoll;
888 *val = rtlsp->stats.too_long;
891 *val = rtlsp->stats.in_short;
894 *val = rtlsp->stats.no_carrier;
897 *val = rtlsp->stats.firstcol;
900 *val = rtlsp->stats.multicol;
913 rtls_reg_print(rtlsp);
923 rtls_t *rtlsp = arg;
925 return (mii_m_getprop(rtlsp->mii, name, num, sz, val));
932 rtls_t *rtlsp = arg;
934 return (mii_m_setprop(rtlsp->mii, name, num, sz, val));
941 rtls_t *rtlsp = arg;
943 mii_m_propinfo(rtlsp->mii, name, num, prh);
960 rtls_send(rtls_t *rtlsp, mblk_t *mp)
968 ASSERT(rtlsp->rtls_running);
970 mutex_enter(&rtlsp->rtls_tx_lock);
972 if (rtlsp->rtls_suspended) {
973 mutex_exit(&rtlsp->rtls_tx_lock);
980 if (rtlsp->chip_error) {
984 mac_name(rtlsp->mh));
986 mutex_exit(&rtlsp->rtls_tx_lock);
997 if (rtls_reg_get8(rtlsp, MEDIA_STATUS_REG) & MEDIA_STATUS_LINK) {
1001 mac_name(rtlsp->mh));
1003 rtlsp->stats.no_carrier++;
1004 mutex_exit(&rtlsp->rtls_tx_lock);
1012 cur_desc = rtlsp->tx_current_desc;
1019 if (rtlsp->tx_first_loop < RTLS_MAX_TX_DESC) {
1020 rtlsp->tx_first_loop++;
1028 tx_status = rtls_reg_get32(rtlsp, TX_STATUS_DESC0_REG + 4 * cur_desc);
1037 "%s: rtls_send: need_sched", mac_name(rtlsp->mh));
1045 if (rtlsp->tx_retry++ > RTLS_TX_RETRY_NUM) {
1057 tx_status = rtls_reg_get32(rtlsp,
1062 mac_name(rtlsp->mh), tx_status);
1064 rtlsp->tx_retry = 0;
1065 rtlsp->chip_error = B_TRUE;
1066 rtlsp->stats.xmt_err++;
1067 rtlsp->stats.mac_xmt_err++;
1068 mutex_exit(&rtlsp->rtls_tx_lock);
1073 rtlsp->stats.defer++;
1074 rtlsp->need_sched = B_TRUE;
1075 mutex_exit(&rtlsp->rtls_tx_lock);
1087 mac_name(rtlsp->mh), tx_status);
1090 rtlsp->stats.xmt_err++;
1092 rtlsp->stats.underflow++;
1094 rtlsp->stats.no_carrier++;
1096 rtlsp->stats.xmt_latecoll++;
1100 rtlsp->stats.collisions += ncc;
1101 rtlsp->stats.firstcol++;
1102 rtlsp->stats.multicol += ncc - 1;
1109 rtlsp->tx_retry = 0;
1119 mac_name(rtlsp->mh), totlen);
1120 rtlsp->stats.mac_xmt_err++;
1121 rtlsp->stats.xmt_err++;
1123 mutex_exit(&rtlsp->rtls_tx_lock);
1128 mcopymsg(mp, rtlsp->tx_buf[cur_desc]);
1131 if (*rtlsp->tx_buf[cur_desc] & 0x1) {
1132 uint16_t *ptr = (void *)rtlsp->tx_buf[cur_desc];
1136 rtlsp->stats.brdcst_xmt++;
1138 rtlsp->stats.multi_xmt++;
1141 rtlsp->stats.opackets++;
1142 rtlsp->stats.obytes += totlen;
1145 bzero(rtlsp->tx_buf[cur_desc] + totlen, ETHERMIN - totlen);
1150 (void) ddi_dma_sync(rtlsp->dma_area_tx[cur_desc].dma_hdl, 0, totlen,
1158 rtls_reg_set32(rtlsp, TX_STATUS_DESC0_REG + 4 * cur_desc,
1166 rtlsp->tx_current_desc = cur_desc;
1168 mutex_exit(&rtlsp->rtls_tx_lock);
1179 rtls_t *rtlsp = arg;
1185 if (!rtls_send(rtlsp, mp)) {
1200 rtls_receive(rtls_t *rtlsp)
1213 mutex_enter(&rtlsp->rtls_rx_lock);
1215 if (rtlsp->rtls_suspended) {
1216 mutex_exit(&rtlsp->rtls_rx_lock);
1220 while ((rtls_reg_get8(rtlsp, RT_COMMAND_REG)
1226 if (rtlsp->chip_error) {
1230 mac_name(rtlsp->mh));
1235 cur_rx = rtlsp->cur_rx;
1236 rx_ptr = rtlsp->rx_ring + cur_rx;
1245 mac_name(rtlsp->mh));
1259 mac_name(rtlsp->mh), rx_status, packet_len);
1266 rtlsp->stats.in_short++;
1268 rtlsp->stats.too_long++;
1270 rtlsp->stats.crc_err++;
1272 rtlsp->stats.frame_err++;
1278 rtlsp->chip_error = B_TRUE;
1279 mutex_exit(&rtlsp->rtls_rx_lock);
1306 mac_name(rtlsp->mh), packet_len, wrap_size);
1312 (void) ddi_dma_sync(rtlsp->dma_area_rx.dma_hdl,
1316 (void) ddi_dma_sync(rtlsp->dma_area_rx.dma_hdl,
1327 bcopy(rtlsp->rx_ring, mp->b_wptr, wrap_size);
1332 rtlsp->stats.ipackets++;
1334 rtlsp->stats.brdcst_rcv++;
1336 rtlsp->stats.multi_rcv++;
1337 rtlsp->stats.rbytes += packet_len;
1339 rtlsp->stats.no_rcvbuf++;
1348 (void) ddi_dma_sync(rtlsp->dma_area_rx.dma_hdl,
1357 rtlsp->stats.ipackets++;
1359 rtlsp->stats.brdcst_rcv++;
1361 rtlsp->stats.multi_rcv++;
1362 rtlsp->stats.rbytes += packet_len;
1364 rtlsp->stats.no_rcvbuf++;
1376 rtlsp->cur_rx = cur_rx;
1377 rtls_reg_set16(rtlsp, RX_CURRENT_READ_ADDR_REG,
1380 mutex_exit(&rtlsp->rtls_rx_lock);
1386 mac_rx(rtlsp->mh, NULL, head);
1397 rtls_t *rtlsp = (void *)arg;
1402 mutex_enter(&rtlsp->rtls_io_lock);
1403 if (rtlsp->rtls_suspended) {
1404 mutex_exit(&rtlsp->rtls_io_lock);
1411 int_status = rtls_reg_get16(rtlsp, RT_INT_STATUS_REG);
1412 if (!(int_status & rtlsp->int_mask)) {
1413 mutex_exit(&rtlsp->rtls_io_lock);
1421 rtls_reg_set16(rtlsp, RT_INT_STATUS_REG, int_status);
1426 if (rtlsp->chip_error) {
1427 mutex_enter(&rtlsp->rtls_rx_lock);
1428 mutex_enter(&rtlsp->rtls_tx_lock);
1429 rtls_chip_restart(rtlsp);
1430 rtlsp->chip_error = B_FALSE;
1431 rtlsp->tx_retry = 0;
1432 mutex_exit(&rtlsp->rtls_tx_lock);
1433 mutex_exit(&rtlsp->rtls_rx_lock);
1434 mutex_exit(&rtlsp->rtls_io_lock);
1443 val32 = rtls_reg_get32(rtlsp, TX_CONFIG_REG);
1445 rtls_reg_set32(rtlsp, TX_CONFIG_REG, val32);
1446 cmn_err(CE_WARN, "%s: transmit abort!!!", mac_name(rtlsp->mh));
1452 if (rtlsp->need_sched) {
1453 rtlsp->need_sched = B_FALSE;
1457 mutex_exit(&rtlsp->rtls_io_lock);
1464 rtlsp->stats.overflow++;
1465 rtlsp->stats.rcv_err++;
1467 rtls_receive(rtlsp);
1474 mii_check(rtlsp->mii);
1478 mac_tx_update(rtlsp->mh);
1493 rtls_alloc_dma_mem(rtls_t *rtlsp, size_t memsize,
1502 err = ddi_dma_alloc_handle(rtlsp->devinfo, &dma_attr,
1507 mac_name(rtlsp->mh), err);
1521 mac_name(rtlsp->mh), err);
1539 mac_name(rtlsp->mh), err);
1575 rtls_alloc_bufs(rtls_t *rtlsp)
1584 err = rtls_alloc_dma_mem(rtlsp,
1588 &rtlsp->dma_area_tx[i]);
1593 rtlsp->tx_buf[i] = (uint8_t *)rtlsp->dma_area_tx[i].mem_va;
1599 err = rtls_alloc_dma_mem(rtlsp,
1603 &rtlsp->dma_area_rx);
1608 rtlsp->rx_ring = (uint8_t *)rtlsp->dma_area_rx.mem_va;
1618 rtls_free_bufs(rtls_t *rtlsp)
1623 rtls_free_dma_mem(&rtlsp->dma_area_tx[i]);
1624 rtlsp->tx_buf[i] = NULL;
1627 rtls_free_dma_mem(&rtlsp->dma_area_rx);
1628 rtlsp->rx_ring = NULL;
1639 rtls_chip_reset(rtls_t *rtlsp, boolean_t quiesce)
1648 val8 = rtls_reg_get8(rtlsp, RT_COMMAND_REG);
1650 rtls_reg_set8(rtlsp, RT_COMMAND_REG, val8);
1655 val16 = rtls_reg_get16(rtlsp, RT_INT_MASK_REG);
1656 rtls_reg_set16(rtlsp, RT_INT_MASK_REG, val16 & (~RTLS_INT_MASK_ALL));
1657 rtlsp->int_mask = RTLS_INT_MASK_NONE;
1662 val16 = rtls_reg_get16(rtlsp, RT_INT_STATUS_REG);
1663 rtls_reg_set16(rtlsp, RT_INT_STATUS_REG, val16);
1668 val8 = rtls_reg_get8(rtlsp, RT_COMMAND_REG);
1669 rtls_reg_set8(rtlsp, RT_COMMAND_REG, val8 | RT_COMMAND_RESET);
1675 while (rtls_reg_get8(rtlsp, RT_COMMAND_REG) & RT_COMMAND_RESET) {
1684 mac_name(rtlsp->mh));
1698 rtls_chip_init(rtls_t *rtlsp)
1707 rtlsp->cur_rx = 0;
1708 rtlsp->tx_current_desc = 0;
1709 rtlsp->tx_first_loop = 0;
1714 rtls_reg_set32(rtlsp, RX_BUFF_ADDR_REG,
1715 (ulong_t)rtlsp->dma_area_rx.cookie.dmac_address);
1716 rtls_reg_set32(rtlsp, TX_ADDR_DESC0_REG,
1717 (ulong_t)rtlsp->dma_area_tx[0].cookie.dmac_address);
1718 rtls_reg_set32(rtlsp, TX_ADDR_DESC1_REG,
1719 (ulong_t)rtlsp->dma_area_tx[1].cookie.dmac_address);
1720 rtls_reg_set32(rtlsp, TX_ADDR_DESC2_REG,
1721 (ulong_t)rtlsp->dma_area_tx[2].cookie.dmac_address);
1722 rtls_reg_set32(rtlsp, TX_ADDR_DESC3_REG,
1723 (ulong_t)rtlsp->dma_area_tx[3].cookie.dmac_address);
1728 val8 = rtls_reg_get8(rtlsp, RT_COMMAND_REG);
1729 rtls_reg_set8(rtlsp, RT_COMMAND_REG,
1735 val32 = rtls_reg_get32(rtlsp, TX_CONFIG_REG);
1737 rtls_reg_set32(rtlsp, TX_CONFIG_REG, val32 | TX_CONFIG_DEFAULT);
1742 val32 = rtls_reg_get32(rtlsp, RX_CONFIG_REG);
1744 if (rtlsp->promisc)
1746 rtls_reg_set32(rtlsp, RX_CONFIG_REG, val32 | RX_CONFIG_DEFAULT);
1751 rtls_reg_set32(rtlsp, MULTICAST_0_REG, rtlsp->multi_hash[0]);
1752 rtls_reg_set32(rtlsp, MULTICAST_4_REG, rtlsp->multi_hash[1]);
1757 rtls_set_mac_addr(rtlsp, rtlsp->netaddr);
1762 rtls_reg_set16(rtlsp, RX_CURRENT_READ_ADDR_REG, RX_READ_RESET_VAL);
1767 val16 = rtls_reg_get16(rtlsp, RT_MUL_INTSEL_REG);
1769 rtls_reg_set16(rtlsp, RT_MUL_INTSEL_REG, val16);
1776 rtls_chip_start(rtls_t *rtlsp)
1784 val8 = rtls_reg_get8(rtlsp, RT_COMMAND_REG);
1785 rtls_reg_set8(rtlsp, RT_COMMAND_REG,
1791 val16 = rtls_reg_get16(rtlsp, RT_INT_MASK_REG);
1792 rtls_reg_set16(rtlsp, RT_INT_MASK_REG, val16 | RTLS_INT_MASK);
1793 rtlsp->int_mask = RTLS_INT_MASK;
1800 rtls_chip_restart(rtls_t *rtlsp)
1802 (void) rtls_chip_reset(rtlsp, B_FALSE);
1803 rtls_chip_init(rtlsp);
1804 rtls_chip_start(rtlsp);
1811 rtls_chip_stop(rtls_t *rtlsp)
1819 val16 = rtls_reg_get16(rtlsp, RT_INT_MASK_REG);
1820 rtls_reg_set16(rtlsp, RT_INT_MASK_REG, val16 & (~RTLS_INT_MASK_ALL));
1821 rtlsp->int_mask = RTLS_INT_MASK_NONE;
1826 val16 = rtls_reg_get16(rtlsp, RT_INT_STATUS_REG);
1827 rtls_reg_set16(rtlsp, RT_INT_STATUS_REG, val16);
1832 val8 = rtls_reg_get8(rtlsp, RT_COMMAND_REG);
1834 rtls_reg_set8(rtlsp, RT_COMMAND_REG, val8);
1841 rtls_get_mac_addr(rtls_t *rtlsp, uint8_t *macaddr)
1848 val32 = rtls_reg_get32(rtlsp, ID_0_REG);
1860 val32 = rtls_reg_get32(rtlsp, ID_4_REG);
1867 rtls_set_mac_addr(rtls_t *rtlsp, const uint8_t *macaddr)
1875 val8 = rtls_reg_get8(rtlsp, RT_93c46_COMMAND_REG);
1877 rtls_reg_set8(rtlsp, RT_93c46_COMMAND_REG, val8);
1893 rtls_reg_set32(rtlsp, ID_0_REG, val32);
1905 val32 |= rtls_reg_get32(rtlsp, ID_4_REG) & ~0xffff;
1906 rtls_reg_set32(rtlsp, ID_4_REG, val32);
1912 rtls_reg_set8(rtlsp, RT_93c46_COMMAND_REG, val8);
1918 rtls_t *rtlsp = arg;
1926 val = rtls_reg_get16(rtlsp, BASIC_MODE_CONTROL_REG);
1929 val = rtls_reg_get16(rtlsp, BASIC_MODE_STATUS_REG);
1932 val = rtls_reg_get16(rtlsp, AUTO_NEGO_AD_REG);
1935 val = rtls_reg_get16(rtlsp, AUTO_NEGO_LP_REG);
1938 val = rtls_reg_get16(rtlsp, AUTO_NEGO_EXP_REG);
1946 val = rtls_reg_get8(rtlsp, MEDIA_STATUS_REG);
1960 rtls_t *rtlsp = arg;
1969 val8 = rtls_reg_get8(rtlsp, RT_93c46_COMMAND_REG);
1971 rtls_reg_set8(rtlsp, RT_93c46_COMMAND_REG, val8);
1973 rtls_reg_set16(rtlsp, BASIC_MODE_CONTROL_REG, val);
1977 rtls_reg_set8(rtlsp, RT_93c46_COMMAND_REG, val8);
1981 rtls_reg_set16(rtlsp, BASIC_MODE_STATUS_REG, val);
1984 rtls_reg_set16(rtlsp, AUTO_NEGO_AD_REG, val);
1987 rtls_reg_set16(rtlsp, AUTO_NEGO_LP_REG, val);
1990 rtls_reg_set16(rtlsp, AUTO_NEGO_EXP_REG, val);
2003 rtls_t *rtlsp = arg;
2005 mac_link_update(rtlsp->mh, link);
2013 rtls_reg_print(rtls_t *rtlsp)
2019 val8 = rtls_reg_get8(rtlsp, RT_COMMAND_REG);
2021 mac_name(rtlsp->mh), val8);
2024 val16 = rtls_reg_get16(rtlsp, RT_INT_STATUS_REG);
2026 mac_name(rtlsp->mh), val16);
2029 val16 = rtls_reg_get16(rtlsp, RT_INT_MASK_REG);
2031 mac_name(rtlsp->mh), val16);
2034 val32 = rtls_reg_get32(rtlsp, RX_CONFIG_REG);
2036 mac_name(rtlsp->mh), val32);
2039 val16 = rtls_reg_get16(rtlsp, TX_DESC_STAUS_REG);
2041 mac_name(rtlsp->mh), val16, rtlsp->tx_current_desc);
2044 val32 = rtls_reg_get32(rtlsp, TX_STATUS_DESC0_REG);
2046 mac_name(rtlsp->mh), val32);
2049 val32 = rtls_reg_get32(rtlsp, TX_STATUS_DESC1_REG);
2051 mac_name(rtlsp->mh), val32);
2054 val32 = rtls_reg_get32(rtlsp, TX_STATUS_DESC2_REG);
2056 mac_name(rtlsp->mh), val32);
2059 val32 = rtls_reg_get32(rtlsp, TX_STATUS_DESC3_REG);
2061 mac_name(rtlsp->mh), val32);
2065 mac_name(rtlsp->mh),
2066 (unsigned long long)rtlsp->stats.ipackets,
2067 (unsigned long long)rtlsp->stats.multi_rcv,
2068 (unsigned long long)rtlsp->stats.brdcst_rcv);