Lines Matching defs:atgep

107 atge_rx_desc_free(atge_t *atgep)
113 l1e = (atge_l1e_data_t *)atgep->atge_private_data;
135 atge_l1e_alloc_dma(atge_t *atgep)
144 atgep->atge_private_data = l1e;
149 atgep->atge_tx_buf_len = atgep->atge_mtu +
151 atgep->atge_tx_ring = kmem_alloc(sizeof (atge_ring_t), KM_SLEEP);
152 atgep->atge_tx_ring->r_atge = atgep;
153 atgep->atge_tx_ring->r_desc_ring = NULL;
154 dma = atge_alloc_a_dma_blk(atgep, &atge_l1e_dma_attr_tx_desc,
158 atgep->atge_name, __func__));
161 atgep->atge_tx_ring->r_desc_ring = dma;
166 err = atge_alloc_buffers(atgep->atge_tx_ring, ATGE_TX_RING_CNT,
167 atgep->atge_tx_buf_len, DDI_DMA_WRITE);
170 atgep->atge_name, __func__));
177 atgep->atge_rx_buf_len = atgep->atge_mtu +
180 if (atgep->atge_flags & ATGE_FLAG_JUMBO)
191 atgep->atge_name, __func__, l1e->atge_l1e_pagesize,
196 dma = atge_alloc_a_dma_blk(atgep, &atge_l1e_dma_attr_rx_desc,
209 atgep->atge_name, __func__));
216 ATGE_DB(("%s: %s() L1E_RX_CMB_SZ : %x", atgep->atge_name,
220 dma = atge_alloc_a_dma_blk(atgep, &atge_l1e_dma_attr_cmb,
224 atgep->atge_name, __func__));
231 atgep->atge_name, __func__));
235 atgep->atge_hw_stats = kmem_zalloc(sizeof (atge_l1e_smb_t), KM_SLEEP);
241 atge_l1e_free_dma(atge_t *atgep)
248 if (atgep->atge_tx_ring != NULL) {
249 atge_free_buffers(atgep->atge_tx_ring, ATGE_TX_RING_CNT);
251 if (atgep->atge_tx_ring->r_desc_ring != NULL) {
252 atge_free_a_dma_blk(atgep->atge_tx_ring->r_desc_ring);
255 kmem_free(atgep->atge_tx_ring, sizeof (atge_ring_t));
256 atgep->atge_tx_ring = NULL;
259 l1e = atgep->atge_private_data;
274 atge_rx_desc_free(atgep);
279 if (atgep->atge_hw_stats != NULL) {
280 kmem_free(atgep->atge_hw_stats, sizeof (atge_l1e_smb_t));
281 atgep->atge_hw_stats = NULL;
286 atge_l1e_init_rx_pages(atge_t *atgep)
292 ASSERT(atgep != NULL);
293 l1e = atgep->atge_private_data;
319 atge_l1e_init_tx_ring(atge_t *atgep)
321 ASSERT(atgep != NULL);
322 ASSERT(atgep->atge_tx_ring != NULL);
323 ASSERT(atgep->atge_tx_ring->r_desc_ring != NULL);
325 atgep->atge_tx_ring->r_producer = 0;
326 atgep->atge_tx_ring->r_consumer = 0;
327 atgep->atge_tx_ring->r_avail_desc = ATGE_TX_RING_CNT;
329 bzero(atgep->atge_tx_ring->r_desc_ring->addr, ATGE_TX_RING_SZ);
331 DMA_SYNC(atgep->atge_tx_ring->r_desc_ring, 0, ATGE_TX_RING_SZ,
336 atge_l1e_program_dma(atge_t *atgep)
342 l1e = (atge_l1e_data_t *)atgep->atge_private_data;
348 (void) INL(atgep, ATGE_WOL_CFG);
349 OUTL(atgep, ATGE_WOL_CFG, 0);
355 paddr = atgep->atge_tx_ring->r_desc_ring->cookie.dmac_laddress;
356 OUTL(atgep, ATGE_DESC_ADDR_HI, ATGE_ADDR_HI(paddr));
357 OUTL(atgep, ATGE_DESC_TPD_ADDR_LO, ATGE_ADDR_LO(paddr));
358 OUTL(atgep, ATGE_DESC_TPD_CNT,
363 OUTL(atgep, L1E_RXF0_PAGE0_ADDR_LO, ATGE_ADDR_LO(paddr));
365 OUTL(atgep, L1E_RXF0_PAGE1_ADDR_LO, ATGE_ADDR_LO(paddr));
369 OUTL(atgep, L1E_RXF0_CMB0_ADDR_LO, ATGE_ADDR_LO(paddr));
371 OUTL(atgep, L1E_RXF0_CMB1_ADDR_LO, ATGE_ADDR_LO(paddr));
374 OUTB(atgep, L1E_RXF0_PAGE0, RXF_VALID); /* 0 */
375 OUTB(atgep, L1E_RXF0_PAGE1, RXF_VALID); /* 1 */
376 OUTB(atgep, L1E_RXF0_PAGE0 + 2, 0);
377 OUTB(atgep, L1E_RXF0_PAGE0 + 3, 0);
378 OUTB(atgep, L1E_RXF0_PAGE0 + 4, 0);
379 OUTB(atgep, L1E_RXF0_PAGE0 + 5, 0);
380 OUTB(atgep, L1E_RXF0_PAGE0 + 6, 0);
381 OUTB(atgep, L1E_RXF0_PAGE0 + 6, 0);
384 OUTL(atgep, L1E_RXF_PAGE_SIZE, L1E_RX_PAGE_SZ);
387 OUTL(atgep, ATGE_DMA_BLOCK, DMA_BLOCK_LOAD);
390 OUTL(atgep, L1E_INT_TRIG_THRESH, (1 << INT_TRIG_RX_THRESH_SHIFT) |
397 OUTL(atgep, L1E_INT_TRIG_TIMER,
403 OUTL(atgep, ATGE_IM_TIMER, reg);
405 reg = INL(atgep, ATGE_MASTER_CFG);
410 OUTL(atgep, ATGE_MASTER_CFG, reg);
412 OUTW(atgep, RX_COALSC_PKT_1e, 0);
413 OUTW(atgep, RX_COALSC_TO_1e, 0);
414 OUTW(atgep, TX_COALSC_PKT_1e, 1);
415 OUTW(atgep, TX_COALSC_TO_1e, 4000/2); /* 4mS */
419 atge_l1e_receive(atge_t *atgep)
433 l1e = atgep->atge_private_data;
435 ASSERT(MUTEX_HELD(&atgep->atge_intr_lock));
464 atgep->atge_name, __func__,
494 atgep->atge_name, __func__, seqno,
497 mutex_enter(&atgep->atge_tx_lock);
498 atge_device_restart(atgep);
499 mutex_exit(&atgep->atge_tx_lock);
519 atgep->atge_name, __func__, flags));
520 atge_l1e_rx_next_pkt(atgep, len);
521 atgep->atge_errrcv++;
529 if (len == 0 || len > atgep->atge_rx_buf_len) {
531 atgep->atge_name, __func__, len));
532 atge_l1e_rx_next_pkt(atgep, len);
552 atgep->atge_ipackets++;
553 atgep->atge_rbytes += len;
556 atgep->atge_name, __func__, len));
558 if (len > atgep->atge_rx_buf_len) {
559 atgep->atge_toolong_errors++;
561 atgep->atge_norcvbuf++;
565 atge_l1e_rx_next_pkt(atgep, len);
570 atgep->atge_name, __func__, seqno,
578 atgep->atge_name, __func__, gen,
588 atge_l1e_rx_next_pkt(atge_t *atgep, uint32_t len)
590 atge_l1e_data_t *l1e = atgep->atge_private_data;
608 atgep->atge_name, __func__, l1e->atge_l1e_rx_page_cons,
624 OUTB(atgep, L1E_RXF0_PAGE0 + curr, RXF_VALID);
652 atgep->atge_name, __func__, curr,
667 atge_l1e_clear_stats(atge_t *atgep)
679 (void) INL(atgep, L1E_RX_MIB_BASE + i);
689 (void) INL(atgep, L1E_TX_MIB_BASE + i);
695 atge_l1e_gather_stats(atge_t *atgep)
703 ASSERT(atgep != NULL);
705 stat = (atge_l1e_smb_t *)atgep->atge_hw_stats;
714 *reg = INL(atgep, L1E_RX_MIB_BASE + i);
722 *reg = INL(atgep, L1E_TX_MIB_BASE + i);
787 atgep->atge_brdcstrcv += smb->rx_bcast_frames;
788 atgep->atge_multircv += smb->rx_mcast_frames;
789 atgep->atge_multixmt += smb->tx_mcast_frames;
790 atgep->atge_brdcstxmt += smb->tx_bcast_frames;
792 atgep->atge_align_errors += smb->rx_alignerrs;
793 atgep->atge_fcs_errors += smb->rx_crcerrs;
794 atgep->atge_sqe_errors += smb->rx_rrs_errs;
795 atgep->atge_defer_xmts += smb->tx_deferred;
796 atgep->atge_first_collisions += smb->tx_single_colls;
797 atgep->atge_multi_collisions += smb->tx_multi_colls * 2;
798 atgep->atge_tx_late_collisions += smb->tx_late_colls;
799 atgep->atge_ex_collisions += smb->tx_excess_colls;
800 atgep->atge_macxmt_errors += smb->tx_abort;
801 atgep->atge_toolong_errors += smb->rx_lenerrs;
802 atgep->atge_overflow += smb->rx_fifo_oflows;
803 atgep->atge_underflow += (smb->tx_underrun + smb->tx_desc_underrun);
804 atgep->atge_runt += smb->rx_runts;
807 atgep->atge_collisions += smb->tx_single_colls +
815 atgep->atge_macxmt_errors += smb->tx_abort + smb->tx_late_colls +
818 atgep->atge_macrcv_errors += smb->rx_crcerrs + smb->rx_lenerrs +
825 atge_l1e_stop_mac(atge_t *atgep)
829 reg = INL(atgep, ATGE_MAC_CFG);
830 ATGE_DB(("%s: %s() reg : %x", atgep->atge_name, __func__, reg));
834 OUTL(atgep, ATGE_MAC_CFG, reg);
835 ATGE_DB(("%s: %s() mac stopped", atgep->atge_name, __func__));
846 atge_t *atgep = (void *)arg1;
851 ASSERT(atgep != NULL);
853 mutex_enter(&atgep->atge_intr_lock);
855 if (atgep->atge_chip_state & ATGE_CHIP_SUSPENDED) {
856 mutex_exit(&atgep->atge_intr_lock);
860 status = INL(atgep, ATGE_INTR_STATUS);
861 if (status == 0 || (status & atgep->atge_intrs) == 0) {
862 mutex_exit(&atgep->atge_intr_lock);
864 if (atgep->atge_flags & ATGE_FIXED_TYPE)
871 atgep->atge_name, __func__, status));
877 OUTL(atgep, ATGE_INTR_STATUS, status | INTR_DIS_INT);
878 FLUSH(atgep, ATGE_INTR_STATUS);
883 if (atgep->atge_chip_state & ATGE_CHIP_RUNNING) {
885 atge_l1e_gather_stats(atgep);
892 atge_error(atgep->atge_dip,
898 atge_error(atgep->atge_dip, "DMA transfer err");
900 atge_device_stop(atgep);
905 atge_error(atgep->atge_dip, "TX FIFO underrun");
909 rx_head = atge_l1e_receive(atgep);
914 mutex_enter(&atgep->atge_tx_lock);
915 cons = INW(atgep, L1E_TPD_CONS_IDX);
916 atge_tx_reclaim(atgep, cons);
917 if (atgep->atge_tx_resched) {
918 atgep->atge_tx_resched = 0;
922 mutex_exit(&atgep->atge_tx_lock);
929 OUTL(atgep, ATGE_INTR_STATUS, 0);
933 mutex_exit(&atgep->atge_intr_lock);
939 (void) atge_mii_read(atgep,
940 atgep->atge_phyaddr, ATGE_ISR_ACK_GPHY);
942 mii_check(atgep->atge_mii);
949 mac_rx(atgep->atge_mh, 0, rx_head);
956 mac_tx_update(atgep->atge_mh);