Lines Matching defs:hxgep

54 static hxge_status_t hxge_map_txdma(p_hxge_t hxgep);
55 static void hxge_unmap_txdma(p_hxge_t hxgep);
56 static hxge_status_t hxge_txdma_hw_start(p_hxge_t hxgep);
57 static void hxge_txdma_hw_stop(p_hxge_t hxgep);
59 static hxge_status_t hxge_map_txdma_channel(p_hxge_t hxgep, uint16_t channel,
63 static void hxge_unmap_txdma_channel(p_hxge_t hxgep, uint16_t channel,
65 static hxge_status_t hxge_map_txdma_channel_buf_ring(p_hxge_t hxgep, uint16_t,
67 static void hxge_unmap_txdma_channel_buf_ring(p_hxge_t hxgep,
71 static void hxge_unmap_txdma_channel_cfg_ring(p_hxge_t hxgep,
73 static hxge_status_t hxge_txdma_start_channel(p_hxge_t hxgep, uint16_t channel,
75 static hxge_status_t hxge_txdma_stop_channel(p_hxge_t hxgep, uint16_t channel,
77 static p_tx_ring_t hxge_txdma_get_ring(p_hxge_t hxgep, uint16_t channel);
78 static hxge_status_t hxge_tx_err_evnts(p_hxge_t hxgep, uint_t index,
80 static p_tx_mbox_t hxge_txdma_get_mbox(p_hxge_t hxgep, uint16_t channel);
81 static hxge_status_t hxge_txdma_fatal_err_recover(p_hxge_t hxgep,
83 static hxge_status_t hxge_tx_port_fatal_err_recover(p_hxge_t hxgep);
86 hxge_init_txdma_channels(p_hxge_t hxgep)
91 HXGE_DEBUG_MSG((hxgep, MEM3_CTL, "==> hxge_init_txdma_channels"));
99 HXGE_REG_WR32(hxgep->hpi_handle, BLOCK_RESET, reset_reg.value);
103 status = hxge_map_txdma(hxgep);
105 HXGE_ERROR_MSG((hxgep, HXGE_ERR_CTL,
110 status = hxge_txdma_hw_start(hxgep);
112 hxge_unmap_txdma(hxgep);
116 HXGE_DEBUG_MSG((hxgep, MEM3_CTL,
123 hxge_uninit_txdma_channels(p_hxge_t hxgep)
125 HXGE_DEBUG_MSG((hxgep, MEM3_CTL, "==> hxge_uninit_txdma_channels"));
127 hxge_txdma_hw_stop(hxgep);
128 hxge_unmap_txdma(hxgep);
130 HXGE_DEBUG_MSG((hxgep, MEM3_CTL, "<== hxge_uinit_txdma_channels"));
152 hxge_reset_txdma_channel(p_hxge_t hxgep, uint16_t channel, uint64_t reg_data)
158 HXGE_DEBUG_MSG((hxgep, TX_CTL, " ==> hxge_reset_txdma_channel"));
160 handle = HXGE_DEV_HPI_HANDLE(hxgep);
177 HXGE_DEBUG_MSG((hxgep, TX_CTL, " <== hxge_reset_txdma_channel"));
183 hxge_init_txdma_channel_event_mask(p_hxge_t hxgep, uint16_t channel,
190 HXGE_DEBUG_MSG((hxgep, MEM3_CTL,
193 handle = HXGE_DEV_HPI_HANDLE(hxgep);
206 HXGE_DEBUG_MSG((hxgep, MEM3_CTL,
212 hxge_enable_txdma_channel(p_hxge_t hxgep,
219 HXGE_DEBUG_MSG((hxgep, MEM3_CTL, "==> hxge_enable_txdma_channel"));
221 handle = HXGE_DEV_HPI_HANDLE(hxgep);
246 HXGE_DEBUG_MSG((hxgep, MEM3_CTL, "<== hxge_enable_txdma_channel"));
602 hxge_txdma_reclaim(p_hxge_t hxgep, p_tx_ring_t tx_ring_p, int nmblks)
625 HXGE_DEBUG_MSG((hxgep, TX_CTL, "==> hxge_txdma_reclaim"));
629 HXGE_DEBUG_MSG((hxgep, TX_CTL,
654 handle = HXGE_DEV_HPI_HANDLE(hxgep);
658 HXGE_DEBUG_MSG((hxgep, TX_CTL,
671 HXGE_DEBUG_MSG((hxgep, TX_CTL,
681 HXGE_DEBUG_MSG((hxgep, TX_CTL,
688 HXGE_DEBUG_MSG((hxgep, TX_CTL,
692 HXGE_DEBUG_MSG((hxgep, TX_CTL,
696 HXGE_DEBUG_MSG((hxgep, TX_CTL,
701 HXGE_DEBUG_MSG((hxgep, TX_CTL,
708 HXGE_DEBUG_MSG((hxgep, TX_CTL,
710 HXGE_DEBUG_MSG((hxgep, TX_CTL,
713 HXGE_DEBUG_MSG((hxgep, TX_CTL,
719 HXGE_DEBUG_MSG((hxgep, TX_CTL,
725 HXGE_DEBUG_MSG((hxgep, TX_CTL,
735 HXGE_DEBUG_MSG((hxgep, TX_CTL,
741 HXGE_DEBUG_MSG((hxgep, TX_CTL,
757 HXGE_DEBUG_MSG((hxgep, TX_CTL,
767 HXGE_DEBUG_MSG((hxgep, TX_CTL,
798 HXGE_DEBUG_MSG((hxgep, TX_CTL,
807 p_hxge_t hxgep = (p_hxge_t)arg2;
821 "<== hxge_tx_intr: hxgep $%p ldvp $%p", hxgep, ldvp));
825 if (arg2 == NULL || (void *) ldvp->hxgep != arg2) {
826 hxgep = ldvp->hxgep;
833 if (hxgep->hxge_mac_state != HXGE_MAC_STARTED)
836 HXGE_DEBUG_MSG((hxgep, INT_CTL,
837 "==> hxge_tx_intr: hxgep(arg2) $%p ldvp(arg1) $%p", hxgep, ldvp));
842 handle = HXGE_DEV_HPI_HANDLE(hxgep);
847 HXGE_DEBUG_MSG((hxgep, INT_CTL,
848 "==> hxge_tx_intr: hxgep $%p ldvp (ldvp) $%p channel %d",
849 hxgep, ldvp, channel));
853 HXGE_DEBUG_MSG((hxgep, INT_CTL,
858 HXGE_DEBUG_MSG((hxgep, INT_CTL,
861 tx_rings = hxgep->tx_rings->rings;
863 HXGE_DEBUG_MSG((hxgep, INT_CTL,
869 (void) hxge_txdma_reclaim(hxgep, tx_rings[vindex], 0);
871 mac_tx_update(hxgep->mach);
877 status = hxge_tx_err_evnts(hxgep, ldvp->vdma_index, ldvp, cs);
886 HXGE_DEBUG_MSG((hxgep, INT_CTL, "==> hxge_tx_intr: rearm"));
892 HXGE_DEBUG_MSG((hxgep, INT_CTL, "<== hxge_tx_intr"));
898 hxge_txdma_stop(p_hxge_t hxgep)
900 HXGE_DEBUG_MSG((hxgep, TX_CTL, "==> hxge_txdma_stop"));
902 (void) hxge_tx_vmac_disable(hxgep);
903 (void) hxge_txdma_hw_mode(hxgep, HXGE_DMA_STOP);
905 HXGE_DEBUG_MSG((hxgep, TX_CTL, "<== hxge_txdma_stop"));
909 hxge_txdma_hw_mode(p_hxge_t hxgep, boolean_t enable)
919 HXGE_DEBUG_MSG((hxgep, MEM3_CTL,
922 if (!(hxgep->drv_state & STATE_HW_INITIALIZED)) {
923 HXGE_DEBUG_MSG((hxgep, TX_CTL,
927 tx_rings = hxgep->tx_rings;
929 HXGE_DEBUG_MSG((hxgep, TX_CTL,
935 HXGE_DEBUG_MSG((hxgep, TX_CTL,
941 HXGE_ERROR_MSG((hxgep, HXGE_ERR_CTL,
945 HXGE_DEBUG_MSG((hxgep, MEM3_CTL, "==> hxge_txdma_hw_mode: "
949 handle = HXGE_DEV_HPI_HANDLE(hxgep);
955 HXGE_DEBUG_MSG((hxgep, MEM3_CTL,
959 HXGE_DEBUG_MSG((hxgep, MEM3_CTL,
971 HXGE_DEBUG_MSG((hxgep, MEM3_CTL,
979 HXGE_DEBUG_MSG((hxgep, MEM3_CTL,
986 hxge_txdma_enable_channel(p_hxge_t hxgep, uint16_t channel)
990 HXGE_DEBUG_MSG((hxgep, DMA_CTL,
993 handle = HXGE_DEV_HPI_HANDLE(hxgep);
997 HXGE_DEBUG_MSG((hxgep, DMA_CTL, "<== hxge_txdma_enable_channel"));
1001 hxge_txdma_disable_channel(p_hxge_t hxgep, uint16_t channel)
1005 HXGE_DEBUG_MSG((hxgep, DMA_CTL,
1008 handle = HXGE_DEV_HPI_HANDLE(hxgep);
1012 HXGE_DEBUG_MSG((hxgep, TX_CTL, "<== hxge_txdma_disable_channel"));
1016 hxge_txdma_stop_inj_err(p_hxge_t hxgep, int channel)
1022 HXGE_DEBUG_MSG((hxgep, TX_CTL, "==> hxge_txdma_stop_inj_err"));
1028 handle = HXGE_DEV_HPI_HANDLE(hxgep);
1032 HXGE_DEBUG_MSG((hxgep, TX_CTL,
1038 HXGE_ERROR_MSG((hxgep, HXGE_ERR_CTL,
1042 HXGE_DEBUG_MSG((hxgep, TX_CTL, "<== hxge_txdma_stop_inj_err"));
1049 hxge_fixup_txdma_rings(p_hxge_t hxgep)
1055 HXGE_DEBUG_MSG((hxgep, TX_CTL, "==> hxge_fixup_txdma_rings"));
1060 tx_rings = hxgep->tx_rings;
1062 HXGE_DEBUG_MSG((hxgep, MEM3_CTL,
1069 HXGE_DEBUG_MSG((hxgep, MEM3_CTL,
1075 HXGE_DEBUG_MSG((hxgep, MEM3_CTL,
1080 HXGE_DEBUG_MSG((hxgep, MEM3_CTL, "==> hxge_fixup_txdma_rings: "
1086 HXGE_DEBUG_MSG((hxgep, MEM3_CTL,
1088 hxge_txdma_fixup_channel(hxgep, tx_rings->rings[index],
1092 HXGE_DEBUG_MSG((hxgep, TX_CTL, "<== hxge_fixup_txdma_rings"));
1097 hxge_txdma_fix_channel(p_hxge_t hxgep, uint16_t channel)
1101 HXGE_DEBUG_MSG((hxgep, TX_CTL, "==> hxge_txdma_fix_channel"));
1103 ring_p = hxge_txdma_get_ring(hxgep, channel);
1105 HXGE_DEBUG_MSG((hxgep, TX_CTL, "<== hxge_txdma_fix_channel"));
1110 HXGE_DEBUG_MSG((hxgep, TX_CTL,
1116 hxge_txdma_fixup_channel(hxgep, ring_p, channel);
1118 HXGE_DEBUG_MSG((hxgep, TX_CTL, "<== hxge_txdma_fix_channel"));
1123 hxge_txdma_fixup_channel(p_hxge_t hxgep, p_tx_ring_t ring_p, uint16_t channel)
1125 HXGE_DEBUG_MSG((hxgep, TX_CTL, "==> hxge_txdma_fixup_channel"));
1128 HXGE_DEBUG_MSG((hxgep, TX_CTL,
1133 HXGE_DEBUG_MSG((hxgep, TX_CTL,
1139 (void) hxge_txdma_reclaim(hxgep, ring_p, 0);
1148 HXGE_DEBUG_MSG((hxgep, TX_CTL, "<== hxge_txdma_fixup_channel"));
1153 hxge_txdma_hw_kick(p_hxge_t hxgep)
1159 HXGE_DEBUG_MSG((hxgep, TX_CTL, "==> hxge_txdma_hw_kick"));
1161 tx_rings = hxgep->tx_rings;
1163 HXGE_DEBUG_MSG((hxgep, TX_CTL,
1169 HXGE_DEBUG_MSG((hxgep, TX_CTL,
1174 HXGE_DEBUG_MSG((hxgep, TX_CTL,
1178 HXGE_DEBUG_MSG((hxgep, MEM3_CTL, "==> hxge_txdma_hw_kick: "
1184 HXGE_DEBUG_MSG((hxgep, MEM3_CTL,
1186 hxge_txdma_hw_kick_channel(hxgep, tx_rings->rings[index],
1190 HXGE_DEBUG_MSG((hxgep, TX_CTL, "<== hxge_txdma_hw_kick"));
1195 hxge_txdma_kick_channel(p_hxge_t hxgep, uint16_t channel)
1199 HXGE_DEBUG_MSG((hxgep, TX_CTL, "==> hxge_txdma_kick_channel"));
1201 ring_p = hxge_txdma_get_ring(hxgep, channel);
1203 HXGE_DEBUG_MSG((hxgep, TX_CTL, " hxge_txdma_kick_channel"));
1208 HXGE_DEBUG_MSG((hxgep, TX_CTL,
1214 hxge_txdma_hw_kick_channel(hxgep, ring_p, channel);
1216 HXGE_DEBUG_MSG((hxgep, TX_CTL, "<== hxge_txdma_kick_channel"));
1221 hxge_txdma_hw_kick_channel(p_hxge_t hxgep, p_tx_ring_t ring_p, uint16_t channel)
1223 HXGE_DEBUG_MSG((hxgep, TX_CTL, "==> hxge_txdma_hw_kick_channel"));
1226 HXGE_DEBUG_MSG((hxgep, TX_CTL,
1231 HXGE_DEBUG_MSG((hxgep, TX_CTL, "<== hxge_txdma_hw_kick_channel"));
1236 hxge_check_tx_hang(p_hxge_t hxgep)
1238 HXGE_DEBUG_MSG((hxgep, TX_CTL, "==> hxge_check_tx_hang"));
1244 if (hxge_txdma_hung(hxgep)) {
1245 hxge_fixup_hung_txdma_rings(hxgep);
1248 HXGE_DEBUG_MSG((hxgep, TX_CTL, "<== hxge_check_tx_hang"));
1252 hxge_txdma_hung(p_hxge_t hxgep)
1259 HXGE_DEBUG_MSG((hxgep, TX_CTL, "==> hxge_txdma_hung"));
1261 tx_rings = hxgep->tx_rings;
1263 HXGE_DEBUG_MSG((hxgep, TX_CTL,
1270 HXGE_DEBUG_MSG((hxgep, TX_CTL,
1276 HXGE_DEBUG_MSG((hxgep, TX_CTL,
1284 HXGE_DEBUG_MSG((hxgep, TX_CTL,
1286 if (hxge_txdma_channel_hung(hxgep, tx_ring_p, channel)) {
1291 HXGE_DEBUG_MSG((hxgep, TX_CTL, "<== hxge_txdma_hung"));
1297 hxge_txdma_channel_hung(p_hxge_t hxgep, p_tx_ring_t tx_ring_p, uint16_t channel)
1305 HXGE_DEBUG_MSG((hxgep, TX_CTL, "==> hxge_txdma_channel_hung"));
1307 handle = HXGE_DEV_HPI_HANDLE(hxgep);
1308 HXGE_DEBUG_MSG((hxgep, TX_CTL,
1311 (void) hxge_txdma_reclaim(hxgep, tx_ring_p, 0);
1318 HXGE_DEBUG_MSG((hxgep, TX_CTL,
1328 HXGE_DEBUG_MSG((hxgep, TX_CTL, "==> hxge_txdma_channel_hung: "
1334 HXGE_DEBUG_MSG((hxgep, TX_CTL,
1338 HXGE_DEBUG_MSG((hxgep, TX_CTL,
1341 HXGE_DEBUG_MSG((hxgep, TX_CTL,
1347 HXGE_DEBUG_MSG((hxgep, TX_CTL, "<== hxge_txdma_channel_hung"));
1354 hxge_fixup_hung_txdma_rings(p_hxge_t hxgep)
1360 HXGE_DEBUG_MSG((hxgep, TX_CTL, "==> hxge_fixup_hung_txdma_rings"));
1361 tx_rings = hxgep->tx_rings;
1363 HXGE_DEBUG_MSG((hxgep, TX_CTL,
1369 HXGE_DEBUG_MSG((hxgep, TX_CTL,
1374 HXGE_DEBUG_MSG((hxgep, TX_CTL,
1378 HXGE_DEBUG_MSG((hxgep, TX_CTL, "==> hxge_fixup_hung_txdma_rings: "
1384 HXGE_DEBUG_MSG((hxgep, TX_CTL,
1386 hxge_txdma_fixup_hung_channel(hxgep, tx_rings->rings[index],
1390 HXGE_DEBUG_MSG((hxgep, TX_CTL, "<== hxge_fixup_hung_txdma_rings"));
1395 hxge_txdma_fix_hung_channel(p_hxge_t hxgep, uint16_t channel)
1399 HXGE_DEBUG_MSG((hxgep, TX_CTL, "==> hxge_txdma_fix_hung_channel"));
1400 ring_p = hxge_txdma_get_ring(hxgep, channel);
1402 HXGE_DEBUG_MSG((hxgep, TX_CTL,
1407 HXGE_DEBUG_MSG((hxgep, TX_CTL,
1412 hxge_txdma_fixup_channel(hxgep, ring_p, channel);
1414 HXGE_DEBUG_MSG((hxgep, TX_CTL, "<== hxge_txdma_fix_hung_channel"));
1419 hxge_txdma_fixup_hung_channel(p_hxge_t hxgep, p_tx_ring_t ring_p,
1425 HXGE_DEBUG_MSG((hxgep, TX_CTL, "==> hxge_txdma_fixup_hung_channel"));
1428 HXGE_DEBUG_MSG((hxgep, TX_CTL,
1433 HXGE_DEBUG_MSG((hxgep, TX_CTL,
1441 (void) hxge_txdma_reclaim(hxgep, ring_p, 0);
1444 handle = HXGE_DEV_HPI_HANDLE(hxgep);
1451 HXGE_DEBUG_MSG((hxgep, TX_CTL,
1459 HXGE_DEBUG_MSG((hxgep, TX_CTL,
1465 HXGE_DEBUG_MSG((hxgep, TX_CTL,
1468 HXGE_DEBUG_MSG((hxgep, TX_CTL, "<== hxge_txdma_fixup_hung_channel"));
1473 hxge_reclaim_rings(p_hxge_t hxgep)
1480 HXGE_DEBUG_MSG((hxgep, TX_CTL, "==> hxge_reclaim_ring"));
1481 tx_rings = hxgep->tx_rings;
1483 HXGE_DEBUG_MSG((hxgep, TX_CTL,
1489 HXGE_DEBUG_MSG((hxgep, TX_CTL,
1494 HXGE_DEBUG_MSG((hxgep, TX_CTL,
1498 HXGE_DEBUG_MSG((hxgep, TX_CTL, "==> hxge_reclain_rimgs: "
1504 HXGE_DEBUG_MSG((hxgep, TX_CTL, "==> reclain_rimgs: channel %d",
1508 (void) hxge_txdma_reclaim(hxgep, tx_ring_p, channel);
1512 HXGE_DEBUG_MSG((hxgep, TX_CTL, "<== hxge_reclaim_rings"));
1519 hxge_map_txdma(p_hxge_t hxgep)
1533 HXGE_DEBUG_MSG((hxgep, MEM3_CTL, "==> hxge_map_txdma"));
1535 dma_buf_poolp = hxgep->tx_buf_pool_p;
1536 dma_cntl_poolp = hxgep->tx_cntl_pool_p;
1539 HXGE_DEBUG_MSG((hxgep, TX_CTL,
1545 HXGE_DEBUG_MSG((hxgep, TX_CTL,
1556 HXGE_DEBUG_MSG((hxgep, MEM3_CTL, "==> hxge_map_txdma: "
1572 status = hxge_map_txdma_channel(hxgep, channel,
1582 tx_desc_rings[i]->tdc_stats = &hxgep->statsp->tdc_stats[i];
1587 hxgep->tx_rings = tx_rings;
1589 hxgep->tx_mbox_areas_p = tx_mbox_areas_p;
1591 HXGE_DEBUG_MSG((hxgep, MEM3_CTL, "==> hxge_map_txdma: "
1592 "tx_rings $%p rings $%p", hxgep->tx_rings, hxgep->tx_rings->rings));
1593 HXGE_DEBUG_MSG((hxgep, MEM3_CTL, "==> hxge_map_txdma: "
1595 hxgep->tx_rings, tx_desc_rings));
1600 HXGE_DEBUG_MSG((hxgep, MEM3_CTL,
1602 "(status 0x%x channel %d i %d)", hxgep, status, channel, i));
1606 hxge_unmap_txdma_channel(hxgep, channel, tx_desc_rings[i],
1616 HXGE_DEBUG_MSG((hxgep, MEM3_CTL,
1623 hxge_unmap_txdma(p_hxge_t hxgep)
1633 HXGE_DEBUG_MSG((hxgep, MEM3_CTL, "==> hxge_unmap_txdma"));
1635 dma_buf_poolp = hxgep->tx_buf_pool_p;
1637 HXGE_DEBUG_MSG((hxgep, TX_CTL,
1643 HXGE_DEBUG_MSG((hxgep, TX_CTL,
1647 tx_rings = hxgep->tx_rings;
1650 HXGE_DEBUG_MSG((hxgep, TX_CTL,
1656 HXGE_DEBUG_MSG((hxgep, TX_CTL,
1660 HXGE_DEBUG_MSG((hxgep, MEM3_CTL, "==> hxge_unmap_txdma: "
1664 tx_mbox_areas_p = hxgep->tx_mbox_areas_p;
1669 (void) hxge_unmap_txdma_channel(hxgep, channel,
1679 HXGE_DEBUG_MSG((hxgep, MEM3_CTL, "<== hxge_unmap_txdma"));
1683 hxge_map_txdma_channel(p_hxge_t hxgep, uint16_t channel,
1693 HXGE_DEBUG_MSG((hxgep, MEM3_CTL,
1699 status = hxge_map_txdma_channel_buf_ring(hxgep, channel,
1702 HXGE_ERROR_MSG((hxgep, HXGE_ERR_CTL,
1710 hxge_map_txdma_channel_cfg_ring(hxgep, channel, dma_cntl_p, *tx_desc_p,
1716 HXGE_DEBUG_MSG((hxgep, MEM3_CTL,
1719 hxge_unmap_txdma_channel_buf_ring(hxgep, *tx_desc_p);
1722 HXGE_DEBUG_MSG((hxgep, MEM3_CTL,
1731 hxge_unmap_txdma_channel(p_hxge_t hxgep, uint16_t channel,
1734 HXGE_DEBUG_MSG((hxgep, MEM3_CTL,
1738 (void) hxge_unmap_txdma_channel_cfg_ring(hxgep, tx_ring_p, tx_mbox_p);
1741 (void) hxge_unmap_txdma_channel_buf_ring(hxgep, tx_ring_p);
1743 HXGE_DEBUG_MSG((hxgep, MEM3_CTL, "<== hxge_unmap_txdma_channel"));
1748 hxge_map_txdma_channel_cfg_ring(p_hxge_t hxgep, uint16_t dma_channel,
1763 HXGE_DEBUG_MSG((hxgep, MEM3_CTL,
1785 HXGE_DEBUG_MSG((hxgep, MEM3_CTL,
1797 HXGE_DEBUG_MSG((hxgep, MEM3_CTL,
1811 HXGE_DEBUG_MSG((hxgep, MEM3_CTL,
1820 HXGE_DEBUG_MSG((hxgep, MEM3_CTL,
1823 HXGE_DEBUG_MSG((hxgep, MEM3_CTL,
1834 HXGE_DEBUG_MSG((hxgep, MEM3_CTL,
1840 hxge_unmap_txdma_channel_cfg_ring(p_hxge_t hxgep,
1843 HXGE_DEBUG_MSG((hxgep, MEM3_CTL,
1849 HXGE_DEBUG_MSG((hxgep, MEM3_CTL,
1854 hxge_map_txdma_channel_buf_ring(p_hxge_t hxgep, uint16_t channel,
1870 HXGE_DEBUG_MSG((hxgep, MEM3_CTL,
1874 HXGE_DEBUG_MSG((hxgep, MEM3_CTL,
1881 HXGE_DEBUG_MSG((hxgep, MEM3_CTL,
1887 HXGE_DEBUG_MSG((hxgep, MEM3_CTL,
1896 tx_ring_p->hxgep = hxgep;
1898 hxgep->instance, channel);
1899 tx_ring_p->taskq = ddi_taskq_create(hxgep->dip, qname, 1,
1906 (void *) hxgep->interrupt_cookie);
1914 ddi_status = ddi_dma_alloc_handle(hxgep->dip, &hxge_tx_dma_attr,
1923 HXGE_DEBUG_MSG((hxgep, HXGE_ERR_CTL,
1942 HXGE_DEBUG_MSG((hxgep, MEM3_CTL,
1953 HXGE_DEBUG_MSG((hxgep, MEM3_CTL, "==> hxge_map_txdma_channel_buf_ring: "
1961 HXGE_DEBUG_MSG((hxgep, MEM3_CTL,
1970 HXGE_DEBUG_MSG((hxgep, MEM3_CTL,
2006 HXGE_DEBUG_MSG((hxgep, MEM3_CTL,
2014 hxge_unmap_txdma_channel_buf_ring(p_hxge_t hxgep, p_tx_ring_t tx_ring_p)
2020 HXGE_DEBUG_MSG((hxgep, MEM3_CTL,
2023 HXGE_DEBUG_MSG((hxgep, TX_CTL,
2027 HXGE_DEBUG_MSG((hxgep, MEM3_CTL,
2036 HXGE_DEBUG_MSG((hxgep, MEM3_CTL, "entry = %d", i));
2074 HXGE_DEBUG_MSG((hxgep, MEM3_CTL,
2079 hxge_txdma_hw_start(p_hxge_t hxgep)
2090 HXGE_DEBUG_MSG((hxgep, MEM3_CTL, "==> hxge_txdma_hw_start"));
2096 (void) hxge_tx_vmac_disable(hxgep);
2101 HXGE_REG_WR64(hxgep->hpi_handle, TDC_FIFO_ERR_STAT, 0x7);
2106 HXGE_REG_WR64(hxgep->hpi_handle, TDC_REORD_TBL_DATA_HI, 0x0ULL);
2107 HXGE_REG_WR64(hxgep->hpi_handle, TDC_REORD_TBL_DATA_LO, 0x0ULL);
2110 HXGE_REG_WR64(hxgep->hpi_handle, TDC_REORD_TBL_CMD,
2117 HXGE_REG_WR64(hxgep->hpi_handle, TDC_REORD_TBL_CMD, tmp);
2124 HXGE_REG_RD64(hxgep->hpi_handle, TDC_REORD_TBL_CMD,
2134 HXGE_REG_WR64(hxgep->hpi_handle, TDC_REORD_TBL_CMD, tmp);
2141 HXGE_REG_RD64(hxgep->hpi_handle, TDC_REORD_TBL_CMD,
2145 HXGE_REG_RD64(hxgep->hpi_handle, TDC_REORD_TBL_DATA_HI, &tmp);
2147 HXGE_ERROR_MSG((hxgep, HXGE_ERR_CTL, "PANIC ReordTbl "
2153 HXGE_REG_RD64(hxgep->hpi_handle, TDC_REORD_TBL_DATA_LO, &tmp);
2155 HXGE_ERROR_MSG((hxgep, HXGE_ERR_CTL, "PANIC ReordTbl "
2160 HXGE_REG_RD64(hxgep->hpi_handle, TDC_FIFO_ERR_STAT, &tmp);
2162 HXGE_ERROR_MSG((hxgep, HXGE_ERR_CTL, "PANIC ReordTbl "
2168 HXGE_REG_RD64(hxgep->hpi_handle, TDC_FIFO_ERR_STAT, &tmp);
2170 HXGE_ERROR_MSG((hxgep, HXGE_ERR_CTL, "PANIC ReordTbl "
2182 HXGE_REG_WR64(hxgep->hpi_handle, TDC_FIFO_ERR_STAT, 0x7);
2183 HXGE_REG_WR64(hxgep->hpi_handle, TDC_FIFO_ERR_MASK, 0x0);
2188 tx_rings = hxgep->tx_rings;
2190 HXGE_DEBUG_MSG((hxgep, TX_CTL,
2197 HXGE_DEBUG_MSG((hxgep, TX_CTL,
2203 HXGE_DEBUG_MSG((hxgep, TX_CTL,
2207 HXGE_DEBUG_MSG((hxgep, MEM3_CTL, "==> hxge_txdma_hw_start: "
2211 tx_mbox_areas_p = hxgep->tx_mbox_areas_p;
2219 status = hxge_txdma_start_channel(hxgep, channel,
2227 (void) hxge_tx_vmac_enable(hxgep);
2229 HXGE_DEBUG_MSG((hxgep, MEM3_CTL,
2231 hxgep->tx_rings, hxgep->tx_rings->rings));
2232 HXGE_DEBUG_MSG((hxgep, MEM3_CTL,
2234 hxgep->tx_rings, tx_desc_rings));
2239 HXGE_DEBUG_MSG((hxgep, MEM3_CTL,
2245 (void) hxge_txdma_stop_channel(hxgep, channel,
2251 HXGE_DEBUG_MSG((hxgep, MEM3_CTL,
2258 hxge_txdma_hw_stop(p_hxge_t hxgep)
2267 HXGE_DEBUG_MSG((hxgep, MEM3_CTL, "==> hxge_txdma_hw_stop"));
2269 tx_rings = hxgep->tx_rings;
2271 HXGE_DEBUG_MSG((hxgep, TX_CTL,
2278 HXGE_DEBUG_MSG((hxgep, TX_CTL,
2285 HXGE_DEBUG_MSG((hxgep, TX_CTL,
2290 HXGE_DEBUG_MSG((hxgep, MEM3_CTL, "==> hxge_txdma_hw_stop: "
2293 tx_mbox_areas_p = hxgep->tx_mbox_areas_p;
2298 (void) hxge_txdma_stop_channel(hxgep, channel,
2303 HXGE_DEBUG_MSG((hxgep, MEM3_CTL, "==> hxge_txdma_hw_stop: "
2305 HXGE_DEBUG_MSG((hxgep, MEM3_CTL, "<== hxge_txdma_hw_stop"));
2309 hxge_txdma_start_channel(p_hxge_t hxgep, uint16_t channel,
2314 HXGE_DEBUG_MSG((hxgep, MEM3_CTL,
2319 (void) hxge_txdma_stop_inj_err(hxgep, channel);
2326 status = hxge_reset_txdma_channel(hxgep, channel,
2329 HXGE_ERROR_MSG((hxgep, HXGE_ERR_CTL,
2341 status = hxge_init_fzc_txdma_channel(hxgep, channel,
2351 status = hxge_init_txdma_channel_event_mask(hxgep,
2361 status = hxge_enable_txdma_channel(hxgep, channel,
2368 HXGE_DEBUG_MSG((hxgep, MEM3_CTL, "<== hxge_txdma_start_channel"));
2375 hxge_txdma_stop_channel(p_hxge_t hxgep, uint16_t channel,
2380 HXGE_DEBUG_MSG((hxgep, MEM3_CTL,
2387 (void) hxge_txdma_stop_inj_err(hxgep, channel);
2394 status = hxge_reset_txdma_channel(hxgep, channel,
2401 HXGE_DEBUG_MSG((hxgep, MEM3_CTL, "<== hxge_txdma_stop_channel"));
2407 hxge_txdma_get_ring(p_hxge_t hxgep, uint16_t channel)
2413 HXGE_DEBUG_MSG((hxgep, TX_CTL, "==> hxge_txdma_get_ring"));
2415 tx_rings = hxgep->tx_rings;
2417 HXGE_DEBUG_MSG((hxgep, TX_CTL,
2423 HXGE_DEBUG_MSG((hxgep, TX_CTL,
2428 HXGE_DEBUG_MSG((hxgep, TX_CTL,
2432 HXGE_DEBUG_MSG((hxgep, MEM3_CTL, "==> hxge_txdma_get_ring: "
2438 HXGE_DEBUG_MSG((hxgep, MEM3_CTL,
2441 HXGE_DEBUG_MSG((hxgep, TX_CTL,
2448 HXGE_DEBUG_MSG((hxgep, TX_CTL, "<== hxge_txdma_get_ring"));
2454 hxge_txdma_get_mbox(p_hxge_t hxgep, uint16_t channel)
2461 HXGE_DEBUG_MSG((hxgep, TX_CTL, "==> hxge_txdma_get_mbox"));
2463 tx_rings = hxgep->tx_rings;
2465 HXGE_DEBUG_MSG((hxgep, MEM3_CTL,
2469 tx_mbox_areas_p = hxgep->tx_mbox_areas_p;
2471 HXGE_DEBUG_MSG((hxgep, MEM3_CTL,
2479 HXGE_DEBUG_MSG((hxgep, MEM3_CTL,
2484 HXGE_DEBUG_MSG((hxgep, MEM3_CTL,
2488 HXGE_DEBUG_MSG((hxgep, MEM3_CTL, "==> hxge_txdma_get_mbox: "
2494 HXGE_DEBUG_MSG((hxgep, MEM3_CTL,
2497 HXGE_DEBUG_MSG((hxgep, TX_CTL,
2504 HXGE_DEBUG_MSG((hxgep, TX_CTL, "<== hxge_txdma_get_mbox"));
2511 hxge_tx_err_evnts(p_hxge_t hxgep, uint_t index, p_hxge_ldv_t ldvp,
2523 HXGE_DEBUG_MSG((hxgep, TX_ERR_CTL, "==> hxge_tx_err_evnts"));
2524 handle = HXGE_DEV_HPI_HANDLE(hxgep);
2527 tx_rings = hxgep->tx_rings->rings;
2539 HXGE_FM_REPORT_ERROR(hxgep, channel,
2541 HXGE_ERROR_MSG((hxgep, HXGE_ERR_CTL,
2549 HXGE_FM_REPORT_ERROR(hxgep, channel,
2551 HXGE_ERROR_MSG((hxgep, HXGE_ERR_CTL,
2559 HXGE_FM_REPORT_ERROR(hxgep, channel,
2561 HXGE_ERROR_MSG((hxgep, HXGE_ERR_CTL,
2569 HXGE_FM_REPORT_ERROR(hxgep, channel,
2571 HXGE_ERROR_MSG((hxgep, HXGE_ERR_CTL,
2580 HXGE_ERROR_MSG((hxgep, HXGE_ERR_CTL,
2589 TXDMA_REG_READ64(hxgep->hpi_handle, TDC_PREF_PAR_LOG,
2592 HXGE_FM_REPORT_ERROR(hxgep, channel,
2594 HXGE_ERROR_MSG((hxgep, HXGE_ERR_CTL,
2602 HXGE_FM_REPORT_ERROR(hxgep, channel,
2604 HXGE_ERROR_MSG((hxgep, HXGE_ERR_CTL,
2612 HXGE_FM_REPORT_ERROR(hxgep, channel,
2614 HXGE_ERROR_MSG((hxgep, HXGE_ERR_CTL,
2622 HXGE_FM_REPORT_ERROR(hxgep, channel,
2624 HXGE_ERROR_MSG((hxgep, HXGE_ERR_CTL,
2632 HXGE_FM_REPORT_ERROR(hxgep, channel,
2634 HXGE_ERROR_MSG((hxgep, HXGE_ERR_CTL,
2641 TXDMA_REG_WRITE64(hxgep->hpi_handle, TDC_STAT_INT_DBG, channel, 0);
2644 HXGE_ERROR_MSG((hxgep, HXGE_ERR_CTL,
2648 status = hxge_txdma_fatal_err_recover(hxgep, channel,
2651 FM_SERVICE_RESTORED(hxgep);
2655 HXGE_DEBUG_MSG((hxgep, TX_ERR_CTL, "<== hxge_tx_err_evnts"));
2661 hxge_txdma_handle_sys_errors(p_hxge_t hxgep)
2668 HXGE_DEBUG_MSG((hxgep, TX_CTL, "==> hxge_txdma_handle_sys_errors"));
2670 handle = HXGE_DEV_HPI_HANDLE(hxgep);
2684 tdc_sys_stats = &hxgep->statsp->tdc_sys_stats;
2687 HXGE_FM_REPORT_ERROR(hxgep, NULL,
2689 HXGE_ERROR_MSG((hxgep, HXGE_ERR_CTL,
2696 HXGE_FM_REPORT_ERROR(hxgep, NULL,
2698 HXGE_ERROR_MSG((hxgep, HXGE_ERR_CTL,
2706 HXGE_ERROR_MSG((hxgep, HXGE_ERR_CTL,
2713 status = hxge_tx_port_fatal_err_recover(hxgep);
2715 FM_SERVICE_RESTORED(hxgep);
2719 HXGE_DEBUG_MSG((hxgep, TX_CTL, "<== hxge_txdma_handle_sys_errors"));
2725 hxge_txdma_fatal_err_recover(p_hxge_t hxgep, uint16_t channel,
2733 HXGE_DEBUG_MSG((hxgep, TX_ERR_CTL, "==> hxge_txdma_fatal_err_recover"));
2734 HXGE_ERROR_MSG((hxgep, HXGE_ERR_CTL,
2741 handle = HXGE_DEV_HPI_HANDLE(hxgep);
2742 HXGE_DEBUG_MSG((hxgep, TX_ERR_CTL, "stopping txdma channel(%d)",
2747 HXGE_ERROR_MSG((hxgep, HXGE_ERR_CTL,
2753 HXGE_DEBUG_MSG((hxgep, TX_ERR_CTL, "reclaiming txdma channel(%d)",
2755 (void) hxge_txdma_reclaim(hxgep, tx_ring_p, 0);
2760 HXGE_DEBUG_MSG((hxgep, TX_ERR_CTL, "resetting txdma channel(%d)",
2764 HXGE_ERROR_MSG((hxgep, HXGE_ERR_CTL,
2783 tx_mbox_p = hxge_txdma_get_mbox(hxgep, channel);
2784 HXGE_DEBUG_MSG((hxgep, TX_ERR_CTL, "restarting txdma channel(%d)",
2786 status = hxge_init_fzc_txdma_channel(hxgep, channel,
2795 status = hxge_init_txdma_channel_event_mask(hxgep, channel,
2808 HXGE_DEBUG_MSG((hxgep, TX_ERR_CTL, "enabling txdma channel(%d)",
2810 status = hxge_enable_txdma_channel(hxgep, channel,
2816 HXGE_ERROR_MSG((hxgep, HXGE_ERR_CTL,
2818 HXGE_DEBUG_MSG((hxgep, TX_ERR_CTL, "==> hxge_txdma_fatal_err_recover"));
2824 HXGE_DEBUG_MSG((hxgep, TX_ERR_CTL,
2827 HXGE_ERROR_MSG((hxgep, HXGE_ERR_CTL, "Recovery failed"));
2833 hxge_tx_port_fatal_err_recover(p_hxge_t hxgep)
2845 HXGE_DEBUG_MSG((hxgep, TX_ERR_CTL,
2847 HXGE_ERROR_MSG((hxgep, HXGE_ERR_CTL,
2850 handle = HXGE_DEV_HPI_HANDLE(hxgep);
2863 HXGE_DEBUG_MSG((hxgep, TX_ERR_CTL, "stopping all DMA channels..."));
2865 tx_rings = hxgep->tx_rings;
2885 HXGE_ERROR_MSG((hxgep, HXGE_ERR_CTL,
2896 HXGE_DEBUG_MSG((hxgep, TX_ERR_CTL, "reclaiming all DMA channels..."));
2902 (void) hxge_txdma_reclaim(hxgep, tx_ring_p, 0);
2906 if ((status = hxge_txdma_hw_start(hxgep)) != HXGE_OK)
2917 HXGE_ERROR_MSG((hxgep, HXGE_ERR_CTL,
2919 HXGE_DEBUG_MSG((hxgep, TX_ERR_CTL,
2932 HXGE_ERROR_MSG((hxgep, HXGE_ERR_CTL, "Recovery failed"));
2933 HXGE_DEBUG_MSG((hxgep, TX_ERR_CTL,