Lines Matching refs:pdata

320 	struct xgbe_prv_data    *pdata = &sc->pdata;  in axgbe_miibus_readreg()  local
325 val = xgbe_phy_mii_read(pdata, phy, reg); in axgbe_miibus_readreg()
335 struct xgbe_prv_data *pdata = &sc->pdata; in axgbe_miibus_writereg() local
339 xgbe_phy_mii_write(pdata, phy, reg, val); in axgbe_miibus_writereg()
348 struct xgbe_prv_data *pdata = &sc->pdata; in axgbe_miibus_statchg() local
349 struct mii_data *mii = device_get_softc(pdata->axgbe_miibus); in axgbe_miibus_statchg()
350 if_t ifp = pdata->netdev; in axgbe_miibus_statchg()
353 axgbe_printf(2, "%s: Link %d/%d\n", __func__, pdata->phy.link, in axgbe_miibus_statchg()
354 pdata->phy_link); in axgbe_miibus_statchg()
366 pdata->phy.link = 1; in axgbe_miibus_statchg()
371 pdata->phy.link = 1; in axgbe_miibus_statchg()
374 pdata->phy.link = 0; in axgbe_miibus_statchg()
378 pdata->phy_link = 0; in axgbe_miibus_statchg()
380 bmsr = axgbe_miibus_readreg(pdata->dev, pdata->mdio_addr, MII_BMSR); in axgbe_miibus_statchg()
386 XMDIO_WRITE(pdata, MDIO_MMD_AN, MDIO_AN_INTMASK, in axgbe_miibus_statchg()
395 struct xgbe_prv_data *pdata; in axgbe_if_attach_pre() local
406 sc->pdata.dev = dev = iflib_get_dev(ctx); in axgbe_if_attach_pre()
412 pdata = &sc->pdata; in axgbe_if_attach_pre()
413 pdata->netdev = iflib_get_ifp(ctx); in axgbe_if_attach_pre()
415 spin_lock_init(&pdata->xpcs_lock); in axgbe_if_attach_pre()
418 mtx_init(&pdata->rss_mutex, "xgbe rss mutex lock", NULL, MTX_DEF); in axgbe_if_attach_pre()
419 mtx_init(&pdata->mdio_mutex, "xgbe MDIO mutex lock", NULL, MTX_SPIN); in axgbe_if_attach_pre()
422 pdata->active_vlans = bit_alloc(VLAN_NVID, M_AXGBE, M_WAITOK|M_ZERO); in axgbe_if_attach_pre()
423 pdata->num_active_vlans = 0; in axgbe_if_attach_pre()
428 sc->pdata.vdata = &xgbe_v2a; in axgbe_if_attach_pre()
430 sc->pdata.vdata = &xgbe_v2b; in axgbe_if_attach_pre()
439 sc->pdata.xgmac_res = mac_res[0]; in axgbe_if_attach_pre()
440 sc->pdata.xpcs_res = mac_res[1]; in axgbe_if_attach_pre()
453 pdata->xpcs_window_def_reg = PCS_V2_RV_WINDOW_DEF; in axgbe_if_attach_pre()
454 pdata->xpcs_window_sel_reg = PCS_V2_RV_WINDOW_SELECT; in axgbe_if_attach_pre()
456 pdata->xpcs_window_def_reg = PCS_V2_WINDOW_DEF; in axgbe_if_attach_pre()
457 pdata->xpcs_window_sel_reg = PCS_V2_WINDOW_SELECT; in axgbe_if_attach_pre()
461 reg = XPCS32_IOREAD(pdata, pdata->xpcs_window_def_reg); in axgbe_if_attach_pre()
462 pdata->xpcs_window = XPCS_GET_BITS(reg, PCS_V2_WINDOW_DEF, OFFSET); in axgbe_if_attach_pre()
463 pdata->xpcs_window <<= 6; in axgbe_if_attach_pre()
464 pdata->xpcs_window_size = XPCS_GET_BITS(reg, PCS_V2_WINDOW_DEF, SIZE); in axgbe_if_attach_pre()
465 pdata->xpcs_window_size = 1 << (pdata->xpcs_window_size + 7); in axgbe_if_attach_pre()
466 pdata->xpcs_window_mask = pdata->xpcs_window_size - 1; in axgbe_if_attach_pre()
468 pdata->xpcs_window_def_reg); in axgbe_if_attach_pre()
470 pdata->xpcs_window_sel_reg); in axgbe_if_attach_pre()
472 pdata->xpcs_window); in axgbe_if_attach_pre()
474 pdata->xpcs_window_size); in axgbe_if_attach_pre()
476 pdata->xpcs_window_mask); in axgbe_if_attach_pre()
479 XP_IOWRITE(pdata, XP_INT_EN, 0x1fffff); in axgbe_if_attach_pre()
482 ma_lo = XP_IOREAD(pdata, XP_MAC_ADDR_LO); in axgbe_if_attach_pre()
483 ma_hi = XP_IOREAD(pdata, XP_MAC_ADDR_HI); in axgbe_if_attach_pre()
484 pdata->mac_addr[0] = ma_lo & 0xff; in axgbe_if_attach_pre()
485 pdata->mac_addr[1] = (ma_lo >> 8) & 0xff; in axgbe_if_attach_pre()
486 pdata->mac_addr[2] = (ma_lo >>16) & 0xff; in axgbe_if_attach_pre()
487 pdata->mac_addr[3] = (ma_lo >> 24) & 0xff; in axgbe_if_attach_pre()
488 pdata->mac_addr[4] = ma_hi & 0xff; in axgbe_if_attach_pre()
489 pdata->mac_addr[5] = (ma_hi >> 8) & 0xff; in axgbe_if_attach_pre()
495 iflib_set_mac(ctx, pdata->mac_addr); in axgbe_if_attach_pre()
498 pdata->sysclk_rate = XGBE_V2_DMA_CLOCK_FREQ; in axgbe_if_attach_pre()
499 pdata->ptpclk_rate = XGBE_V2_PTP_CLOCK_FREQ; in axgbe_if_attach_pre()
502 pdata->coherent = 1; in axgbe_if_attach_pre()
503 pdata->arcr = XGBE_DMA_PCI_ARCR; in axgbe_if_attach_pre()
504 pdata->awcr = XGBE_DMA_PCI_AWCR; in axgbe_if_attach_pre()
505 pdata->awarcr = XGBE_DMA_PCI_AWARCR; in axgbe_if_attach_pre()
508 pdata->pp0 = XP_IOREAD(pdata, XP_PROP_0); in axgbe_if_attach_pre()
509 pdata->pp1 = XP_IOREAD(pdata, XP_PROP_1); in axgbe_if_attach_pre()
510 pdata->pp2 = XP_IOREAD(pdata, XP_PROP_2); in axgbe_if_attach_pre()
511 pdata->pp3 = XP_IOREAD(pdata, XP_PROP_3); in axgbe_if_attach_pre()
512 pdata->pp4 = XP_IOREAD(pdata, XP_PROP_4); in axgbe_if_attach_pre()
513 DBGPR("port property 0 = %#010x\n", pdata->pp0); in axgbe_if_attach_pre()
514 DBGPR("port property 1 = %#010x\n", pdata->pp1); in axgbe_if_attach_pre()
515 DBGPR("port property 2 = %#010x\n", pdata->pp2); in axgbe_if_attach_pre()
516 DBGPR("port property 3 = %#010x\n", pdata->pp3); in axgbe_if_attach_pre()
517 DBGPR("port property 4 = %#010x\n", pdata->pp4); in axgbe_if_attach_pre()
520 pdata->tx_max_channel_count = XP_GET_BITS(pdata->pp1, XP_PROP_1, in axgbe_if_attach_pre()
522 pdata->rx_max_channel_count = XP_GET_BITS(pdata->pp1, XP_PROP_1, in axgbe_if_attach_pre()
524 pdata->tx_max_q_count = XP_GET_BITS(pdata->pp1, XP_PROP_1, in axgbe_if_attach_pre()
526 pdata->rx_max_q_count = XP_GET_BITS(pdata->pp1, XP_PROP_1, in axgbe_if_attach_pre()
529 pdata->tx_max_channel_count, pdata->rx_max_channel_count); in axgbe_if_attach_pre()
531 pdata->tx_max_q_count, pdata->rx_max_q_count); in axgbe_if_attach_pre()
536 pdata->tx_max_fifo_size = XP_GET_BITS(pdata->pp2, XP_PROP_2, in axgbe_if_attach_pre()
538 pdata->tx_max_fifo_size *= 16384; in axgbe_if_attach_pre()
539 pdata->tx_max_fifo_size = min(pdata->tx_max_fifo_size, in axgbe_if_attach_pre()
540 pdata->vdata->tx_max_fifo_size); in axgbe_if_attach_pre()
541 pdata->rx_max_fifo_size = XP_GET_BITS(pdata->pp2, XP_PROP_2, in axgbe_if_attach_pre()
543 pdata->rx_max_fifo_size *= 16384; in axgbe_if_attach_pre()
544 pdata->rx_max_fifo_size = min(pdata->rx_max_fifo_size, in axgbe_if_attach_pre()
545 pdata->vdata->rx_max_fifo_size); in axgbe_if_attach_pre()
547 pdata->tx_max_fifo_size, pdata->rx_max_fifo_size); in axgbe_if_attach_pre()
559 TASK_INIT(&pdata->service_work, 0, xgbe_service, pdata); in axgbe_if_attach_pre()
562 pdata->dev_workqueue = taskqueue_create("axgbe", M_WAITOK, in axgbe_if_attach_pre()
563 taskqueue_thread_enqueue, &pdata->dev_workqueue); in axgbe_if_attach_pre()
564 ret = taskqueue_start_threads(&pdata->dev_workqueue, 1, PI_NET, in axgbe_if_attach_pre()
573 xgbe_init_timers(pdata); in axgbe_if_attach_pre()
578 taskqueue_free(pdata->dev_workqueue); in axgbe_if_attach_pre()
585 free(pdata->active_vlans, M_AXGBE); in axgbe_if_attach_pre()
591 xgbe_init_all_fptrs(struct xgbe_prv_data *pdata) in xgbe_init_all_fptrs() argument
593 xgbe_init_function_ptrs_dev(&pdata->hw_if); in xgbe_init_all_fptrs()
594 xgbe_init_function_ptrs_phy(&pdata->phy_if); in xgbe_init_all_fptrs()
595 xgbe_init_function_ptrs_i2c(&pdata->i2c_if); in xgbe_init_all_fptrs()
596 xgbe_init_function_ptrs_desc(&pdata->desc_if); in xgbe_init_all_fptrs()
598 pdata->vdata->init_function_ptrs_phy_impl(&pdata->phy_if); in xgbe_init_all_fptrs()
605 struct xgbe_prv_data *pdata = &sc->pdata; in axgbe_set_counts() local
609 xgbe_init_all_fptrs(pdata); in axgbe_set_counts()
612 xgbe_get_all_hw_features(pdata); in axgbe_set_counts()
614 if (!pdata->tx_max_channel_count) in axgbe_set_counts()
615 pdata->tx_max_channel_count = pdata->hw_feat.tx_ch_cnt; in axgbe_set_counts()
616 if (!pdata->rx_max_channel_count) in axgbe_set_counts()
617 pdata->rx_max_channel_count = pdata->hw_feat.rx_ch_cnt; in axgbe_set_counts()
619 if (!pdata->tx_max_q_count) in axgbe_set_counts()
620 pdata->tx_max_q_count = pdata->hw_feat.tx_q_cnt; in axgbe_set_counts()
621 if (!pdata->rx_max_q_count) in axgbe_set_counts()
622 pdata->rx_max_q_count = pdata->hw_feat.rx_q_cnt; in axgbe_set_counts()
633 if (bus_get_cpus(pdata->dev, INTR_CPUS, sizeof(lcpus), &lcpus) != 0) { in axgbe_set_counts()
640 pdata->tx_ring_count = min(CPU_COUNT(&lcpus), pdata->hw_feat.tx_ch_cnt); in axgbe_set_counts()
641 pdata->tx_ring_count = min(pdata->tx_ring_count, in axgbe_set_counts()
642 pdata->tx_max_channel_count); in axgbe_set_counts()
643 pdata->tx_ring_count = min(pdata->tx_ring_count, pdata->tx_max_q_count); in axgbe_set_counts()
645 pdata->tx_q_count = pdata->tx_ring_count; in axgbe_set_counts()
647 pdata->rx_ring_count = min(CPU_COUNT(&lcpus), pdata->hw_feat.rx_ch_cnt); in axgbe_set_counts()
648 pdata->rx_ring_count = min(pdata->rx_ring_count, in axgbe_set_counts()
649 pdata->rx_max_channel_count); in axgbe_set_counts()
651 pdata->rx_q_count = min(pdata->hw_feat.rx_q_cnt, pdata->rx_max_q_count); in axgbe_set_counts()
654 pdata->tx_max_channel_count, pdata->rx_max_channel_count); in axgbe_set_counts()
656 pdata->tx_max_q_count, pdata->rx_max_q_count); in axgbe_set_counts()
658 pdata->tx_ring_count, pdata->rx_ring_count); in axgbe_set_counts()
660 pdata->tx_q_count, pdata->rx_q_count); in axgbe_set_counts()
666 struct xgbe_prv_data *pdata = &sc->pdata; in axgbe_init_iflib_softc_ctx() local
671 scctx->isc_nrxqsets = pdata->rx_q_count; in axgbe_init_iflib_softc_ctx()
672 scctx->isc_ntxqsets = pdata->tx_q_count; in axgbe_init_iflib_softc_ctx()
673 scctx->isc_msix_bar = pci_msix_table_bar(pdata->dev); in axgbe_init_iflib_softc_ctx()
723 axgbe_initialize_rss_mapping(struct xgbe_prv_data *pdata) in axgbe_initialize_rss_mapping() argument
732 rss_getkey((uint8_t *)&pdata->rss_key); in axgbe_initialize_rss_mapping()
737 XGMAC_SET_BITS(pdata->rss_options, MAC_RSSCR, IP2TE, 1); in axgbe_initialize_rss_mapping()
739 XGMAC_SET_BITS(pdata->rss_options, MAC_RSSCR, TCP4TE, 1); in axgbe_initialize_rss_mapping()
741 XGMAC_SET_BITS(pdata->rss_options, MAC_RSSCR, UDP4TE, 1); in axgbe_initialize_rss_mapping()
743 arc4rand(&pdata->rss_key, ARRAY_SIZE(pdata->rss_key), 0); in axgbe_initialize_rss_mapping()
745 XGMAC_SET_BITS(pdata->rss_options, MAC_RSSCR, IP2TE, 1); in axgbe_initialize_rss_mapping()
746 XGMAC_SET_BITS(pdata->rss_options, MAC_RSSCR, TCP4TE, 1); in axgbe_initialize_rss_mapping()
747 XGMAC_SET_BITS(pdata->rss_options, MAC_RSSCR, UDP4TE, 1); in axgbe_initialize_rss_mapping()
753 qid = rss_get_indirection_to_bucket(i) % pdata->rx_ring_count; in axgbe_initialize_rss_mapping()
754 XGMAC_SET_BITS(pdata->rss_table[i], MAC_RSSDR, DMCH, qid); in axgbe_initialize_rss_mapping()
756 XGMAC_SET_BITS(pdata->rss_table[i], MAC_RSSDR, DMCH, in axgbe_initialize_rss_mapping()
757 i % pdata->rx_ring_count); in axgbe_initialize_rss_mapping()
767 struct xgbe_prv_data *pdata = &sc->pdata; in axgbe_alloc_channels() local
771 DBGPR("%s: txqs %d rxqs %d\n", __func__, pdata->tx_ring_count, in axgbe_alloc_channels()
772 pdata->rx_ring_count); in axgbe_alloc_channels()
775 count = max_t(unsigned int, pdata->tx_ring_count, pdata->rx_ring_count); in axgbe_alloc_channels()
784 free(pdata->channel[j], M_AXGBE); in axgbe_alloc_channels()
785 pdata->channel[j] = NULL; in axgbe_alloc_channels()
790 pdata->channel[i] = channel; in axgbe_alloc_channels()
793 pdata->total_channel_count = count; in axgbe_alloc_channels()
794 DBGPR("Channel count set to: %u\n", pdata->total_channel_count); in axgbe_alloc_channels()
798 channel = pdata->channel[i]; in axgbe_alloc_channels()
801 channel->pdata = pdata; in axgbe_alloc_channels()
803 channel->dma_tag = rman_get_bustag(pdata->xgmac_res); in axgbe_alloc_channels()
805 rman_get_bushandle(pdata->xgmac_res), in axgbe_alloc_channels()
818 struct xgbe_prv_data *pdata = &sc->pdata; in axgbe_free_channels() local
821 for (i = 0; i < pdata->total_channel_count ; i++) { in axgbe_free_channels()
822 free(pdata->channel[i], M_AXGBE); in axgbe_free_channels()
823 pdata->channel[i] = NULL; in axgbe_free_channels()
826 pdata->total_channel_count = 0; in axgbe_free_channels()
827 pdata->channel_count = 0; in axgbe_free_channels()
833 struct xgbe_prv_data *pdata = ctx; in xgbe_service() local
834 struct axgbe_if_softc *sc = (struct axgbe_if_softc *)pdata; in xgbe_service()
838 prev_state = pdata->phy.link; in xgbe_service()
840 pdata->phy_if.phy_status(pdata); in xgbe_service()
842 if (prev_state != pdata->phy.link) { in xgbe_service()
843 pdata->phy_link = pdata->phy.link; in xgbe_service()
847 callout_reset(&pdata->service_timer, 1*hz, xgbe_service_timer, pdata); in xgbe_service()
853 struct xgbe_prv_data *pdata = data; in xgbe_service_timer() local
855 taskqueue_enqueue(pdata->dev_workqueue, &pdata->service_work); in xgbe_service_timer()
859 xgbe_init_timers(struct xgbe_prv_data *pdata) in xgbe_init_timers() argument
861 callout_init(&pdata->service_timer, 1); in xgbe_init_timers()
865 xgbe_start_timers(struct xgbe_prv_data *pdata) in xgbe_start_timers() argument
867 callout_reset(&pdata->service_timer, 1*hz, xgbe_service_timer, pdata); in xgbe_start_timers()
871 xgbe_stop_timers(struct xgbe_prv_data *pdata) in xgbe_stop_timers() argument
873 callout_drain(&pdata->service_timer); in xgbe_stop_timers()
874 callout_stop(&pdata->service_timer); in xgbe_stop_timers()
878 xgbe_dump_phy_registers(struct xgbe_prv_data *pdata) in xgbe_dump_phy_registers() argument
883 XMDIO_READ(pdata, MDIO_MMD_PCS, MDIO_CTRL1)); in xgbe_dump_phy_registers()
885 XMDIO_READ(pdata, MDIO_MMD_PCS, MDIO_STAT1)); in xgbe_dump_phy_registers()
887 XMDIO_READ(pdata, MDIO_MMD_PCS, MDIO_DEVID1)); in xgbe_dump_phy_registers()
889 XMDIO_READ(pdata, MDIO_MMD_PCS, MDIO_DEVID2)); in xgbe_dump_phy_registers()
891 XMDIO_READ(pdata, MDIO_MMD_PCS, MDIO_DEVS1)); in xgbe_dump_phy_registers()
893 XMDIO_READ(pdata, MDIO_MMD_PCS, MDIO_DEVS2)); in xgbe_dump_phy_registers()
895 XMDIO_READ(pdata, MDIO_MMD_AN, MDIO_CTRL1)); in xgbe_dump_phy_registers()
897 XMDIO_READ(pdata, MDIO_MMD_AN, MDIO_STAT1)); in xgbe_dump_phy_registers()
900 XMDIO_READ(pdata, MDIO_MMD_AN, MDIO_AN_ADVERTISE)); in xgbe_dump_phy_registers()
903 XMDIO_READ(pdata, MDIO_MMD_AN, MDIO_AN_ADVERTISE + 1)); in xgbe_dump_phy_registers()
906 XMDIO_READ(pdata, MDIO_MMD_AN, MDIO_AN_ADVERTISE + 2)); in xgbe_dump_phy_registers()
909 XMDIO_READ(pdata, MDIO_MMD_AN, MDIO_AN_COMP_STAT)); in xgbe_dump_phy_registers()
915 xgbe_dump_prop_registers(struct xgbe_prv_data *pdata) in xgbe_dump_prop_registers() argument
923 (XP_PROP_0 + (i * 4)), XP_IOREAD(pdata, in xgbe_dump_prop_registers()
929 xgbe_dump_dma_registers(struct xgbe_prv_data *pdata, int ch) in xgbe_dump_dma_registers() argument
937 XGMAC_IOREAD(pdata, DMA_MR)); in xgbe_dump_dma_registers()
939 XGMAC_IOREAD(pdata, DMA_SBMR)); in xgbe_dump_dma_registers()
941 XGMAC_IOREAD(pdata, DMA_ISR)); in xgbe_dump_dma_registers()
943 XGMAC_IOREAD(pdata, DMA_AXIARCR)); in xgbe_dump_dma_registers()
945 XGMAC_IOREAD(pdata, DMA_AXIAWCR)); in xgbe_dump_dma_registers()
947 XGMAC_IOREAD(pdata, DMA_AXIAWARCR)); in xgbe_dump_dma_registers()
949 XGMAC_IOREAD(pdata, DMA_DSR0)); in xgbe_dump_dma_registers()
951 XGMAC_IOREAD(pdata, DMA_DSR1)); in xgbe_dump_dma_registers()
953 XGMAC_IOREAD(pdata, DMA_DSR2)); in xgbe_dump_dma_registers()
955 XGMAC_IOREAD(pdata, DMA_DSR3)); in xgbe_dump_dma_registers()
957 XGMAC_IOREAD(pdata, DMA_DSR4)); in xgbe_dump_dma_registers()
959 XGMAC_IOREAD(pdata, DMA_TXEDMACR)); in xgbe_dump_dma_registers()
961 XGMAC_IOREAD(pdata, DMA_RXEDMACR)); in xgbe_dump_dma_registers()
970 channel = pdata->channel[i]; in xgbe_dump_dma_registers()
1032 xgbe_dump_mtl_registers(struct xgbe_prv_data *pdata) in xgbe_dump_mtl_registers() argument
1039 XGMAC_IOREAD(pdata, MTL_OMR)); in xgbe_dump_mtl_registers()
1041 XGMAC_IOREAD(pdata, MTL_FDCR)); in xgbe_dump_mtl_registers()
1043 XGMAC_IOREAD(pdata, MTL_FDSR)); in xgbe_dump_mtl_registers()
1045 XGMAC_IOREAD(pdata, MTL_FDDR)); in xgbe_dump_mtl_registers()
1047 XGMAC_IOREAD(pdata, MTL_ISR)); in xgbe_dump_mtl_registers()
1049 XGMAC_IOREAD(pdata, MTL_RQDCM0R)); in xgbe_dump_mtl_registers()
1051 XGMAC_IOREAD(pdata, MTL_RQDCM1R)); in xgbe_dump_mtl_registers()
1053 XGMAC_IOREAD(pdata, MTL_RQDCM2R)); in xgbe_dump_mtl_registers()
1055 XGMAC_IOREAD(pdata, MTL_TCPM0R)); in xgbe_dump_mtl_registers()
1057 XGMAC_IOREAD(pdata, MTL_TCPM1R)); in xgbe_dump_mtl_registers()
1064 MTL_Q_TQOMR, XGMAC_MTL_IOREAD(pdata, i, MTL_Q_TQOMR)); in xgbe_dump_mtl_registers()
1066 MTL_Q_TQUR, XGMAC_MTL_IOREAD(pdata, i, MTL_Q_TQUR)); in xgbe_dump_mtl_registers()
1068 MTL_Q_TQDR, XGMAC_MTL_IOREAD(pdata, i, MTL_Q_TQDR)); in xgbe_dump_mtl_registers()
1070 MTL_Q_TC0ETSCR, XGMAC_MTL_IOREAD(pdata, i, MTL_Q_TC0ETSCR)); in xgbe_dump_mtl_registers()
1072 MTL_Q_TC0ETSSR, XGMAC_MTL_IOREAD(pdata, i, MTL_Q_TC0ETSSR)); in xgbe_dump_mtl_registers()
1074 MTL_Q_TC0QWR, XGMAC_MTL_IOREAD(pdata, i, MTL_Q_TC0QWR)); in xgbe_dump_mtl_registers()
1077 MTL_Q_RQOMR, XGMAC_MTL_IOREAD(pdata, i, MTL_Q_RQOMR)); in xgbe_dump_mtl_registers()
1079 MTL_Q_RQMPOCR, XGMAC_MTL_IOREAD(pdata, i, MTL_Q_RQMPOCR)); in xgbe_dump_mtl_registers()
1081 MTL_Q_RQDR, XGMAC_MTL_IOREAD(pdata, i, MTL_Q_RQDR)); in xgbe_dump_mtl_registers()
1083 MTL_Q_RQCR, XGMAC_MTL_IOREAD(pdata, i, MTL_Q_RQCR)); in xgbe_dump_mtl_registers()
1085 MTL_Q_RQFCR, XGMAC_MTL_IOREAD(pdata, i, MTL_Q_RQFCR)); in xgbe_dump_mtl_registers()
1087 MTL_Q_IER, XGMAC_MTL_IOREAD(pdata, i, MTL_Q_IER)); in xgbe_dump_mtl_registers()
1089 MTL_Q_ISR, XGMAC_MTL_IOREAD(pdata, i, MTL_Q_ISR)); in xgbe_dump_mtl_registers()
1094 xgbe_dump_mac_registers(struct xgbe_prv_data *pdata) in xgbe_dump_mac_registers() argument
1099 XGMAC_IOREAD(pdata, MAC_TCR)); in xgbe_dump_mac_registers()
1101 XGMAC_IOREAD(pdata, MAC_RCR)); in xgbe_dump_mac_registers()
1103 XGMAC_IOREAD(pdata, MAC_PFR)); in xgbe_dump_mac_registers()
1105 XGMAC_IOREAD(pdata, MAC_WTR)); in xgbe_dump_mac_registers()
1107 XGMAC_IOREAD(pdata, MAC_HTR0)); in xgbe_dump_mac_registers()
1109 XGMAC_IOREAD(pdata, MAC_HTR1)); in xgbe_dump_mac_registers()
1111 XGMAC_IOREAD(pdata, MAC_HTR2)); in xgbe_dump_mac_registers()
1113 XGMAC_IOREAD(pdata, MAC_HTR3)); in xgbe_dump_mac_registers()
1115 XGMAC_IOREAD(pdata, MAC_HTR4)); in xgbe_dump_mac_registers()
1117 XGMAC_IOREAD(pdata, MAC_HTR5)); in xgbe_dump_mac_registers()
1119 XGMAC_IOREAD(pdata, MAC_HTR6)); in xgbe_dump_mac_registers()
1121 XGMAC_IOREAD(pdata, MAC_HTR7)); in xgbe_dump_mac_registers()
1123 XGMAC_IOREAD(pdata, MAC_VLANTR)); in xgbe_dump_mac_registers()
1125 XGMAC_IOREAD(pdata, MAC_VLANHTR)); in xgbe_dump_mac_registers()
1127 XGMAC_IOREAD(pdata, MAC_VLANIR)); in xgbe_dump_mac_registers()
1129 XGMAC_IOREAD(pdata, MAC_IVLANIR)); in xgbe_dump_mac_registers()
1131 XGMAC_IOREAD(pdata, MAC_RETMR)); in xgbe_dump_mac_registers()
1133 XGMAC_IOREAD(pdata, MAC_Q0TFCR)); in xgbe_dump_mac_registers()
1135 XGMAC_IOREAD(pdata, MAC_Q1TFCR)); in xgbe_dump_mac_registers()
1137 XGMAC_IOREAD(pdata, MAC_Q2TFCR)); in xgbe_dump_mac_registers()
1139 XGMAC_IOREAD(pdata, MAC_Q3TFCR)); in xgbe_dump_mac_registers()
1141 XGMAC_IOREAD(pdata, MAC_Q4TFCR)); in xgbe_dump_mac_registers()
1143 XGMAC_IOREAD(pdata, MAC_Q5TFCR)); in xgbe_dump_mac_registers()
1145 XGMAC_IOREAD(pdata, MAC_Q6TFCR)); in xgbe_dump_mac_registers()
1147 XGMAC_IOREAD(pdata, MAC_Q7TFCR)); in xgbe_dump_mac_registers()
1149 XGMAC_IOREAD(pdata, MAC_RFCR)); in xgbe_dump_mac_registers()
1151 XGMAC_IOREAD(pdata, MAC_RQC0R)); in xgbe_dump_mac_registers()
1153 XGMAC_IOREAD(pdata, MAC_RQC1R)); in xgbe_dump_mac_registers()
1155 XGMAC_IOREAD(pdata, MAC_RQC2R)); in xgbe_dump_mac_registers()
1157 XGMAC_IOREAD(pdata, MAC_RQC3R)); in xgbe_dump_mac_registers()
1159 XGMAC_IOREAD(pdata, MAC_ISR)); in xgbe_dump_mac_registers()
1161 XGMAC_IOREAD(pdata, MAC_IER)); in xgbe_dump_mac_registers()
1163 XGMAC_IOREAD(pdata, MAC_RTSR)); in xgbe_dump_mac_registers()
1165 XGMAC_IOREAD(pdata, MAC_PMTCSR)); in xgbe_dump_mac_registers()
1167 XGMAC_IOREAD(pdata, MAC_RWKPFR)); in xgbe_dump_mac_registers()
1169 XGMAC_IOREAD(pdata, MAC_LPICSR)); in xgbe_dump_mac_registers()
1171 XGMAC_IOREAD(pdata, MAC_LPITCR)); in xgbe_dump_mac_registers()
1173 XGMAC_IOREAD(pdata, MAC_TIR)); in xgbe_dump_mac_registers()
1175 XGMAC_IOREAD(pdata, MAC_VR)); in xgbe_dump_mac_registers()
1177 XGMAC_IOREAD(pdata, MAC_DR)); in xgbe_dump_mac_registers()
1179 XGMAC_IOREAD(pdata, MAC_HWF0R)); in xgbe_dump_mac_registers()
1181 XGMAC_IOREAD(pdata, MAC_HWF1R)); in xgbe_dump_mac_registers()
1183 XGMAC_IOREAD(pdata, MAC_HWF2R)); in xgbe_dump_mac_registers()
1185 XGMAC_IOREAD(pdata, MAC_MDIOSCAR)); in xgbe_dump_mac_registers()
1187 XGMAC_IOREAD(pdata, MAC_MDIOSCCDR)); in xgbe_dump_mac_registers()
1189 XGMAC_IOREAD(pdata, MAC_MDIOISR)); in xgbe_dump_mac_registers()
1191 XGMAC_IOREAD(pdata, MAC_MDIOIER)); in xgbe_dump_mac_registers()
1193 XGMAC_IOREAD(pdata, MAC_MDIOCL22R)); in xgbe_dump_mac_registers()
1195 XGMAC_IOREAD(pdata, MAC_GPIOCR)); in xgbe_dump_mac_registers()
1197 XGMAC_IOREAD(pdata, MAC_GPIOSR)); in xgbe_dump_mac_registers()
1199 XGMAC_IOREAD(pdata, MAC_MACA0HR)); in xgbe_dump_mac_registers()
1201 XGMAC_IOREAD(pdata, MAC_MACA0LR)); in xgbe_dump_mac_registers()
1203 XGMAC_IOREAD(pdata, MAC_MACA1HR)); in xgbe_dump_mac_registers()
1205 XGMAC_IOREAD(pdata, MAC_MACA1LR)); in xgbe_dump_mac_registers()
1207 XGMAC_IOREAD(pdata, MAC_RSSCR)); in xgbe_dump_mac_registers()
1209 XGMAC_IOREAD(pdata, MAC_RSSDR)); in xgbe_dump_mac_registers()
1211 XGMAC_IOREAD(pdata, MAC_RSSAR)); in xgbe_dump_mac_registers()
1213 XGMAC_IOREAD(pdata, MAC_TSCR)); in xgbe_dump_mac_registers()
1215 XGMAC_IOREAD(pdata, MAC_SSIR)); in xgbe_dump_mac_registers()
1217 XGMAC_IOREAD(pdata, MAC_STSR)); in xgbe_dump_mac_registers()
1219 XGMAC_IOREAD(pdata, MAC_STNR)); in xgbe_dump_mac_registers()
1221 XGMAC_IOREAD(pdata, MAC_STSUR)); in xgbe_dump_mac_registers()
1223 XGMAC_IOREAD(pdata, MAC_STNUR)); in xgbe_dump_mac_registers()
1225 XGMAC_IOREAD(pdata, MAC_TSAR)); in xgbe_dump_mac_registers()
1227 XGMAC_IOREAD(pdata, MAC_TSSR)); in xgbe_dump_mac_registers()
1229 XGMAC_IOREAD(pdata, MAC_TXSNR)); in xgbe_dump_mac_registers()
1231 XGMAC_IOREAD(pdata, MAC_TXSSR)); in xgbe_dump_mac_registers()
1235 xgbe_dump_rmon_counters(struct xgbe_prv_data *pdata) in xgbe_dump_rmon_counters() argument
1237 struct xgbe_mmc_stats *stats = &pdata->mmc_stats; in xgbe_dump_rmon_counters()
1241 pdata->hw_if.read_mmc_stats(pdata); in xgbe_dump_rmon_counters()
1328 xgbe_dump_i2c_registers(struct xgbe_prv_data *pdata) in xgbe_dump_i2c_registers() argument
1332 XI2C_IOREAD(pdata, 0x00)); in xgbe_dump_i2c_registers()
1334 XI2C_IOREAD(pdata, 0x04)); in xgbe_dump_i2c_registers()
1336 XI2C_IOREAD(pdata, 0x0c)); in xgbe_dump_i2c_registers()
1338 XI2C_IOREAD(pdata, 0x2c)); in xgbe_dump_i2c_registers()
1340 XI2C_IOREAD(pdata, 0x30)); in xgbe_dump_i2c_registers()
1342 XI2C_IOREAD(pdata, 0x34)); in xgbe_dump_i2c_registers()
1344 XI2C_IOREAD(pdata, 0x38)); in xgbe_dump_i2c_registers()
1346 XI2C_IOREAD(pdata, 0x3c)); in xgbe_dump_i2c_registers()
1348 XI2C_IOREAD(pdata, 0x6c)); in xgbe_dump_i2c_registers()
1350 XI2C_IOREAD(pdata, 0x70)); in xgbe_dump_i2c_registers()
1352 XI2C_IOREAD(pdata, 0x74)); in xgbe_dump_i2c_registers()
1354 XI2C_IOREAD(pdata, 0x78)); in xgbe_dump_i2c_registers()
1356 XI2C_IOREAD(pdata, 0x9c)); in xgbe_dump_i2c_registers()
1358 XI2C_IOREAD(pdata, 0xf4)); in xgbe_dump_i2c_registers()
1362 xgbe_dump_active_vlans(struct xgbe_prv_data *pdata) in xgbe_dump_active_vlans() argument
1369 axgbe_printf(1, "vlans[%d]: 0x%08lx ", i, pdata->active_vlans[i]); in xgbe_dump_active_vlans()
1375 xgbe_default_config(struct xgbe_prv_data *pdata) in xgbe_default_config() argument
1377 pdata->blen = DMA_SBMR_BLEN_64; in xgbe_default_config()
1378 pdata->pbl = DMA_PBL_128; in xgbe_default_config()
1379 pdata->aal = 1; in xgbe_default_config()
1380 pdata->rd_osr_limit = 8; in xgbe_default_config()
1381 pdata->wr_osr_limit = 8; in xgbe_default_config()
1382 pdata->tx_sf_mode = MTL_TSF_ENABLE; in xgbe_default_config()
1383 pdata->tx_threshold = MTL_TX_THRESHOLD_64; in xgbe_default_config()
1384 pdata->tx_osp_mode = DMA_OSP_ENABLE; in xgbe_default_config()
1385 pdata->rx_sf_mode = MTL_RSF_ENABLE; in xgbe_default_config()
1386 pdata->rx_threshold = MTL_RX_THRESHOLD_64; in xgbe_default_config()
1387 pdata->pause_autoneg = 1; in xgbe_default_config()
1388 pdata->phy_speed = SPEED_UNKNOWN; in xgbe_default_config()
1389 pdata->power_down = 0; in xgbe_default_config()
1390 pdata->enable_rss = 1; in xgbe_default_config()
1397 struct xgbe_prv_data *pdata = &sc->pdata; in axgbe_if_attach_post() local
1398 if_t ifp = pdata->netdev; in axgbe_if_attach_post()
1399 struct xgbe_phy_if *phy_if = &pdata->phy_if; in axgbe_if_attach_post()
1400 struct xgbe_hw_if *hw_if = &pdata->hw_if; in axgbe_if_attach_post()
1405 pdata->sph_enable = axgbe_sph_enable; in axgbe_if_attach_post()
1408 pdata->tx_sec_period = ticks; in axgbe_if_attach_post()
1409 pdata->tx_ded_period = ticks; in axgbe_if_attach_post()
1410 pdata->rx_sec_period = ticks; in axgbe_if_attach_post()
1411 pdata->rx_ded_period = ticks; in axgbe_if_attach_post()
1412 pdata->desc_sec_period = ticks; in axgbe_if_attach_post()
1413 pdata->desc_ded_period = ticks; in axgbe_if_attach_post()
1416 ret = hw_if->exit(&sc->pdata); in axgbe_if_attach_post()
1420 axgbe_sysctl_init(pdata); in axgbe_if_attach_post()
1423 xgbe_default_config(pdata); in axgbe_if_attach_post()
1426 if (!pdata->tx_max_fifo_size) in axgbe_if_attach_post()
1427 pdata->tx_max_fifo_size = pdata->hw_feat.tx_fifo_size; in axgbe_if_attach_post()
1428 if (!pdata->rx_max_fifo_size) in axgbe_if_attach_post()
1429 pdata->rx_max_fifo_size = pdata->hw_feat.rx_fifo_size; in axgbe_if_attach_post()
1432 pdata->tx_max_fifo_size, pdata->rx_max_fifo_size); in axgbe_if_attach_post()
1436 pdata->tx_desc_count = XGBE_TX_DESC_CNT; in axgbe_if_attach_post()
1438 pdata->rx_desc_count = XGBE_RX_DESC_CNT; in axgbe_if_attach_post()
1441 if (pdata->channel_irq_count) { in axgbe_if_attach_post()
1442 pdata->tx_ring_count = min_t(unsigned int, pdata->tx_ring_count, in axgbe_if_attach_post()
1443 pdata->channel_irq_count); in axgbe_if_attach_post()
1444 pdata->rx_ring_count = min_t(unsigned int, pdata->rx_ring_count, in axgbe_if_attach_post()
1445 pdata->channel_irq_count); in axgbe_if_attach_post()
1448 pdata->tx_ring_count, pdata->tx_q_count, in axgbe_if_attach_post()
1449 pdata->rx_ring_count, pdata->rx_q_count); in axgbe_if_attach_post()
1453 pdata->channel_count = max_t(unsigned int, scctx->isc_ntxqsets, in axgbe_if_attach_post()
1455 DBGPR("Channel count set to: %u\n", pdata->channel_count); in axgbe_if_attach_post()
1457 axgbe_initialize_rss_mapping(pdata); in axgbe_if_attach_post()
1460 pdata->sysctl_an_cdr_workaround = pdata->vdata->an_cdr_workaround; in axgbe_if_attach_post()
1461 phy_if->phy_init(pdata); in axgbe_if_attach_post()
1464 xgbe_init_rx_coalesce(&sc->pdata); in axgbe_if_attach_post()
1465 xgbe_init_tx_coalesce(&sc->pdata); in axgbe_if_attach_post()
1482 pdata->phy_link = -1; in axgbe_if_attach_post()
1483 pdata->phy_speed = SPEED_UNKNOWN; in axgbe_if_attach_post()
1484 ret = phy_if->phy_reset(pdata); in axgbe_if_attach_post()
1489 ret = xgbe_calc_rx_buf_size(pdata->netdev, if_getmtu(pdata->netdev)); in axgbe_if_attach_post()
1490 pdata->rx_buf_size = ret; in axgbe_if_attach_post()
1498 set_bit(XGBE_DOWN, &pdata->dev_state); in axgbe_if_attach_post()
1504 axgbe_pci_init(pdata); in axgbe_if_attach_post()
1510 xgbe_free_intr(struct xgbe_prv_data *pdata, struct resource *res, void *tag, in xgbe_free_intr() argument
1514 bus_teardown_intr(pdata->dev, res, tag); in xgbe_free_intr()
1517 bus_release_resource(pdata->dev, SYS_RES_IRQ, rid, res); in xgbe_free_intr()
1524 struct xgbe_prv_data *pdata = &sc->pdata; in axgbe_interrupts_free() local
1533 iflib_irq_free(ctx, &pdata->dev_irq); in axgbe_interrupts_free()
1536 xgbe_free_intr(pdata, pdata->ecc_irq_res, pdata->ecc_irq_tag, in axgbe_interrupts_free()
1537 pdata->ecc_rid); in axgbe_interrupts_free()
1540 xgbe_free_intr(pdata, pdata->i2c_irq_res, pdata->i2c_irq_tag, in axgbe_interrupts_free()
1541 pdata->i2c_rid); in axgbe_interrupts_free()
1544 xgbe_free_intr(pdata, pdata->an_irq_res, pdata->an_irq_tag, in axgbe_interrupts_free()
1545 pdata->an_rid); in axgbe_interrupts_free()
1549 channel = pdata->channel[i]; in axgbe_interrupts_free()
1561 struct xgbe_prv_data *pdata = &sc->pdata; in axgbe_if_detach() local
1562 struct xgbe_phy_if *phy_if = &pdata->phy_if; in axgbe_if_detach()
1565 mac_res[0] = pdata->xgmac_res; in axgbe_if_detach()
1566 mac_res[1] = pdata->xpcs_res; in axgbe_if_detach()
1568 phy_if->phy_stop(pdata); in axgbe_if_detach()
1569 phy_if->phy_exit(pdata); in axgbe_if_detach()
1575 taskqueue_free(pdata->dev_workqueue); in axgbe_if_detach()
1581 free(pdata->active_vlans, M_AXGBE); in axgbe_if_detach()
1583 axgbe_sysctl_exit(pdata); in axgbe_if_detach()
1589 axgbe_pci_init(struct xgbe_prv_data *pdata) in axgbe_pci_init() argument
1591 struct xgbe_phy_if *phy_if = &pdata->phy_if; in axgbe_pci_init()
1592 struct xgbe_hw_if *hw_if = &pdata->hw_if; in axgbe_pci_init()
1595 if (!__predict_false((test_bit(XGBE_DOWN, &pdata->dev_state)))) { in axgbe_pci_init()
1600 hw_if->init(pdata); in axgbe_pci_init()
1602 ret = phy_if->phy_start(pdata); in axgbe_pci_init()
1605 ret = hw_if->exit(pdata); in axgbe_pci_init()
1611 hw_if->enable_tx(pdata); in axgbe_pci_init()
1612 hw_if->enable_rx(pdata); in axgbe_pci_init()
1614 xgbe_start_timers(pdata); in axgbe_pci_init()
1616 clear_bit(XGBE_DOWN, &pdata->dev_state); in axgbe_pci_init()
1618 xgbe_dump_phy_registers(pdata); in axgbe_pci_init()
1619 xgbe_dump_prop_registers(pdata); in axgbe_pci_init()
1620 xgbe_dump_dma_registers(pdata, -1); in axgbe_pci_init()
1621 xgbe_dump_mtl_registers(pdata); in axgbe_pci_init()
1622 xgbe_dump_mac_registers(pdata); in axgbe_pci_init()
1623 xgbe_dump_rmon_counters(pdata); in axgbe_pci_init()
1630 struct xgbe_prv_data *pdata = &sc->pdata; in axgbe_if_init() local
1632 axgbe_pci_init(pdata); in axgbe_if_init()
1639 struct xgbe_prv_data *pdata = &sc->pdata; in axgbe_pci_stop() local
1640 struct xgbe_hw_if *hw_if = &pdata->hw_if; in axgbe_pci_stop()
1643 if (__predict_false(test_bit(XGBE_DOWN, &pdata->dev_state))) { in axgbe_pci_stop()
1648 xgbe_stop_timers(pdata); in axgbe_pci_stop()
1649 taskqueue_drain_all(pdata->dev_workqueue); in axgbe_pci_stop()
1651 hw_if->disable_tx(pdata); in axgbe_pci_stop()
1652 hw_if->disable_rx(pdata); in axgbe_pci_stop()
1654 ret = hw_if->exit(pdata); in axgbe_pci_stop()
1658 set_bit(XGBE_DOWN, &pdata->dev_state); in axgbe_pci_stop()
1684 struct xgbe_prv_data *pdata = &sc->pdata; in axgbe_if_tx_queues_alloc() local
1699 channel = pdata->channel[i]; in axgbe_if_tx_queues_alloc()
1732 channel = pdata->channel[j]; in axgbe_if_tx_queues_alloc()
1753 struct xgbe_prv_data *pdata = &sc->pdata; in axgbe_if_rx_queues_alloc() local
1761 if (!pdata->sph_enable) { in axgbe_if_rx_queues_alloc()
1772 channel = pdata->channel[i]; in axgbe_if_rx_queues_alloc()
1805 channel = pdata->channel[j]; in axgbe_if_rx_queues_alloc()
1825 struct xgbe_prv_data *pdata = &sc->pdata; in axgbe_if_queues_free() local
1835 channel = pdata->channel[i]; in axgbe_if_queues_free()
1848 channel = pdata->channel[i]; in axgbe_if_queues_free()
1866 struct xgbe_prv_data *pdata = &sc->pdata; in axgbe_if_vlan_register() local
1867 struct xgbe_hw_if *hw_if = &pdata->hw_if; in axgbe_if_vlan_register()
1869 if (!bit_test(pdata->active_vlans, vtag)) { in axgbe_if_vlan_register()
1872 bit_set(pdata->active_vlans, vtag); in axgbe_if_vlan_register()
1873 hw_if->update_vlan_hash_table(pdata); in axgbe_if_vlan_register()
1874 pdata->num_active_vlans++; in axgbe_if_vlan_register()
1877 pdata->num_active_vlans); in axgbe_if_vlan_register()
1881 xgbe_dump_active_vlans(pdata); in axgbe_if_vlan_register()
1888 struct xgbe_prv_data *pdata = &sc->pdata; in axgbe_if_vlan_unregister() local
1889 struct xgbe_hw_if *hw_if = &pdata->hw_if; in axgbe_if_vlan_unregister()
1891 if (pdata->num_active_vlans == 0) { in axgbe_if_vlan_unregister()
1896 if (bit_test(pdata->active_vlans, vtag)){ in axgbe_if_vlan_unregister()
1899 bit_clear(pdata->active_vlans, vtag); in axgbe_if_vlan_unregister()
1900 hw_if->update_vlan_hash_table(pdata); in axgbe_if_vlan_unregister()
1901 pdata->num_active_vlans--; in axgbe_if_vlan_unregister()
1904 pdata->num_active_vlans); in axgbe_if_vlan_unregister()
1908 xgbe_dump_active_vlans(pdata); in axgbe_if_vlan_unregister()
1927 struct xgbe_prv_data *pdata = &sc->pdata; in axgbe_if_msix_intr_assign() local
1936 pdata->isr_as_tasklet = 1; in axgbe_if_msix_intr_assign()
1939 pdata->irq_count = 1; in axgbe_if_msix_intr_assign()
1940 pdata->channel_irq_count = 1; in axgbe_if_msix_intr_assign()
1951 error = iflib_irq_alloc_generic(ctx, &pdata->dev_irq, rid, in axgbe_if_msix_intr_assign()
1961 pdata->ecc_rid = rid; in axgbe_if_msix_intr_assign()
1962 pdata->ecc_irq_res = bus_alloc_resource_any(pdata->dev, SYS_RES_IRQ, in axgbe_if_msix_intr_assign()
1964 if (!pdata->ecc_irq_res) { in axgbe_if_msix_intr_assign()
1970 error = bus_setup_intr(pdata->dev, pdata->ecc_irq_res, INTR_MPSAFE | in axgbe_if_msix_intr_assign()
1971 INTR_TYPE_NET, NULL, axgbe_ecc_isr, sc, &pdata->ecc_irq_tag); in axgbe_if_msix_intr_assign()
1980 pdata->i2c_rid = rid; in axgbe_if_msix_intr_assign()
1981 pdata->i2c_irq_res = bus_alloc_resource_any(pdata->dev, SYS_RES_IRQ, in axgbe_if_msix_intr_assign()
1983 if (!pdata->i2c_irq_res) { in axgbe_if_msix_intr_assign()
1989 error = bus_setup_intr(pdata->dev, pdata->i2c_irq_res, INTR_MPSAFE | in axgbe_if_msix_intr_assign()
1990 INTR_TYPE_NET, NULL, axgbe_i2c_isr, sc, &pdata->i2c_irq_tag); in axgbe_if_msix_intr_assign()
1999 pdata->an_rid = rid; in axgbe_if_msix_intr_assign()
2000 pdata->an_irq_res = bus_alloc_resource_any(pdata->dev, SYS_RES_IRQ, in axgbe_if_msix_intr_assign()
2002 if (!pdata->an_irq_res) { in axgbe_if_msix_intr_assign()
2008 error = bus_setup_intr(pdata->dev, pdata->an_irq_res, INTR_MPSAFE | in axgbe_if_msix_intr_assign()
2009 INTR_TYPE_NET, NULL, axgbe_an_isr, sc, &pdata->an_irq_tag); in axgbe_if_msix_intr_assign()
2016 pdata->per_channel_irq = 1; in axgbe_if_msix_intr_assign()
2017 pdata->channel_irq_mode = XGBE_IRQ_MODE_LEVEL; in axgbe_if_msix_intr_assign()
2021 channel = pdata->channel[i]; in axgbe_if_msix_intr_assign()
2039 pdata->irq_count = msix; in axgbe_if_msix_intr_assign()
2040 pdata->channel_irq_count = scctx->isc_nrxqsets; in axgbe_if_msix_intr_assign()
2044 channel = pdata->channel[i]; in axgbe_if_msix_intr_assign()
2056 xgbe_enable_rx_tx_int(struct xgbe_prv_data *pdata, struct xgbe_channel *channel) in xgbe_enable_rx_tx_int() argument
2058 struct xgbe_hw_if *hw_if = &pdata->hw_if; in xgbe_enable_rx_tx_int()
2076 xgbe_disable_rx_tx_int(struct xgbe_prv_data *pdata, struct xgbe_channel *channel) in xgbe_disable_rx_tx_int() argument
2078 struct xgbe_hw_if *hw_if = &pdata->hw_if; in xgbe_disable_rx_tx_int()
2096 xgbe_disable_rx_tx_ints(struct xgbe_prv_data *pdata) in xgbe_disable_rx_tx_ints() argument
2100 for (i = 0; i < pdata->channel_count; i++) in xgbe_disable_rx_tx_ints()
2101 xgbe_disable_rx_tx_int(pdata, pdata->channel[i]); in xgbe_disable_rx_tx_ints()
2108 struct xgbe_prv_data *pdata = channel->pdata; in axgbe_msix_que() local
2116 XGMAC_IOREAD(pdata, DMA_ISR), in axgbe_msix_que()
2117 XGMAC_IOREAD(pdata, MAC_ISR)); in axgbe_msix_que()
2122 xgbe_disable_rx_tx_int(pdata, channel); in axgbe_msix_que()
2137 struct xgbe_prv_data *pdata = &sc->pdata; in axgbe_dev_isr() local
2139 struct xgbe_hw_if *hw_if = &pdata->hw_if; in axgbe_dev_isr()
2144 dma_isr = XGMAC_IOREAD(pdata, DMA_ISR); in axgbe_dev_isr()
2150 for (i = 0; i < pdata->channel_count; i++) { in axgbe_dev_isr()
2155 channel = pdata->channel[i]; in axgbe_dev_isr()
2167 if (!pdata->per_channel_irq && in axgbe_dev_isr()
2172 xgbe_disable_rx_tx_ints(pdata); in axgbe_dev_isr()
2185 pdata->ext_stats.rx_buffer_unavailable++; in axgbe_dev_isr()
2200 mac_isr = XGMAC_IOREAD(pdata, MAC_ISR); in axgbe_dev_isr()
2204 hw_if->tx_mmc_int(pdata); in axgbe_dev_isr()
2207 hw_if->rx_mmc_int(pdata); in axgbe_dev_isr()
2210 mac_mdioisr = XGMAC_IOREAD(pdata, MAC_MDIOISR); in axgbe_dev_isr()
2214 wakeup_one(pdata); in axgbe_dev_isr()
2227 sc->pdata.i2c_if.i2c_isr(&sc->pdata); in axgbe_i2c_isr()
2241 sc->pdata.phy_if.an_isr(&sc->pdata); in axgbe_an_isr()
2248 struct xgbe_prv_data *pdata = &sc->pdata; in axgbe_if_tx_queue_intr_enable() local
2251 if (qid < pdata->tx_q_count) { in axgbe_if_tx_queue_intr_enable()
2252 ret = xgbe_enable_rx_tx_int(pdata, pdata->channel[qid]); in axgbe_if_tx_queue_intr_enable()
2267 struct xgbe_prv_data *pdata = &sc->pdata; in axgbe_if_rx_queue_intr_enable() local
2270 if (qid < pdata->rx_q_count) { in axgbe_if_rx_queue_intr_enable()
2271 ret = xgbe_enable_rx_tx_int(pdata, pdata->channel[qid]); in axgbe_if_rx_queue_intr_enable()
2286 struct xgbe_prv_data *pdata = &sc->pdata; in axgbe_if_update_admin_status() local
2289 pdata->phy_link, sc->link_status, pdata->phy.speed); in axgbe_if_update_admin_status()
2291 if (pdata->phy_link < 0) in axgbe_if_update_admin_status()
2294 if (pdata->phy_link) { in axgbe_if_update_admin_status()
2297 if (pdata->phy.speed & SPEED_10000) in axgbe_if_update_admin_status()
2300 else if (pdata->phy.speed & SPEED_2500) in axgbe_if_update_admin_status()
2303 else if (pdata->phy.speed & SPEED_1000) in axgbe_if_update_admin_status()
2306 else if (pdata->phy.speed & SPEED_100) in axgbe_if_update_admin_status()
2309 else if (pdata->phy.speed & SPEED_10) in axgbe_if_update_admin_status()
2327 sx_xlock(&sc->pdata.an_mutex); in axgbe_if_media_change()
2333 sc->pdata.phy.speed = SPEED_10000; in axgbe_if_media_change()
2334 sc->pdata.phy.autoneg = AUTONEG_DISABLE; in axgbe_if_media_change()
2337 sc->pdata.phy.speed = SPEED_2500; in axgbe_if_media_change()
2338 sc->pdata.phy.autoneg = AUTONEG_DISABLE; in axgbe_if_media_change()
2341 sc->pdata.phy.speed = SPEED_1000; in axgbe_if_media_change()
2342 sc->pdata.phy.autoneg = AUTONEG_DISABLE; in axgbe_if_media_change()
2345 sc->pdata.phy.speed = SPEED_100; in axgbe_if_media_change()
2346 sc->pdata.phy.autoneg = AUTONEG_DISABLE; in axgbe_if_media_change()
2349 sc->pdata.phy.autoneg = AUTONEG_ENABLE; in axgbe_if_media_change()
2352 sx_xunlock(&sc->pdata.an_mutex); in axgbe_if_media_change()
2354 return (-sc->pdata.phy_if.phy_config_aneg(&sc->pdata)); in axgbe_if_media_change()
2361 struct xgbe_prv_data *pdata = &sc->pdata; in axgbe_if_promisc_set() local
2362 if_t ifp = pdata->netdev; in axgbe_if_promisc_set()
2365 __func__, XGMAC_IOREAD(pdata, MAC_PFR), if_getdrvflags(ifp), in axgbe_if_promisc_set()
2372 if (XGMAC_IOREAD_BITS(pdata, MAC_PFR, PR) == 1) { in axgbe_if_promisc_set()
2378 XGMAC_IOWRITE_BITS(pdata, MAC_PFR, PR, 1); in axgbe_if_promisc_set()
2380 XGMAC_IOWRITE_BITS(pdata, MAC_PFR, VTFE, 0); in axgbe_if_promisc_set()
2385 if (XGMAC_IOREAD_BITS(pdata, MAC_PFR, PR) == 0) { in axgbe_if_promisc_set()
2391 XGMAC_IOWRITE_BITS(pdata, MAC_PFR, PR, 0); in axgbe_if_promisc_set()
2393 XGMAC_IOWRITE_BITS(pdata, MAC_PFR, VTFE, 1); in axgbe_if_promisc_set()
2404 struct xgbe_prv_data *pdata = &sc->pdata; in axgbe_if_get_counter() local
2405 struct xgbe_mmc_stats *pstats = &pdata->mmc_stats; in axgbe_if_get_counter()
2407 pdata->hw_if.read_mmc_stats(pdata); in axgbe_if_get_counter()
2432 struct xgbe_prv_data *pdata = &sc->pdata; in axgbe_if_mtu_set() local
2438 ret = xgbe_calc_rx_buf_size(pdata->netdev, mtu); in axgbe_if_mtu_set()
2439 pdata->rx_buf_size = ret; in axgbe_if_mtu_set()
2450 struct xgbe_prv_data *pdata = &sc->pdata; in axgbe_if_media_status() local
2453 if (!sc->pdata.phy.link) in axgbe_if_media_status()
2459 axgbe_printf(1, "Speed 0x%x Mode %d\n", sc->pdata.phy.speed, in axgbe_if_media_status()
2460 pdata->phy_if.phy_impl.cur_mode(pdata)); in axgbe_if_media_status()
2461 pdata->phy_if.phy_impl.get_type(pdata, ifmr); in axgbe_if_media_status()