Lines Matching defs:atgep

126 atge_l1_alloc_dma(atge_t *atgep)
133 atgep->atge_private_data = l1;
138 atgep->atge_tx_buf_len = atgep->atge_mtu +
140 atgep->atge_tx_ring = kmem_alloc(sizeof (atge_ring_t), KM_SLEEP);
141 atgep->atge_tx_ring->r_atge = atgep;
142 atgep->atge_tx_ring->r_desc_ring = NULL;
143 dma = atge_alloc_a_dma_blk(atgep, &atge_l1_dma_attr_tx_desc,
146 atge_error(atgep->atge_dip, "DMA allocation failed for TX"
150 atgep->atge_tx_ring->r_desc_ring = dma;
155 err = atge_alloc_buffers(atgep->atge_tx_ring, ATGE_TX_RING_CNT,
156 atgep->atge_tx_buf_len, DDI_DMA_WRITE);
158 atge_error(atgep->atge_dip, "DMA allocation failed for"
166 atgep->atge_rx_buf_len = atgep->atge_mtu +
169 l1->atge_rx_ring->r_atge = atgep;
171 dma = atge_alloc_a_dma_blk(atgep, &atge_l1_dma_attr_rx_desc,
174 atge_error(atgep->atge_dip, "DMA allocation failed"
184 atgep->atge_rx_buf_len, DDI_DMA_WRITE);
186 atge_error(atgep->atge_dip, "DMA allocation failed for"
194 ATGE_DB(("%s: %s() L1_CMB_BLOCK_SZ : %x", atgep->atge_name,
197 dma = atge_alloc_a_dma_blk(atgep, &atge_l1_dma_attr_cmb,
201 atge_error(atgep->atge_dip, "DMA allocation failed for CMB");
208 ATGE_DB(("%s: %s() L1_RR_RING_SZ : %x", atgep->atge_name,
211 dma = atge_alloc_a_dma_blk(atgep, &atge_l1_dma_attr_rr,
215 atge_error(atgep->atge_dip, "DMA allocation failed"
223 ATGE_DB(("%s: %s() L1_SMB_BLOCK_SZ : %x", atgep->atge_name,
226 dma = atge_alloc_a_dma_blk(atgep, &atge_l1_dma_attr_smb,
230 atge_error(atgep->atge_dip, "DMA allocation failed for SMB");
234 atgep->atge_hw_stats = kmem_zalloc(sizeof (atge_l1_smb_t), KM_SLEEP);
240 atge_l1_free_dma(atge_t *atgep)
244 l1 = atgep->atge_private_data;
249 if (atgep->atge_tx_ring != NULL) {
250 atge_free_buffers(atgep->atge_tx_ring, ATGE_TX_RING_CNT);
252 if (atgep->atge_tx_ring->r_desc_ring != NULL) {
253 atge_free_a_dma_blk(atgep->atge_tx_ring->r_desc_ring);
256 kmem_free(atgep->atge_tx_ring, sizeof (atge_ring_t));
257 atgep->atge_tx_ring = NULL;
292 if (atgep->atge_hw_stats != NULL) {
293 kmem_free(atgep->atge_hw_stats, sizeof (atge_l1_smb_t));
294 atgep->atge_hw_stats = NULL;
299 atge_l1_init_rx_ring(atge_t *atgep)
306 l1 = atgep->atge_private_data;
325 atge_l1_init_tx_ring(atge_t *atgep)
327 atgep->atge_tx_ring->r_producer = 0;
328 atgep->atge_tx_ring->r_consumer = 0;
329 atgep->atge_tx_ring->r_avail_desc = ATGE_TX_RING_CNT;
331 bzero(atgep->atge_tx_ring->r_desc_ring->addr, ATGE_TX_RING_SZ);
332 DMA_SYNC(atgep->atge_tx_ring->r_desc_ring, 0, ATGE_TX_RING_SZ,
337 atge_l1_init_rr_ring(atge_t *atgep)
342 l1 = atgep->atge_private_data;
351 atge_l1_init_smb(atge_t *atgep)
356 l1 = atgep->atge_private_data;
363 atge_l1_init_cmb(atge_t *atgep)
368 l1 = atgep->atge_private_data;
375 atge_l1_sync_mbox(atge_t *atgep)
379 l1 = atgep->atge_private_data;
381 mutex_enter(&atgep->atge_mbox_lock);
382 OUTL(atgep, ATGE_MBOX,
387 ((atgep->atge_tx_ring->r_producer << MBOX_TD_PROD_IDX_SHIFT) &
389 mutex_exit(&atgep->atge_mbox_lock);
393 atge_l1_program_dma(atge_t *atgep)
398 l1 = atgep->atge_private_data;
401 r = atgep->atge_tx_ring;
402 OUTL(atgep, ATGE_DESC_ADDR_HI,
404 OUTL(atgep, ATGE_DESC_TPD_ADDR_LO,
409 OUTL(atgep, ATGE_DESC_RD_ADDR_LO,
413 OUTL(atgep, ATGE_DESC_RRD_ADDR_LO,
417 OUTL(atgep, ATGE_DESC_CMB_ADDR_LO,
421 OUTL(atgep, ATGE_DESC_SMB_ADDR_LO,
427 OUTL(atgep, ATGE_DESC_RRD_RD_CNT,
435 OUTL(atgep, ATGE_DESC_TPD_CNT,
441 OUTL(atgep, ATGE_DMA_BLOCK, DMA_BLOCK_LOAD);
446 atge_l1_sync_mbox(atgep);
450 atge_l1_gather_stats(atge_t *atgep)
457 ASSERT(atgep != NULL);
459 l1 = atgep->atge_private_data;
462 stat = (atge_l1_smb_t *)atgep->atge_hw_stats;
520 atgep->atge_brdcstrcv += smb->rx_bcast_frames;
521 atgep->atge_multircv += smb->rx_mcast_frames;
522 atgep->atge_multixmt += smb->tx_mcast_frames;
523 atgep->atge_brdcstxmt += smb->tx_bcast_frames;
525 atgep->atge_align_errors += smb->rx_alignerrs;
526 atgep->atge_fcs_errors += smb->rx_crcerrs;
527 atgep->atge_defer_xmts += smb->tx_deferred;
528 atgep->atge_first_collisions += smb->tx_single_colls;
529 atgep->atge_multi_collisions += smb->tx_multi_colls * 2;
530 atgep->atge_tx_late_collisions += smb->tx_late_colls;
531 atgep->atge_ex_collisions += smb->tx_excess_colls;
532 atgep->atge_toolong_errors += smb->rx_lenerrs;
533 atgep->atge_overflow += smb->rx_fifo_oflows;
534 atgep->atge_underflow += (smb->tx_underrun + smb->tx_desc_underrun);
535 atgep->atge_runt += smb->rx_runts;
538 atgep->atge_collisions += smb->tx_single_colls +
545 atgep->atge_macxmt_errors += smb->tx_late_colls + smb->tx_underrun;
547 atgep->atge_macrcv_errors += smb->rx_crcerrs + smb->rx_lenerrs +
556 atge_l1_stop_tx_mac(atge_t *atgep)
561 ATGE_DB(("%s: %s() called", atgep->atge_name, __func__));
563 reg = INL(atgep, ATGE_MAC_CFG);
566 OUTL(atgep, ATGE_MAC_CFG, reg);
570 reg = INL(atgep, ATGE_DMA_CFG);
573 OUTL(atgep, ATGE_DMA_CFG, reg);
577 if ((INL(atgep, ATGE_IDLE_STATUS) &
585 atge_error(atgep->atge_dip, "stopping TX DMA Engine timeout");
590 atge_l1_stop_rx_mac(atge_t *atgep)
595 ATGE_DB(("%s: %s() called", atgep->atge_name, __func__));
597 reg = INL(atgep, ATGE_MAC_CFG);
600 OUTL(atgep, ATGE_MAC_CFG, reg);
604 reg = INL(atgep, ATGE_DMA_CFG);
607 OUTL(atgep, ATGE_DMA_CFG, reg);
611 if ((INL(atgep, ATGE_IDLE_STATUS) &
618 atge_error(atgep->atge_dip, " stopping RX DMA Engine timeout");
626 atge_l1_rx(atge_t *atgep)
638 l1 = atgep->atge_private_data;
655 " rx_cons : %d, nsegs : %d", atgep->atge_name, __func__,
664 atge_error(atgep->atge_dip, "errored pkt");
680 atgep->atge_ipackets++;
681 atgep->atge_rbytes += totlen;
690 slotlen = atgep->atge_mtu;
696 atgep->atge_name, __func__, totlen));
698 if (slotlen > atgep->atge_rx_buf_len) {
699 atgep->atge_toolong_errors++;
701 atgep->atge_norcvbuf++;
723 atgep->atge_name, __func__, slotlen, rx_cons,
757 atge_l1_sync_mbox(atgep);
761 atgep->atge_name, __func__, l1->atge_rx_ring->r_consumer,
776 atge_t *atgep = (void *)arg1;
781 ASSERT(atgep != NULL);
783 mutex_enter(&atgep->atge_intr_lock);
785 if (atgep->atge_chip_state & ATGE_CHIP_SUSPENDED) {
786 mutex_exit(&atgep->atge_intr_lock);
790 status = INL(atgep, ATGE_INTR_STATUS);
791 if (status == 0 || (status & atgep->atge_intrs) == 0) {
792 mutex_exit(&atgep->atge_intr_lock);
794 if (atgep->atge_flags & ATGE_FIXED_TYPE)
801 atgep->atge_name, __func__, status));
806 OUTL(atgep, ATGE_INTR_STATUS, status | INTR_DIS_INT);
807 FLUSH(atgep, ATGE_INTR_STATUS);
812 if (atgep->atge_chip_state & ATGE_CHIP_RUNNING) {
816 l1 = atgep->atge_private_data;
834 atgep->atge_name, __func__, l1->atge_l1_intr_status,
858 atgep->atge_name, __func__,
862 mutex_enter(&atgep->atge_tx_lock);
863 atge_device_restart(atgep);
864 mutex_exit(&atgep->atge_tx_lock);
868 rx_head = atge_l1_rx(atgep);
871 atge_l1_gather_stats(atgep);
874 mutex_enter(&atgep->atge_tx_lock);
875 atge_tx_reclaim(atgep, l1->atge_l1_tx_prod_cons);
876 if (atgep->atge_tx_resched) {
877 atgep->atge_tx_resched = 0;
881 mutex_exit(&atgep->atge_tx_lock);
885 atge_error(atgep->atge_dip,
889 atgep->atge_name, __func__));
891 atge_device_stop(atgep);
898 OUTL(atgep, ATGE_INTR_STATUS, INTR_DIS_DMA | INTR_DIS_SM);
899 mutex_exit(&atgep->atge_intr_lock);
901 if (status & INTR_GPHY || atgep->atge_flags & ATGE_MII_CHECK) {
903 atgep->atge_name, __func__));
906 (void) atge_mii_read(atgep,
907 atgep->atge_phyaddr, ATGE_ISR_ACK_GPHY);
910 atgep->atge_flags &= ~ATGE_MII_CHECK;
911 mii_reset(atgep->atge_mii);
918 mac_rx(atgep->atge_mh, 0, rx_head);
922 mac_rx(atgep->atge_mh, 0, rx_head1);
929 mac_tx_update(atgep->atge_mh);