Lines Matching refs:adapter
275 static void em_update_stats_counters(struct adapter *);
276 static void em_add_hw_stats(struct adapter *adapter);
278 static void em_setup_vlan_hw_support(struct adapter *);
280 static void em_print_nvm_info(struct adapter *);
283 static void em_print_debug_info(struct adapter *);
286 static void em_add_int_delay_sysctl(struct adapter *, const char *,
289 static void em_init_manageability(struct adapter *);
290 static void em_release_manageability(struct adapter *);
291 static void em_get_hw_control(struct adapter *);
292 static void em_release_hw_control(struct adapter *);
295 static int em_enable_phy_wakeup(struct adapter *);
296 static void em_disable_aspm(struct adapter *);
314 static void lem_smartspeed(struct adapter *adapter);
315 static void igb_configure_queues(struct adapter *adapter);
347 "em", em_methods, sizeof(struct adapter),
360 "igb", igb_methods, sizeof(struct adapter),
406 "em_if", em_if_methods, sizeof(struct adapter)
443 "igb_if", igb_if_methods, sizeof(struct adapter)
587 struct adapter *adapter = (struct adapter *)arg1; in em_get_regs() local
588 struct e1000_hw *hw = &adapter->hw; in em_get_regs()
668 if_softc_ctx_t scctx = adapter->shared; in em_get_regs()
712 struct adapter *adapter = iflib_get_softc(ctx); in em_set_num_queues() local
716 switch (adapter->hw.mac.type) { in em_set_num_queues()
766 struct adapter *adapter; in em_if_attach_pre() local
774 adapter = iflib_get_softc(ctx); in em_if_attach_pre()
776 adapter->ctx = adapter->osdep.ctx = ctx; in em_if_attach_pre()
777 adapter->dev = adapter->osdep.dev = dev; in em_if_attach_pre()
778 scctx = adapter->shared = iflib_get_softc_ctx(ctx); in em_if_attach_pre()
779 adapter->media = iflib_get_media(ctx); in em_if_attach_pre()
780 hw = &adapter->hw; in em_if_attach_pre()
782 adapter->tx_process_limit = scctx->isc_ntxd[0]; in em_if_attach_pre()
787 OID_AUTO, "nvm", CTLTYPE_INT|CTLFLAG_RW, adapter, 0, in em_if_attach_pre()
792 OID_AUTO, "debug", CTLTYPE_INT|CTLFLAG_RW, adapter, 0, in em_if_attach_pre()
797 OID_AUTO, "fc", CTLTYPE_INT|CTLFLAG_RW, adapter, 0, in em_if_attach_pre()
802 OID_AUTO, "reg_dump", CTLTYPE_STRING | CTLFLAG_RD, adapter, 0, in em_if_attach_pre()
807 OID_AUTO, "rs_dump", CTLTYPE_INT | CTLFLAG_RW, adapter, 0, in em_if_attach_pre()
819 if (adapter->hw.mac.type >= igb_mac_min) { in em_if_attach_pre()
831 if (adapter->hw.mac.type != e1000_82575) in em_if_attach_pre()
841 } else if (adapter->hw.mac.type >= em_mac_min) { in em_if_attach_pre()
873 if (adapter->hw.mac.type == e1000_82574) { in em_if_attach_pre()
887 if (adapter->hw.mac.type < e1000_82543) in em_if_attach_pre()
913 adapter->flash = bus_alloc_resource_any(dev, in em_if_attach_pre()
915 if (adapter->flash == NULL) { in em_if_attach_pre()
921 hw->flash_address = (u8 *)adapter->flash; in em_if_attach_pre()
922 adapter->osdep.flash_bus_space_tag = in em_if_attach_pre()
923 rman_get_bustag(adapter->flash); in em_if_attach_pre()
924 adapter->osdep.flash_bus_space_handle = in em_if_attach_pre()
925 rman_get_bushandle(adapter->flash); in em_if_attach_pre()
934 adapter->osdep.flash_bus_space_tag = in em_if_attach_pre()
935 adapter->osdep.mem_bus_space_tag; in em_if_attach_pre()
936 adapter->osdep.flash_bus_space_handle = in em_if_attach_pre()
937 adapter->osdep.mem_bus_space_handle in em_if_attach_pre()
954 em_add_int_delay_sysctl(adapter, "rx_int_delay", in em_if_attach_pre()
955 "receive interrupt delay in usecs", &adapter->rx_int_delay, in em_if_attach_pre()
957 em_add_int_delay_sysctl(adapter, "tx_int_delay", in em_if_attach_pre()
958 "transmit interrupt delay in usecs", &adapter->tx_int_delay, in em_if_attach_pre()
960 em_add_int_delay_sysctl(adapter, "rx_abs_int_delay", in em_if_attach_pre()
962 &adapter->rx_abs_int_delay, in em_if_attach_pre()
965 em_add_int_delay_sysctl(adapter, "tx_abs_int_delay", in em_if_attach_pre()
967 &adapter->tx_abs_int_delay, in em_if_attach_pre()
970 em_add_int_delay_sysctl(adapter, "itr", in em_if_attach_pre()
972 &adapter->tx_itr, in em_if_attach_pre()
980 if (adapter->hw.mac.type < em_mac_min) { in em_if_attach_pre()
981 e1000_init_script_state_82541(&adapter->hw, TRUE); in em_if_attach_pre()
982 e1000_set_tbi_compatibility_82543(&adapter->hw, TRUE); in em_if_attach_pre()
995 scctx->isc_max_frame_size = adapter->hw.mac.max_frame_size = in em_if_attach_pre()
1005 adapter->mta = malloc(sizeof(u8) * ETH_ADDR_LEN * in em_if_attach_pre()
1007 if (adapter->mta == NULL) { in em_if_attach_pre()
1023 adapter, 0, em_sysctl_eee, "I", in em_if_attach_pre()
1072 if (adapter->wol != 0) in em_if_attach_pre()
1080 em_release_hw_control(adapter); in em_if_attach_pre()
1083 free(adapter->mta, M_DEVBUF); in em_if_attach_pre()
1091 struct adapter *adapter = iflib_get_softc(ctx); in em_if_attach_post() local
1092 struct e1000_hw *hw = &adapter->hw; in em_if_attach_post()
1104 em_update_stats_counters(adapter); in em_if_attach_post()
1107 em_add_hw_stats(adapter); in em_if_attach_post()
1110 if (adapter->has_manage && !adapter->has_amt) in em_if_attach_post()
1111 em_get_hw_control(adapter); in em_if_attach_post()
1118 em_release_hw_control(adapter); in em_if_attach_post()
1121 free(adapter->mta, M_DEVBUF); in em_if_attach_post()
1138 struct adapter *adapter = iflib_get_softc(ctx); in em_if_detach() local
1142 e1000_phy_hw_reset(&adapter->hw); in em_if_detach()
1144 em_release_manageability(adapter); in em_if_detach()
1145 em_release_hw_control(adapter); in em_if_detach()
1169 struct adapter *adapter = iflib_get_softc(ctx); in em_if_suspend() local
1171 em_release_manageability(adapter); in em_if_suspend()
1172 em_release_hw_control(adapter); in em_if_suspend()
1180 struct adapter *adapter = iflib_get_softc(ctx); in em_if_resume() local
1182 if (adapter->hw.mac.type == e1000_pch2lan) in em_if_resume()
1183 e1000_resume_workarounds_pchlan(&adapter->hw); in em_if_resume()
1185 em_init_manageability(adapter); in em_if_resume()
1194 struct adapter *adapter = iflib_get_softc(ctx); in em_if_mtu_set() local
1199 switch (adapter->hw.mac.type) { in em_if_mtu_set()
1223 if (adapter->hw.mac.type >= igb_mac_min) in em_if_mtu_set()
1232 scctx->isc_max_frame_size = adapter->hw.mac.max_frame_size = in em_if_mtu_set()
1249 struct adapter *adapter = iflib_get_softc(ctx); in em_if_init() local
1250 if_softc_ctx_t scctx = adapter->shared; in em_if_init()
1258 bcopy(if_getlladdr(ifp), adapter->hw.mac.addr, in em_if_init()
1262 e1000_rar_set(&adapter->hw, adapter->hw.mac.addr, 0); in em_if_init()
1270 if (adapter->hw.mac.type == e1000_82571) { in em_if_init()
1271 e1000_set_laa_state_82571(&adapter->hw, TRUE); in em_if_init()
1272 e1000_rar_set(&adapter->hw, adapter->hw.mac.addr, in em_if_init()
1281 for (i = 0, tx_que = adapter->tx_queues; i < adapter->tx_num_queues; i++, tx_que++) { in em_if_init()
1295 E1000_WRITE_REG(&adapter->hw, E1000_VET, ETHERTYPE_VLAN); in em_if_init()
1298 if (adapter->hw.mac.type >= igb_mac_min) in em_if_init()
1299 e1000_rx_fifo_flush_82575(&adapter->hw); in em_if_init()
1302 em_init_manageability(adapter); in em_if_init()
1310 adapter->rx_mbuf_sz = iflib_get_rx_mbuf_sz(ctx); in em_if_init()
1317 em_setup_vlan_hw_support(adapter); in em_if_init()
1320 ctrl = E1000_READ_REG(&adapter->hw, E1000_CTRL); in em_if_init()
1322 E1000_WRITE_REG(&adapter->hw, E1000_CTRL, ctrl); in em_if_init()
1328 e1000_clear_hw_cntrs_base_generic(&adapter->hw); in em_if_init()
1331 if (adapter->hw.mac.type == e1000_82574) { in em_if_init()
1332 int tmp = E1000_READ_REG(&adapter->hw, E1000_CTRL_EXT); in em_if_init()
1335 E1000_WRITE_REG(&adapter->hw, E1000_CTRL_EXT, tmp); in em_if_init()
1337 E1000_WRITE_REG(&adapter->hw, E1000_IVAR, adapter->ivars); in em_if_init()
1338 } else if (adapter->intr_type == IFLIB_INTR_MSIX) /* Set up queue routing */ in em_if_init()
1339 igb_configure_queues(adapter); in em_if_init()
1342 E1000_READ_REG(&adapter->hw, E1000_ICR); in em_if_init()
1343 E1000_WRITE_REG(&adapter->hw, E1000_ICS, E1000_ICS_LSC); in em_if_init()
1346 if (adapter->has_manage && adapter->has_amt) in em_if_init()
1347 em_get_hw_control(adapter); in em_if_init()
1350 if (adapter->hw.mac.type >= igb_mac_min && in em_if_init()
1351 adapter->hw.phy.media_type == e1000_media_type_copper) { in em_if_init()
1352 if (adapter->hw.mac.type == e1000_i354) in em_if_init()
1353 e1000_set_eee_i354(&adapter->hw, TRUE, TRUE); in em_if_init()
1355 e1000_set_eee_i350(&adapter->hw, TRUE, TRUE); in em_if_init()
1367 struct adapter *adapter = arg; in em_intr() local
1368 if_ctx_t ctx = adapter->ctx; in em_intr()
1371 reg_icr = E1000_READ_REG(&adapter->hw, E1000_ICR); in em_intr()
1385 if (adapter->hw.mac.type >= e1000_82571 && in em_intr()
1402 adapter->rx_overruns++; in em_intr()
1410 struct adapter *adapter = iflib_get_softc(ctx); in em_if_rx_queue_intr_enable() local
1411 struct em_rx_queue *rxq = &adapter->rx_queues[rxqid]; in em_if_rx_queue_intr_enable()
1413 E1000_WRITE_REG(&adapter->hw, E1000_IMS, rxq->eims); in em_if_rx_queue_intr_enable()
1420 struct adapter *adapter = iflib_get_softc(ctx); in em_if_tx_queue_intr_enable() local
1421 struct em_tx_queue *txq = &adapter->tx_queues[txqid]; in em_if_tx_queue_intr_enable()
1423 E1000_WRITE_REG(&adapter->hw, E1000_IMS, txq->eims); in em_if_tx_queue_intr_enable()
1430 struct adapter *adapter = iflib_get_softc(ctx); in igb_if_rx_queue_intr_enable() local
1431 struct em_rx_queue *rxq = &adapter->rx_queues[rxqid]; in igb_if_rx_queue_intr_enable()
1433 E1000_WRITE_REG(&adapter->hw, E1000_EIMS, rxq->eims); in igb_if_rx_queue_intr_enable()
1440 struct adapter *adapter = iflib_get_softc(ctx); in igb_if_tx_queue_intr_enable() local
1441 struct em_tx_queue *txq = &adapter->tx_queues[txqid]; in igb_if_tx_queue_intr_enable()
1443 E1000_WRITE_REG(&adapter->hw, E1000_EIMS, txq->eims); in igb_if_tx_queue_intr_enable()
1470 struct adapter *adapter = arg; in em_msix_link() local
1473 ++adapter->link_irq; in em_msix_link()
1474 MPASS(adapter->hw.back != NULL); in em_msix_link()
1475 reg_icr = E1000_READ_REG(&adapter->hw, E1000_ICR); in em_msix_link()
1478 adapter->rx_overruns++; in em_msix_link()
1481 em_handle_link(adapter->ctx); in em_msix_link()
1482 } else if (adapter->hw.mac.type == e1000_82574) { in em_msix_link()
1484 E1000_WRITE_REG(&adapter->hw, E1000_IMS, EM_MSIX_LINK | in em_msix_link()
1488 if (adapter->hw.mac.type == e1000_82574) { in em_msix_link()
1495 E1000_WRITE_REG(&adapter->hw, E1000_ICS, adapter->ims); in em_msix_link()
1498 E1000_WRITE_REG(&adapter->hw, E1000_IMS, E1000_IMS_LSC); in em_msix_link()
1499 E1000_WRITE_REG(&adapter->hw, E1000_EIMS, adapter->link_mask); in em_msix_link()
1509 struct adapter *adapter = iflib_get_softc(ctx); in em_handle_link() local
1511 adapter->hw.mac.get_link_status = 1; in em_handle_link()
1526 struct adapter *adapter = iflib_get_softc(ctx); in em_if_media_status() local
1536 if (!adapter->link_active) { in em_if_media_status()
1542 if ((adapter->hw.phy.media_type == e1000_media_type_fiber) || in em_if_media_status()
1543 (adapter->hw.phy.media_type == e1000_media_type_internal_serdes)) { in em_if_media_status()
1544 if (adapter->hw.mac.type == e1000_82545) in em_if_media_status()
1548 switch (adapter->link_speed) { in em_if_media_status()
1559 if (adapter->link_duplex == FULL_DUPLEX) in em_if_media_status()
1577 struct adapter *adapter = iflib_get_softc(ctx); in em_if_media_change() local
1587 adapter->hw.mac.autoneg = DO_AUTO_NEG; in em_if_media_change()
1588 adapter->hw.phy.autoneg_advertised = AUTONEG_ADV_DEFAULT; in em_if_media_change()
1593 adapter->hw.mac.autoneg = DO_AUTO_NEG; in em_if_media_change()
1594 adapter->hw.phy.autoneg_advertised = ADVERTISE_1000_FULL; in em_if_media_change()
1597 adapter->hw.mac.autoneg = FALSE; in em_if_media_change()
1598 adapter->hw.phy.autoneg_advertised = 0; in em_if_media_change()
1600 adapter->hw.mac.forced_speed_duplex = ADVERTISE_100_FULL; in em_if_media_change()
1602 adapter->hw.mac.forced_speed_duplex = ADVERTISE_100_HALF; in em_if_media_change()
1605 adapter->hw.mac.autoneg = FALSE; in em_if_media_change()
1606 adapter->hw.phy.autoneg_advertised = 0; in em_if_media_change()
1608 adapter->hw.mac.forced_speed_duplex = ADVERTISE_10_FULL; in em_if_media_change()
1610 adapter->hw.mac.forced_speed_duplex = ADVERTISE_10_HALF; in em_if_media_change()
1613 device_printf(adapter->dev, "Unsupported media type\n"); in em_if_media_change()
1624 struct adapter *adapter = iflib_get_softc(ctx); in em_if_set_promisc() local
1629 reg_rctl = E1000_READ_REG(&adapter->hw, E1000_RCTL); in em_if_set_promisc()
1636 E1000_WRITE_REG(&adapter->hw, E1000_RCTL, reg_rctl); in em_if_set_promisc()
1640 E1000_WRITE_REG(&adapter->hw, E1000_RCTL, reg_rctl); in em_if_set_promisc()
1648 struct adapter *adapter = iflib_get_softc(ctx); in em_disable_promisc() local
1653 reg_rctl = E1000_READ_REG(&adapter->hw, E1000_RCTL); in em_disable_promisc()
1663 E1000_WRITE_REG(&adapter->hw, E1000_RCTL, reg_rctl); in em_disable_promisc()
1677 struct adapter *adapter = iflib_get_softc(ctx); in em_if_multi_set() local
1685 mta = adapter->mta; in em_if_multi_set()
1688 if (adapter->hw.mac.type == e1000_82542 && in em_if_multi_set()
1689 adapter->hw.revision_id == E1000_REVISION_2) { in em_if_multi_set()
1690 reg_rctl = E1000_READ_REG(&adapter->hw, E1000_RCTL); in em_if_multi_set()
1691 if (adapter->hw.bus.pci_cmd_word & CMD_MEM_WRT_INVALIDATE) in em_if_multi_set()
1692 e1000_pci_clear_mwi(&adapter->hw); in em_if_multi_set()
1694 E1000_WRITE_REG(&adapter->hw, E1000_RCTL, reg_rctl); in em_if_multi_set()
1701 reg_rctl = E1000_READ_REG(&adapter->hw, E1000_RCTL); in em_if_multi_set()
1703 E1000_WRITE_REG(&adapter->hw, E1000_RCTL, reg_rctl); in em_if_multi_set()
1705 e1000_update_mc_addr_list(&adapter->hw, mta, mcnt); in em_if_multi_set()
1707 if (adapter->hw.mac.type == e1000_82542 && in em_if_multi_set()
1708 adapter->hw.revision_id == E1000_REVISION_2) { in em_if_multi_set()
1709 reg_rctl = E1000_READ_REG(&adapter->hw, E1000_RCTL); in em_if_multi_set()
1711 E1000_WRITE_REG(&adapter->hw, E1000_RCTL, reg_rctl); in em_if_multi_set()
1713 if (adapter->hw.bus.pci_cmd_word & CMD_MEM_WRT_INVALIDATE) in em_if_multi_set()
1714 e1000_pci_set_mwi(&adapter->hw); in em_if_multi_set()
1739 struct adapter *adapter = iflib_get_softc(ctx); in em_if_update_admin_status() local
1740 struct e1000_hw *hw = &adapter->hw; in em_if_update_admin_status()
1767 link_check = adapter->hw.mac.serdes_has_link; in em_if_update_admin_status()
1785 if (link_check && (adapter->link_active == 0)) { in em_if_update_admin_status()
1786 e1000_get_speed_and_duplex(hw, &adapter->link_speed, in em_if_update_admin_status()
1787 &adapter->link_duplex); in em_if_update_admin_status()
1789 if ((adapter->link_speed != SPEED_1000) && in em_if_update_admin_status()
1799 adapter->link_speed, in em_if_update_admin_status()
1800 ((adapter->link_duplex == FULL_DUPLEX) ? in em_if_update_admin_status()
1802 adapter->link_active = 1; in em_if_update_admin_status()
1803 adapter->smartspeed = 0; in em_if_update_admin_status()
1815 (adapter->hw.mac.type >= igb_mac_min)) { in em_if_update_admin_status()
1817 adapter->flags |= IGB_MEDIA_RESET; in em_if_update_admin_status()
1821 IF_Mbps(adapter->link_speed)); in em_if_update_admin_status()
1822 } else if (!link_check && (adapter->link_active == 1)) { in em_if_update_admin_status()
1823 adapter->link_speed = 0; in em_if_update_admin_status()
1824 adapter->link_duplex = 0; in em_if_update_admin_status()
1825 adapter->link_active = 0; in em_if_update_admin_status()
1828 em_update_stats_counters(adapter); in em_if_update_admin_status()
1835 lem_smartspeed(adapter); in em_if_update_admin_status()
1837 adapter->intr_type == IFLIB_INTR_MSIX) in em_if_update_admin_status()
1838 E1000_WRITE_REG(&adapter->hw, E1000_IMS, EM_MSIX_LINK | in em_if_update_admin_status()
1845 struct adapter *adapter = iflib_get_softc(ctx); in em_if_watchdog_reset() local
1851 adapter->watchdog_events++; in em_if_watchdog_reset()
1863 struct adapter *adapter = iflib_get_softc(ctx); in em_if_stop() local
1867 e1000_reset_hw(&adapter->hw); in em_if_stop()
1868 if (adapter->hw.mac.type >= e1000_82544) in em_if_stop()
1869 E1000_WRITE_REG(&adapter->hw, E1000_WUFC, 0); in em_if_stop()
1871 e1000_led_off(&adapter->hw); in em_if_stop()
1872 e1000_cleanup_led(&adapter->hw); in em_if_stop()
1884 struct adapter *adapter = iflib_get_softc(ctx); in em_identify_hardware() local
1887 adapter->hw.bus.pci_cmd_word = pci_read_config(dev, PCIR_COMMAND, 2); in em_identify_hardware()
1890 adapter->hw.vendor_id = pci_get_vendor(dev); in em_identify_hardware()
1891 adapter->hw.device_id = pci_get_device(dev); in em_identify_hardware()
1892 adapter->hw.revision_id = pci_read_config(dev, PCIR_REVID, 1); in em_identify_hardware()
1893 adapter->hw.subsystem_vendor_id = in em_identify_hardware()
1895 adapter->hw.subsystem_device_id = in em_identify_hardware()
1899 if (e1000_set_mac_type(&adapter->hw)) { in em_identify_hardware()
1908 struct adapter *adapter = iflib_get_softc(ctx); in em_allocate_pci_resources() local
1913 adapter->memory = bus_alloc_resource_any(dev, SYS_RES_MEMORY, in em_allocate_pci_resources()
1915 if (adapter->memory == NULL) { in em_allocate_pci_resources()
1919 adapter->osdep.mem_bus_space_tag = rman_get_bustag(adapter->memory); in em_allocate_pci_resources()
1920 adapter->osdep.mem_bus_space_handle = in em_allocate_pci_resources()
1921 rman_get_bushandle(adapter->memory); in em_allocate_pci_resources()
1922 adapter->hw.hw_addr = (u8 *)&adapter->osdep.mem_bus_space_handle; in em_allocate_pci_resources()
1925 if (adapter->hw.mac.type < em_mac_min && in em_allocate_pci_resources()
1926 adapter->hw.mac.type > e1000_82543) { in em_allocate_pci_resources()
1942 adapter->ioport = bus_alloc_resource_any(dev, SYS_RES_IOPORT, in em_allocate_pci_resources()
1944 if (adapter->ioport == NULL) { in em_allocate_pci_resources()
1949 adapter->hw.io_base = 0; in em_allocate_pci_resources()
1950 adapter->osdep.io_bus_space_tag = in em_allocate_pci_resources()
1951 rman_get_bustag(adapter->ioport); in em_allocate_pci_resources()
1952 adapter->osdep.io_bus_space_handle = in em_allocate_pci_resources()
1953 rman_get_bushandle(adapter->ioport); in em_allocate_pci_resources()
1956 adapter->hw.back = &adapter->osdep; in em_allocate_pci_resources()
1969 struct adapter *adapter = iflib_get_softc(ctx); in em_if_msix_intr_assign() local
1970 struct em_rx_queue *rx_que = adapter->rx_queues; in em_if_msix_intr_assign()
1971 struct em_tx_queue *tx_que = adapter->tx_queues; in em_if_msix_intr_assign()
1976 for (i = 0; i < adapter->rx_num_queues; i++, rx_que++, vector++) { in em_if_msix_intr_assign()
1982 adapter->rx_num_queues = i + 1; in em_if_msix_intr_assign()
1994 if (adapter->hw.mac.type == e1000_82574) { in em_if_msix_intr_assign()
1996 adapter->ims |= rx_que->eims; in em_if_msix_intr_assign()
1997 adapter->ivars |= (8 | rx_que->msix) << (i * 4); in em_if_msix_intr_assign()
1998 } else if (adapter->hw.mac.type == e1000_82575) in em_if_msix_intr_assign()
2006 for (i = 0; i < adapter->tx_num_queues; i++, tx_que++, vector++) { in em_if_msix_intr_assign()
2008 tx_que = &adapter->tx_queues[i]; in em_if_msix_intr_assign()
2010 &adapter->rx_queues[i % adapter->rx_num_queues].que_irq, in em_if_msix_intr_assign()
2013 tx_que->msix = (vector % adapter->rx_num_queues); in em_if_msix_intr_assign()
2021 if (adapter->hw.mac.type == e1000_82574) { in em_if_msix_intr_assign()
2023 adapter->ims |= tx_que->eims; in em_if_msix_intr_assign()
2024 adapter->ivars |= (8 | tx_que->msix) << (8 + (i * 4)); in em_if_msix_intr_assign()
2025 } else if (adapter->hw.mac.type == e1000_82575) { in em_if_msix_intr_assign()
2034 …error = iflib_irq_alloc_generic(ctx, &adapter->irq, rid, IFLIB_INTR_ADMIN, em_msix_link, adapter, … in em_if_msix_intr_assign()
2040 adapter->linkvec = rx_vectors; in em_if_msix_intr_assign()
2041 if (adapter->hw.mac.type < igb_mac_min) { in em_if_msix_intr_assign()
2042 adapter->ivars |= (8 | rx_vectors) << 16; in em_if_msix_intr_assign()
2043 adapter->ivars |= 0x80000000; in em_if_msix_intr_assign()
2047 iflib_irq_free(ctx, &adapter->irq); in em_if_msix_intr_assign()
2048 rx_que = adapter->rx_queues; in em_if_msix_intr_assign()
2049 for (int i = 0; i < adapter->rx_num_queues; i++, rx_que++) in em_if_msix_intr_assign()
2055 igb_configure_queues(struct adapter *adapter) in igb_configure_queues() argument
2057 struct e1000_hw *hw = &adapter->hw; in igb_configure_queues()
2063 if (adapter->hw.mac.type != e1000_82575) in igb_configure_queues()
2069 switch (adapter->hw.mac.type) { in igb_configure_queues()
2078 for (int i = 0; i < adapter->rx_num_queues; i++) { in igb_configure_queues()
2081 rx_que = &adapter->rx_queues[i]; in igb_configure_queues()
2092 for (int i = 0; i < adapter->tx_num_queues; i++) { in igb_configure_queues()
2095 tx_que = &adapter->tx_queues[i]; in igb_configure_queues()
2104 adapter->que_mask |= tx_que->eims; in igb_configure_queues()
2108 ivar = (adapter->linkvec | E1000_IVAR_VALID) << 8; in igb_configure_queues()
2109 adapter->link_mask = 1 << adapter->linkvec; in igb_configure_queues()
2114 for (int i = 0; i < adapter->rx_num_queues; i++) { in igb_configure_queues()
2117 rx_que = &adapter->rx_queues[i]; in igb_configure_queues()
2126 adapter->que_mask |= rx_que->eims; in igb_configure_queues()
2129 for (int i = 0; i < adapter->tx_num_queues; i++) { in igb_configure_queues()
2132 tx_que = &adapter->tx_queues[i]; in igb_configure_queues()
2141 adapter->que_mask |= tx_que->eims; in igb_configure_queues()
2145 ivar = (adapter->linkvec | E1000_IVAR_VALID) << 8; in igb_configure_queues()
2146 adapter->link_mask = 1 << adapter->linkvec; in igb_configure_queues()
2160 for (int i = 0; i < adapter->rx_num_queues; i++) { in igb_configure_queues()
2161 rx_que = &adapter->rx_queues[i]; in igb_configure_queues()
2167 adapter->que_mask |= rx_que->eims; in igb_configure_queues()
2171 E1000_WRITE_REG(hw, E1000_MSIXBM(adapter->linkvec), in igb_configure_queues()
2173 adapter->link_mask |= E1000_EIMS_OTHER; in igb_configure_queues()
2187 for (int i = 0; i < adapter->rx_num_queues; i++) { in igb_configure_queues()
2188 rx_que = &adapter->rx_queues[i]; in igb_configure_queues()
2198 struct adapter *adapter = iflib_get_softc(ctx); in em_free_pci_resources() local
2199 struct em_rx_queue *que = adapter->rx_queues; in em_free_pci_resources()
2203 if (adapter->intr_type == IFLIB_INTR_MSIX) in em_free_pci_resources()
2204 iflib_irq_free(ctx, &adapter->irq); in em_free_pci_resources()
2206 for (int i = 0; i < adapter->rx_num_queues; i++, que++) { in em_free_pci_resources()
2210 if (adapter->memory != NULL) { in em_free_pci_resources()
2212 rman_get_rid(adapter->memory), adapter->memory); in em_free_pci_resources()
2213 adapter->memory = NULL; in em_free_pci_resources()
2216 if (adapter->flash != NULL) { in em_free_pci_resources()
2218 rman_get_rid(adapter->flash), adapter->flash); in em_free_pci_resources()
2219 adapter->flash = NULL; in em_free_pci_resources()
2222 if (adapter->ioport != NULL) { in em_free_pci_resources()
2224 rman_get_rid(adapter->ioport), adapter->ioport); in em_free_pci_resources()
2225 adapter->ioport = NULL; in em_free_pci_resources()
2233 struct adapter *adapter = iflib_get_softc(ctx); in em_setup_msix() local
2235 if (adapter->hw.mac.type == e1000_82574) { in em_setup_msix()
2247 lem_smartspeed(struct adapter *adapter) in lem_smartspeed() argument
2251 if (adapter->link_active || (adapter->hw.phy.type != e1000_phy_igp) || in lem_smartspeed()
2252 adapter->hw.mac.autoneg == 0 || in lem_smartspeed()
2253 (adapter->hw.phy.autoneg_advertised & ADVERTISE_1000_FULL) == 0) in lem_smartspeed()
2256 if (adapter->smartspeed == 0) { in lem_smartspeed()
2259 e1000_read_phy_reg(&adapter->hw, PHY_1000T_STATUS, &phy_tmp); in lem_smartspeed()
2262 e1000_read_phy_reg(&adapter->hw, PHY_1000T_STATUS, &phy_tmp); in lem_smartspeed()
2264 e1000_read_phy_reg(&adapter->hw, in lem_smartspeed()
2268 e1000_write_phy_reg(&adapter->hw, in lem_smartspeed()
2270 adapter->smartspeed++; in lem_smartspeed()
2271 if(adapter->hw.mac.autoneg && in lem_smartspeed()
2272 !e1000_copper_link_autoneg(&adapter->hw) && in lem_smartspeed()
2273 !e1000_read_phy_reg(&adapter->hw, in lem_smartspeed()
2277 e1000_write_phy_reg(&adapter->hw, in lem_smartspeed()
2283 } else if(adapter->smartspeed == EM_SMARTSPEED_DOWNSHIFT) { in lem_smartspeed()
2285 e1000_read_phy_reg(&adapter->hw, PHY_1000T_CTRL, &phy_tmp); in lem_smartspeed()
2287 e1000_write_phy_reg(&adapter->hw, PHY_1000T_CTRL, phy_tmp); in lem_smartspeed()
2288 if(adapter->hw.mac.autoneg && in lem_smartspeed()
2289 !e1000_copper_link_autoneg(&adapter->hw) && in lem_smartspeed()
2290 !e1000_read_phy_reg(&adapter->hw, PHY_CONTROL, &phy_tmp)) { in lem_smartspeed()
2293 e1000_write_phy_reg(&adapter->hw, PHY_CONTROL, phy_tmp); in lem_smartspeed()
2297 if(adapter->smartspeed++ == EM_SMARTSPEED_MAX) in lem_smartspeed()
2298 adapter->smartspeed = 0; in lem_smartspeed()
2307 igb_init_dmac(struct adapter *adapter, u32 pba) in igb_init_dmac() argument
2309 device_t dev = adapter->dev; in igb_init_dmac()
2310 struct e1000_hw *hw = &adapter->hw; in igb_init_dmac()
2318 max_frame_size = adapter->shared->isc_max_frame_size; in igb_init_dmac()
2321 if (adapter->dmac == 0) { /* Disabling it */ in igb_init_dmac()
2361 reg |= ((adapter->dmac * 5) >> 6); in igb_init_dmac()
2363 reg |= (adapter->dmac >> 5); in igb_init_dmac()
2365 reg |= (adapter->dmac >> 5); in igb_init_dmac()
2420 struct adapter *adapter = iflib_get_softc(ctx); in em_reset() local
2422 struct e1000_hw *hw = &adapter->hw; in em_reset()
2428 em_get_hw_control(adapter); in em_reset()
2466 if (adapter->hw.mac.max_frame_size > 4096) in em_reset()
2498 if (adapter->hw.mac.max_frame_size > 8192) in em_reset()
2510 min_tx = (adapter->hw.mac.max_frame_size + in em_reset()
2514 min_rx = adapter->hw.mac.max_frame_size; in em_reset()
2531 E1000_WRITE_REG(&adapter->hw, E1000_PBA, pba); in em_reset()
2551 roundup2(adapter->hw.mac.max_frame_size, 1024); in em_reset()
2554 if (adapter->fc) /* locally set flow control value? */ in em_reset()
2555 hw->fc.requested_mode = adapter->fc; in em_reset()
2626 if (adapter->hw.mac.type >= igb_mac_min) { in em_reset()
2630 em_disable_aspm(adapter); in em_reset()
2632 if (adapter->flags & IGB_MEDIA_RESET) { in em_reset()
2635 adapter->flags &= ~IGB_MEDIA_RESET; in em_reset()
2642 if (adapter->hw.mac.type >= igb_mac_min) in em_reset()
2643 igb_init_dmac(adapter, pba); in em_reset()
2657 em_initialize_rss_mapping(struct adapter *adapter) in em_initialize_rss_mapping() argument
2661 struct e1000_hw *hw = &adapter->hw; in em_initialize_rss_mapping()
2682 q = (i % adapter->rx_num_queues) << 7; in em_initialize_rss_mapping()
2698 igb_initialize_rss_mapping(struct adapter *adapter) in igb_initialize_rss_mapping() argument
2700 struct e1000_hw *hw = &adapter->hw; in igb_initialize_rss_mapping()
2707 if (adapter->hw.mac.type == e1000_82575) in igb_initialize_rss_mapping()
2741 queue_id = queue_id % adapter->rx_num_queues; in igb_initialize_rss_mapping()
2743 queue_id = (i % adapter->rx_num_queues); in igb_initialize_rss_mapping()
2801 struct adapter *adapter = iflib_get_softc(ctx); in em_setup_interface() local
2802 if_softc_ctx_t scctx = adapter->shared; in em_setup_interface()
2807 if (adapter->tx_num_queues == 1) { in em_setup_interface()
2816 if ((adapter->hw.phy.media_type == e1000_media_type_fiber) || in em_setup_interface()
2817 (adapter->hw.phy.media_type == e1000_media_type_internal_serdes)) { in em_setup_interface()
2820 if (adapter->hw.mac.type == e1000_82545) in em_setup_interface()
2822 ifmedia_add(adapter->media, IFM_ETHER | fiber_type | IFM_FDX, 0, NULL); in em_setup_interface()
2823 ifmedia_add(adapter->media, IFM_ETHER | fiber_type, 0, NULL); in em_setup_interface()
2825 ifmedia_add(adapter->media, IFM_ETHER | IFM_10_T, 0, NULL); in em_setup_interface()
2826 ifmedia_add(adapter->media, IFM_ETHER | IFM_10_T | IFM_FDX, 0, NULL); in em_setup_interface()
2827 ifmedia_add(adapter->media, IFM_ETHER | IFM_100_TX, 0, NULL); in em_setup_interface()
2828 ifmedia_add(adapter->media, IFM_ETHER | IFM_100_TX | IFM_FDX, 0, NULL); in em_setup_interface()
2829 if (adapter->hw.phy.type != e1000_phy_ife) { in em_setup_interface()
2830 ifmedia_add(adapter->media, IFM_ETHER | IFM_1000_T | IFM_FDX, 0, NULL); in em_setup_interface()
2831 ifmedia_add(adapter->media, IFM_ETHER | IFM_1000_T, 0, NULL); in em_setup_interface()
2834 ifmedia_add(adapter->media, IFM_ETHER | IFM_AUTO, 0, NULL); in em_setup_interface()
2835 ifmedia_set(adapter->media, IFM_ETHER | IFM_AUTO); in em_setup_interface()
2842 struct adapter *adapter = iflib_get_softc(ctx); in em_if_tx_queues_alloc() local
2843 if_softc_ctx_t scctx = adapter->shared; in em_if_tx_queues_alloc()
2848 MPASS(adapter->tx_num_queues > 0); in em_if_tx_queues_alloc()
2849 MPASS(adapter->tx_num_queues == ntxqsets); in em_if_tx_queues_alloc()
2852 if (!(adapter->tx_queues = in em_if_tx_queues_alloc()
2854 adapter->tx_num_queues, M_DEVBUF, M_NOWAIT | M_ZERO))) { in em_if_tx_queues_alloc()
2859 for (i = 0, que = adapter->tx_queues; i < adapter->tx_num_queues; i++, que++) { in em_if_tx_queues_alloc()
2863 txr->adapter = que->adapter = adapter; in em_if_tx_queues_alloc()
2881 "allocated for %d tx_queues\n", adapter->tx_num_queues); in em_if_tx_queues_alloc()
2891 struct adapter *adapter = iflib_get_softc(ctx); in em_if_rx_queues_alloc() local
2896 MPASS(adapter->rx_num_queues > 0); in em_if_rx_queues_alloc()
2897 MPASS(adapter->rx_num_queues == nrxqsets); in em_if_rx_queues_alloc()
2900 if (!(adapter->rx_queues = in em_if_rx_queues_alloc()
2902 adapter->rx_num_queues, M_DEVBUF, M_NOWAIT | M_ZERO))) { in em_if_rx_queues_alloc()
2908 for (i = 0, que = adapter->rx_queues; i < nrxqsets; i++, que++) { in em_if_rx_queues_alloc()
2911 rxr->adapter = que->adapter = adapter; in em_if_rx_queues_alloc()
2922 "allocated for %d rx_queues\n", adapter->rx_num_queues); in em_if_rx_queues_alloc()
2933 struct adapter *adapter = iflib_get_softc(ctx); in em_if_queues_free() local
2934 struct em_tx_queue *tx_que = adapter->tx_queues; in em_if_queues_free()
2935 struct em_rx_queue *rx_que = adapter->rx_queues; in em_if_queues_free()
2938 for (int i = 0; i < adapter->tx_num_queues; i++, tx_que++) { in em_if_queues_free()
2946 free(adapter->tx_queues, M_DEVBUF); in em_if_queues_free()
2947 adapter->tx_queues = NULL; in em_if_queues_free()
2951 free(adapter->rx_queues, M_DEVBUF); in em_if_queues_free()
2952 adapter->rx_queues = NULL; in em_if_queues_free()
2955 em_release_hw_control(adapter); in em_if_queues_free()
2957 if (adapter->mta != NULL) { in em_if_queues_free()
2958 free(adapter->mta, M_DEVBUF); in em_if_queues_free()
2970 struct adapter *adapter = iflib_get_softc(ctx); in em_initialize_transmit_unit() local
2971 if_softc_ctx_t scctx = adapter->shared; in em_initialize_transmit_unit()
2974 struct e1000_hw *hw = &adapter->hw; in em_initialize_transmit_unit()
2979 for (int i = 0; i < adapter->tx_num_queues; i++, txr++) { in em_initialize_transmit_unit()
2983 que = &adapter->tx_queues[i]; in em_initialize_transmit_unit()
3004 E1000_READ_REG(&adapter->hw, E1000_TDBAL(i)), in em_initialize_transmit_unit()
3005 E1000_READ_REG(&adapter->hw, E1000_TDLEN(i))); in em_initialize_transmit_unit()
3019 switch (adapter->hw.mac.type) { in em_initialize_transmit_unit()
3031 if ((adapter->hw.phy.media_type == e1000_media_type_fiber) || in em_initialize_transmit_unit()
3032 (adapter->hw.phy.media_type == in em_initialize_transmit_unit()
3041 E1000_WRITE_REG(&adapter->hw, E1000_TIPG, tipg); in em_initialize_transmit_unit()
3042 E1000_WRITE_REG(&adapter->hw, E1000_TIDV, adapter->tx_int_delay.value); in em_initialize_transmit_unit()
3044 if(adapter->hw.mac.type >= e1000_82540) in em_initialize_transmit_unit()
3045 E1000_WRITE_REG(&adapter->hw, E1000_TADV, in em_initialize_transmit_unit()
3046 adapter->tx_abs_int_delay.value); in em_initialize_transmit_unit()
3048 if ((adapter->hw.mac.type == e1000_82571) || in em_initialize_transmit_unit()
3049 (adapter->hw.mac.type == e1000_82572)) { in em_initialize_transmit_unit()
3050 tarc = E1000_READ_REG(&adapter->hw, E1000_TARC(0)); in em_initialize_transmit_unit()
3052 E1000_WRITE_REG(&adapter->hw, E1000_TARC(0), tarc); in em_initialize_transmit_unit()
3053 } else if (adapter->hw.mac.type == e1000_80003es2lan) { in em_initialize_transmit_unit()
3055 tarc = E1000_READ_REG(&adapter->hw, E1000_TARC(0)); in em_initialize_transmit_unit()
3057 E1000_WRITE_REG(&adapter->hw, E1000_TARC(0), tarc); in em_initialize_transmit_unit()
3058 tarc = E1000_READ_REG(&adapter->hw, E1000_TARC(1)); in em_initialize_transmit_unit()
3060 E1000_WRITE_REG(&adapter->hw, E1000_TARC(1), tarc); in em_initialize_transmit_unit()
3061 } else if (adapter->hw.mac.type == e1000_82574) { in em_initialize_transmit_unit()
3062 tarc = E1000_READ_REG(&adapter->hw, E1000_TARC(0)); in em_initialize_transmit_unit()
3064 if ( adapter->tx_num_queues > 1) { in em_initialize_transmit_unit()
3066 E1000_WRITE_REG(&adapter->hw, E1000_TARC(0), tarc); in em_initialize_transmit_unit()
3067 E1000_WRITE_REG(&adapter->hw, E1000_TARC(1), tarc); in em_initialize_transmit_unit()
3069 E1000_WRITE_REG(&adapter->hw, E1000_TARC(0), tarc); in em_initialize_transmit_unit()
3072 if (adapter->tx_int_delay.value > 0) in em_initialize_transmit_unit()
3073 adapter->txd_cmd |= E1000_TXD_CMD_IDE; in em_initialize_transmit_unit()
3076 tctl = E1000_READ_REG(&adapter->hw, E1000_TCTL); in em_initialize_transmit_unit()
3081 if (adapter->hw.mac.type >= e1000_82571) in em_initialize_transmit_unit()
3085 E1000_WRITE_REG(&adapter->hw, E1000_TCTL, tctl); in em_initialize_transmit_unit()
3110 struct adapter *adapter = iflib_get_softc(ctx); in em_initialize_receive_unit() local
3111 if_softc_ctx_t scctx = adapter->shared; in em_initialize_receive_unit()
3113 struct e1000_hw *hw = &adapter->hw; in em_initialize_receive_unit()
3148 if (adapter->hw.mac.type >= e1000_82540) { in em_initialize_receive_unit()
3149 E1000_WRITE_REG(&adapter->hw, E1000_RADV, in em_initialize_receive_unit()
3150 adapter->rx_abs_int_delay.value); in em_initialize_receive_unit()
3158 E1000_WRITE_REG(&adapter->hw, E1000_RDTR, in em_initialize_receive_unit()
3159 adapter->rx_int_delay.value); in em_initialize_receive_unit()
3179 adapter->hw.mac.type >= e1000_82543) { in em_initialize_receive_unit()
3180 if (adapter->tx_num_queues > 1) { in em_initialize_receive_unit()
3181 if (adapter->hw.mac.type >= igb_mac_min) { in em_initialize_receive_unit()
3190 if (adapter->hw.mac.type >= igb_mac_min) in em_initialize_receive_unit()
3194 if (adapter->hw.mac.type > e1000_82575) in em_initialize_receive_unit()
3202 if (adapter->rx_num_queues > 1) { in em_initialize_receive_unit()
3203 if (adapter->hw.mac.type >= igb_mac_min) in em_initialize_receive_unit()
3204 igb_initialize_rss_mapping(adapter); in em_initialize_receive_unit()
3206 em_initialize_rss_mapping(adapter); in em_initialize_receive_unit()
3219 for (i = 0, que = adapter->rx_queues; i < adapter->rx_num_queues; i++, que++) { in em_initialize_receive_unit()
3224 u32 rdt = adapter->rx_num_queues -1; /* default */ in em_initialize_receive_unit()
3244 if (((adapter->hw.mac.type == e1000_ich9lan) || in em_initialize_receive_unit()
3245 (adapter->hw.mac.type == e1000_pch2lan) || in em_initialize_receive_unit()
3246 (adapter->hw.mac.type == e1000_ich10lan)) && in em_initialize_receive_unit()
3250 } else if (adapter->hw.mac.type == e1000_82574) { in em_initialize_receive_unit()
3251 for (int i = 0; i < adapter->rx_num_queues; i++) { in em_initialize_receive_unit()
3259 } else if (adapter->hw.mac.type >= igb_mac_min) { in em_initialize_receive_unit()
3264 if (adapter->rx_mbuf_sz <= 4096) { in em_initialize_receive_unit()
3267 } else if (adapter->rx_mbuf_sz > 4096) { in em_initialize_receive_unit()
3275 E1000_WRITE_REG(&adapter->hw, E1000_RLPML, psize); in em_initialize_receive_unit()
3287 if ((adapter->rx_num_queues > 1) && in em_initialize_receive_unit()
3288 (adapter->fc == e1000_fc_none || in em_initialize_receive_unit()
3289 adapter->fc == e1000_fc_rx_pause)) { in em_initialize_receive_unit()
3293 for (i = 0, que = adapter->rx_queues; i < adapter->rx_num_queues; i++, que++) { in em_initialize_receive_unit()
3321 } else if (adapter->hw.mac.type >= e1000_pch2lan) { in em_initialize_receive_unit()
3331 if (adapter->hw.mac.type < igb_mac_min) { in em_initialize_receive_unit()
3332 if (adapter->rx_mbuf_sz == MCLBYTES) in em_initialize_receive_unit()
3334 else if (adapter->rx_mbuf_sz == MJUMPAGESIZE) in em_initialize_receive_unit()
3336 else if (adapter->rx_mbuf_sz > MJUMPAGESIZE) in em_initialize_receive_unit()
3352 struct adapter *adapter = iflib_get_softc(ctx); in em_if_vlan_register() local
3357 adapter->shadow_vfta[index] |= (1 << bit); in em_if_vlan_register()
3358 ++adapter->num_vlans; in em_if_vlan_register()
3364 struct adapter *adapter = iflib_get_softc(ctx); in em_if_vlan_unregister() local
3369 adapter->shadow_vfta[index] &= ~(1 << bit); in em_if_vlan_unregister()
3370 --adapter->num_vlans; in em_if_vlan_unregister()
3374 em_setup_vlan_hw_support(struct adapter *adapter) in em_setup_vlan_hw_support() argument
3376 struct e1000_hw *hw = &adapter->hw; in em_setup_vlan_hw_support()
3385 if (adapter->num_vlans == 0) in em_setup_vlan_hw_support()
3393 if (adapter->shadow_vfta[i] != 0) in em_setup_vlan_hw_support()
3395 i, adapter->shadow_vfta[i]); in em_setup_vlan_hw_support()
3411 struct adapter *adapter = iflib_get_softc(ctx); in em_if_intr_enable() local
3412 struct e1000_hw *hw = &adapter->hw; in em_if_intr_enable()
3417 ims_mask |= adapter->ims; in em_if_intr_enable()
3425 struct adapter *adapter = iflib_get_softc(ctx); in em_if_intr_disable() local
3426 struct e1000_hw *hw = &adapter->hw; in em_if_intr_disable()
3436 struct adapter *adapter = iflib_get_softc(ctx); in igb_if_intr_enable() local
3437 struct e1000_hw *hw = &adapter->hw; in igb_if_intr_enable()
3440 if (__predict_true(adapter->intr_type == IFLIB_INTR_MSIX)) { in igb_if_intr_enable()
3441 mask = (adapter->que_mask | adapter->link_mask); in igb_if_intr_enable()
3454 struct adapter *adapter = iflib_get_softc(ctx); in igb_if_intr_disable() local
3455 struct e1000_hw *hw = &adapter->hw; in igb_if_intr_disable()
3457 if (__predict_true(adapter->intr_type == IFLIB_INTR_MSIX)) { in igb_if_intr_disable()
3471 em_init_manageability(struct adapter *adapter) in em_init_manageability() argument
3475 if (adapter->has_manage) { in em_init_manageability()
3476 int manc2h = E1000_READ_REG(&adapter->hw, E1000_MANC2H); in em_init_manageability()
3477 int manc = E1000_READ_REG(&adapter->hw, E1000_MANC); in em_init_manageability()
3488 E1000_WRITE_REG(&adapter->hw, E1000_MANC2H, manc2h); in em_init_manageability()
3489 E1000_WRITE_REG(&adapter->hw, E1000_MANC, manc); in em_init_manageability()
3498 em_release_manageability(struct adapter *adapter) in em_release_manageability() argument
3500 if (adapter->has_manage) { in em_release_manageability()
3501 int manc = E1000_READ_REG(&adapter->hw, E1000_MANC); in em_release_manageability()
3507 E1000_WRITE_REG(&adapter->hw, E1000_MANC, manc); in em_release_manageability()
3518 em_get_hw_control(struct adapter *adapter) in em_get_hw_control() argument
3522 if (adapter->vf_ifp) in em_get_hw_control()
3525 if (adapter->hw.mac.type == e1000_82573) { in em_get_hw_control()
3526 swsm = E1000_READ_REG(&adapter->hw, E1000_SWSM); in em_get_hw_control()
3527 E1000_WRITE_REG(&adapter->hw, E1000_SWSM, in em_get_hw_control()
3532 ctrl_ext = E1000_READ_REG(&adapter->hw, E1000_CTRL_EXT); in em_get_hw_control()
3533 E1000_WRITE_REG(&adapter->hw, E1000_CTRL_EXT, in em_get_hw_control()
3544 em_release_hw_control(struct adapter *adapter) in em_release_hw_control() argument
3548 if (!adapter->has_manage) in em_release_hw_control()
3551 if (adapter->hw.mac.type == e1000_82573) { in em_release_hw_control()
3552 swsm = E1000_READ_REG(&adapter->hw, E1000_SWSM); in em_release_hw_control()
3553 E1000_WRITE_REG(&adapter->hw, E1000_SWSM, in em_release_hw_control()
3558 ctrl_ext = E1000_READ_REG(&adapter->hw, E1000_CTRL_EXT); in em_release_hw_control()
3559 E1000_WRITE_REG(&adapter->hw, E1000_CTRL_EXT, in em_release_hw_control()
3584 struct adapter *adapter = iflib_get_softc(ctx); in em_get_wakeup() local
3588 adapter->has_manage = e1000_enable_mng_pass_thru(&adapter->hw); in em_get_wakeup()
3591 switch (adapter->hw.mac.type) { in em_get_wakeup()
3596 e1000_read_nvm(&adapter->hw, in em_get_wakeup()
3602 if (adapter->hw.bus.func == 1) { in em_get_wakeup()
3603 e1000_read_nvm(&adapter->hw, in em_get_wakeup()
3607 e1000_read_nvm(&adapter->hw, in em_get_wakeup()
3612 adapter->has_amt = TRUE; in em_get_wakeup()
3617 if (adapter->hw.bus.func == 1) { in em_get_wakeup()
3618 e1000_read_nvm(&adapter->hw, in em_get_wakeup()
3622 e1000_read_nvm(&adapter->hw, in em_get_wakeup()
3642 adapter->has_amt = TRUE; in em_get_wakeup()
3643 eeprom_data = E1000_READ_REG(&adapter->hw, E1000_WUC); in em_get_wakeup()
3646 e1000_read_nvm(&adapter->hw, in em_get_wakeup()
3651 adapter->wol = (E1000_WUFC_MAG | E1000_WUFC_MC); in em_get_wakeup()
3660 adapter->wol = 0; in em_get_wakeup()
3666 if (E1000_READ_REG(&adapter->hw, E1000_STATUS) & in em_get_wakeup()
3668 adapter->wol = 0; in em_get_wakeup()
3673 adapter->wol = 0; in em_get_wakeup()
3681 if (E1000_READ_REG(&adapter->hw, E1000_STATUS) & in em_get_wakeup()
3683 adapter->wol = 0; in em_get_wakeup()
3690 adapter->wol = 0; in em_get_wakeup()
3706 struct adapter *adapter = iflib_get_softc(ctx); in em_enable_wakeup() local
3721 adapter->wol &= ~E1000_WUFC_MAG; in em_enable_wakeup()
3724 adapter->wol &= ~E1000_WUFC_EX; in em_enable_wakeup()
3727 adapter->wol &= ~E1000_WUFC_MC; in em_enable_wakeup()
3729 rctl = E1000_READ_REG(&adapter->hw, E1000_RCTL); in em_enable_wakeup()
3731 E1000_WRITE_REG(&adapter->hw, E1000_RCTL, rctl); in em_enable_wakeup()
3734 if (!(adapter->wol & (E1000_WUFC_EX | E1000_WUFC_MAG | E1000_WUFC_MC))) in em_enable_wakeup()
3738 ctrl = E1000_READ_REG(&adapter->hw, E1000_CTRL); in em_enable_wakeup()
3740 E1000_WRITE_REG(&adapter->hw, E1000_CTRL, ctrl); in em_enable_wakeup()
3743 if (adapter->hw.phy.media_type == e1000_media_type_fiber || in em_enable_wakeup()
3744 adapter->hw.phy.media_type == e1000_media_type_internal_serdes) { in em_enable_wakeup()
3745 ctrl_ext = E1000_READ_REG(&adapter->hw, E1000_CTRL_EXT); in em_enable_wakeup()
3747 E1000_WRITE_REG(&adapter->hw, E1000_CTRL_EXT, ctrl_ext); in em_enable_wakeup()
3750 if ((adapter->hw.mac.type == e1000_ich8lan) || in em_enable_wakeup()
3751 (adapter->hw.mac.type == e1000_pchlan) || in em_enable_wakeup()
3752 (adapter->hw.mac.type == e1000_ich9lan) || in em_enable_wakeup()
3753 (adapter->hw.mac.type == e1000_ich10lan)) in em_enable_wakeup()
3754 e1000_suspend_workarounds_ich8lan(&adapter->hw); in em_enable_wakeup()
3756 if ( adapter->hw.mac.type >= e1000_pchlan) { in em_enable_wakeup()
3757 error = em_enable_phy_wakeup(adapter); in em_enable_wakeup()
3762 E1000_WRITE_REG(&adapter->hw, E1000_WUC, E1000_WUC_PME_EN); in em_enable_wakeup()
3763 E1000_WRITE_REG(&adapter->hw, E1000_WUFC, adapter->wol); in em_enable_wakeup()
3766 if (adapter->hw.phy.type == e1000_phy_igp_3) in em_enable_wakeup()
3767 e1000_igp3_phy_powerdown_workaround_ich8lan(&adapter->hw); in em_enable_wakeup()
3784 em_enable_phy_wakeup(struct adapter *adapter) in em_enable_phy_wakeup() argument
3786 struct e1000_hw *hw = &adapter->hw; in em_enable_phy_wakeup()
3794 for (int i = 0; i < adapter->hw.mac.mta_reg_count; i++) { in em_enable_phy_wakeup()
3802 e1000_read_phy_reg(&adapter->hw, BM_RCTL, &preg); in em_enable_phy_wakeup()
3819 e1000_write_phy_reg(&adapter->hw, BM_RCTL, preg); in em_enable_phy_wakeup()
3824 E1000_WRITE_REG(hw, E1000_WUFC, adapter->wol); in em_enable_phy_wakeup()
3827 e1000_write_phy_reg(&adapter->hw, BM_WUFC, adapter->wol); in em_enable_phy_wakeup()
3828 e1000_write_phy_reg(&adapter->hw, BM_WUC, E1000_WUC_PME_EN); in em_enable_phy_wakeup()
3856 struct adapter *adapter = iflib_get_softc(ctx); in em_if_led_func() local
3859 e1000_setup_led(&adapter->hw); in em_if_led_func()
3860 e1000_led_on(&adapter->hw); in em_if_led_func()
3862 e1000_led_off(&adapter->hw); in em_if_led_func()
3863 e1000_cleanup_led(&adapter->hw); in em_if_led_func()
3871 em_disable_aspm(struct adapter *adapter) in em_disable_aspm() argument
3875 device_t dev = adapter->dev; in em_disable_aspm()
3877 switch (adapter->hw.mac.type) { in em_disable_aspm()
3904 em_update_stats_counters(struct adapter *adapter) in em_update_stats_counters() argument
3907 if(adapter->hw.phy.media_type == e1000_media_type_copper || in em_update_stats_counters()
3908 (E1000_READ_REG(&adapter->hw, E1000_STATUS) & E1000_STATUS_LU)) { in em_update_stats_counters()
3909 adapter->stats.symerrs += E1000_READ_REG(&adapter->hw, E1000_SYMERRS); in em_update_stats_counters()
3910 adapter->stats.sec += E1000_READ_REG(&adapter->hw, E1000_SEC); in em_update_stats_counters()
3912 adapter->stats.crcerrs += E1000_READ_REG(&adapter->hw, E1000_CRCERRS); in em_update_stats_counters()
3913 adapter->stats.mpc += E1000_READ_REG(&adapter->hw, E1000_MPC); in em_update_stats_counters()
3914 adapter->stats.scc += E1000_READ_REG(&adapter->hw, E1000_SCC); in em_update_stats_counters()
3915 adapter->stats.ecol += E1000_READ_REG(&adapter->hw, E1000_ECOL); in em_update_stats_counters()
3917 adapter->stats.mcc += E1000_READ_REG(&adapter->hw, E1000_MCC); in em_update_stats_counters()
3918 adapter->stats.latecol += E1000_READ_REG(&adapter->hw, E1000_LATECOL); in em_update_stats_counters()
3919 adapter->stats.colc += E1000_READ_REG(&adapter->hw, E1000_COLC); in em_update_stats_counters()
3920 adapter->stats.dc += E1000_READ_REG(&adapter->hw, E1000_DC); in em_update_stats_counters()
3921 adapter->stats.rlec += E1000_READ_REG(&adapter->hw, E1000_RLEC); in em_update_stats_counters()
3922 adapter->stats.xonrxc += E1000_READ_REG(&adapter->hw, E1000_XONRXC); in em_update_stats_counters()
3923 adapter->stats.xontxc += E1000_READ_REG(&adapter->hw, E1000_XONTXC); in em_update_stats_counters()
3924 adapter->stats.xoffrxc += E1000_READ_REG(&adapter->hw, E1000_XOFFRXC); in em_update_stats_counters()
3929 adapter->shared->isc_pause_frames = adapter->stats.xoffrxc; in em_update_stats_counters()
3930 adapter->stats.xofftxc += E1000_READ_REG(&adapter->hw, E1000_XOFFTXC); in em_update_stats_counters()
3931 adapter->stats.fcruc += E1000_READ_REG(&adapter->hw, E1000_FCRUC); in em_update_stats_counters()
3932 adapter->stats.prc64 += E1000_READ_REG(&adapter->hw, E1000_PRC64); in em_update_stats_counters()
3933 adapter->stats.prc127 += E1000_READ_REG(&adapter->hw, E1000_PRC127); in em_update_stats_counters()
3934 adapter->stats.prc255 += E1000_READ_REG(&adapter->hw, E1000_PRC255); in em_update_stats_counters()
3935 adapter->stats.prc511 += E1000_READ_REG(&adapter->hw, E1000_PRC511); in em_update_stats_counters()
3936 adapter->stats.prc1023 += E1000_READ_REG(&adapter->hw, E1000_PRC1023); in em_update_stats_counters()
3937 adapter->stats.prc1522 += E1000_READ_REG(&adapter->hw, E1000_PRC1522); in em_update_stats_counters()
3938 adapter->stats.gprc += E1000_READ_REG(&adapter->hw, E1000_GPRC); in em_update_stats_counters()
3939 adapter->stats.bprc += E1000_READ_REG(&adapter->hw, E1000_BPRC); in em_update_stats_counters()
3940 adapter->stats.mprc += E1000_READ_REG(&adapter->hw, E1000_MPRC); in em_update_stats_counters()
3941 adapter->stats.gptc += E1000_READ_REG(&adapter->hw, E1000_GPTC); in em_update_stats_counters()
3946 adapter->stats.gorc += E1000_READ_REG(&adapter->hw, E1000_GORCL) + in em_update_stats_counters()
3947 ((u64)E1000_READ_REG(&adapter->hw, E1000_GORCH) << 32); in em_update_stats_counters()
3948 adapter->stats.gotc += E1000_READ_REG(&adapter->hw, E1000_GOTCL) + in em_update_stats_counters()
3949 ((u64)E1000_READ_REG(&adapter->hw, E1000_GOTCH) << 32); in em_update_stats_counters()
3951 adapter->stats.rnbc += E1000_READ_REG(&adapter->hw, E1000_RNBC); in em_update_stats_counters()
3952 adapter->stats.ruc += E1000_READ_REG(&adapter->hw, E1000_RUC); in em_update_stats_counters()
3953 adapter->stats.rfc += E1000_READ_REG(&adapter->hw, E1000_RFC); in em_update_stats_counters()
3954 adapter->stats.roc += E1000_READ_REG(&adapter->hw, E1000_ROC); in em_update_stats_counters()
3955 adapter->stats.rjc += E1000_READ_REG(&adapter->hw, E1000_RJC); in em_update_stats_counters()
3957 adapter->stats.tor += E1000_READ_REG(&adapter->hw, E1000_TORH); in em_update_stats_counters()
3958 adapter->stats.tot += E1000_READ_REG(&adapter->hw, E1000_TOTH); in em_update_stats_counters()
3960 adapter->stats.tpr += E1000_READ_REG(&adapter->hw, E1000_TPR); in em_update_stats_counters()
3961 adapter->stats.tpt += E1000_READ_REG(&adapter->hw, E1000_TPT); in em_update_stats_counters()
3962 adapter->stats.ptc64 += E1000_READ_REG(&adapter->hw, E1000_PTC64); in em_update_stats_counters()
3963 adapter->stats.ptc127 += E1000_READ_REG(&adapter->hw, E1000_PTC127); in em_update_stats_counters()
3964 adapter->stats.ptc255 += E1000_READ_REG(&adapter->hw, E1000_PTC255); in em_update_stats_counters()
3965 adapter->stats.ptc511 += E1000_READ_REG(&adapter->hw, E1000_PTC511); in em_update_stats_counters()
3966 adapter->stats.ptc1023 += E1000_READ_REG(&adapter->hw, E1000_PTC1023); in em_update_stats_counters()
3967 adapter->stats.ptc1522 += E1000_READ_REG(&adapter->hw, E1000_PTC1522); in em_update_stats_counters()
3968 adapter->stats.mptc += E1000_READ_REG(&adapter->hw, E1000_MPTC); in em_update_stats_counters()
3969 adapter->stats.bptc += E1000_READ_REG(&adapter->hw, E1000_BPTC); in em_update_stats_counters()
3973 adapter->stats.iac += E1000_READ_REG(&adapter->hw, E1000_IAC); in em_update_stats_counters()
3974 adapter->stats.icrxptc += E1000_READ_REG(&adapter->hw, E1000_ICRXPTC); in em_update_stats_counters()
3975 adapter->stats.icrxatc += E1000_READ_REG(&adapter->hw, E1000_ICRXATC); in em_update_stats_counters()
3976 adapter->stats.ictxptc += E1000_READ_REG(&adapter->hw, E1000_ICTXPTC); in em_update_stats_counters()
3977 adapter->stats.ictxatc += E1000_READ_REG(&adapter->hw, E1000_ICTXATC); in em_update_stats_counters()
3978 adapter->stats.ictxqec += E1000_READ_REG(&adapter->hw, E1000_ICTXQEC); in em_update_stats_counters()
3979 adapter->stats.ictxqmtc += E1000_READ_REG(&adapter->hw, E1000_ICTXQMTC); in em_update_stats_counters()
3980 adapter->stats.icrxdmtc += E1000_READ_REG(&adapter->hw, E1000_ICRXDMTC); in em_update_stats_counters()
3981 adapter->stats.icrxoc += E1000_READ_REG(&adapter->hw, E1000_ICRXOC); in em_update_stats_counters()
3983 if (adapter->hw.mac.type >= e1000_82543) { in em_update_stats_counters()
3984 adapter->stats.algnerrc += in em_update_stats_counters()
3985 E1000_READ_REG(&adapter->hw, E1000_ALGNERRC); in em_update_stats_counters()
3986 adapter->stats.rxerrc += in em_update_stats_counters()
3987 E1000_READ_REG(&adapter->hw, E1000_RXERRC); in em_update_stats_counters()
3988 adapter->stats.tncrs += in em_update_stats_counters()
3989 E1000_READ_REG(&adapter->hw, E1000_TNCRS); in em_update_stats_counters()
3990 adapter->stats.cexterr += in em_update_stats_counters()
3991 E1000_READ_REG(&adapter->hw, E1000_CEXTERR); in em_update_stats_counters()
3992 adapter->stats.tsctc += in em_update_stats_counters()
3993 E1000_READ_REG(&adapter->hw, E1000_TSCTC); in em_update_stats_counters()
3994 adapter->stats.tsctfc += in em_update_stats_counters()
3995 E1000_READ_REG(&adapter->hw, E1000_TSCTFC); in em_update_stats_counters()
4002 struct adapter *adapter = iflib_get_softc(ctx); in em_if_get_counter() local
4007 return (adapter->stats.colc); in em_if_get_counter()
4009 return (adapter->dropped_pkts + adapter->stats.rxerrc + in em_if_get_counter()
4010 adapter->stats.crcerrs + adapter->stats.algnerrc + in em_if_get_counter()
4011 adapter->stats.ruc + adapter->stats.roc + in em_if_get_counter()
4012 adapter->stats.mpc + adapter->stats.cexterr); in em_if_get_counter()
4014 return (adapter->stats.ecol + adapter->stats.latecol + in em_if_get_counter()
4015 adapter->watchdog_events); in em_if_get_counter()
4025 struct adapter *adapter; in em_sysctl_reg_handler() local
4028 adapter = oidp->oid_arg1; in em_sysctl_reg_handler()
4029 val = E1000_READ_REG(&adapter->hw, oidp->oid_arg2); in em_sysctl_reg_handler()
4037 em_add_hw_stats(struct adapter *adapter) in em_add_hw_stats() argument
4039 device_t dev = iflib_get_dev(adapter->ctx); in em_add_hw_stats()
4040 struct em_tx_queue *tx_que = adapter->tx_queues; in em_add_hw_stats()
4041 struct em_rx_queue *rx_que = adapter->rx_queues; in em_add_hw_stats()
4046 struct e1000_hw_stats *stats = &adapter->stats; in em_add_hw_stats()
4056 CTLFLAG_RD, &adapter->dropped_pkts, in em_add_hw_stats()
4059 CTLFLAG_RD, &adapter->link_irq, in em_add_hw_stats()
4062 CTLFLAG_RD, &adapter->rx_overruns, in em_add_hw_stats()
4065 CTLFLAG_RD, &adapter->watchdog_events, in em_add_hw_stats()
4068 CTLTYPE_UINT | CTLFLAG_RD, adapter, E1000_CTRL, in em_add_hw_stats()
4072 CTLTYPE_UINT | CTLFLAG_RD, adapter, E1000_RCTL, in em_add_hw_stats()
4076 CTLFLAG_RD, &adapter->hw.fc.high_water, 0, in em_add_hw_stats()
4079 CTLFLAG_RD, &adapter->hw.fc.low_water, 0, in em_add_hw_stats()
4082 for (int i = 0; i < adapter->tx_num_queues; i++, tx_que++) { in em_add_hw_stats()
4090 CTLTYPE_UINT | CTLFLAG_RD, adapter, in em_add_hw_stats()
4095 CTLTYPE_UINT | CTLFLAG_RD, adapter, in em_add_hw_stats()
4104 for (int j = 0; j < adapter->rx_num_queues; j++, rx_que++) { in em_add_hw_stats()
4112 CTLTYPE_UINT | CTLFLAG_RD, adapter, in em_add_hw_stats()
4117 CTLTYPE_UINT | CTLFLAG_RD, adapter, in em_add_hw_stats()
4148 CTLFLAG_RD, &adapter->stats.symerrs, in em_add_hw_stats()
4151 CTLFLAG_RD, &adapter->stats.sec, in em_add_hw_stats()
4154 CTLFLAG_RD, &adapter->stats.dc, in em_add_hw_stats()
4157 CTLFLAG_RD, &adapter->stats.mpc, in em_add_hw_stats()
4160 CTLFLAG_RD, &adapter->stats.rnbc, in em_add_hw_stats()
4163 CTLFLAG_RD, &adapter->stats.ruc, in em_add_hw_stats()
4166 CTLFLAG_RD, &adapter->stats.rfc, in em_add_hw_stats()
4169 CTLFLAG_RD, &adapter->stats.roc, in em_add_hw_stats()
4172 CTLFLAG_RD, &adapter->stats.rjc, in em_add_hw_stats()
4175 CTLFLAG_RD, &adapter->stats.rxerrc, in em_add_hw_stats()
4178 CTLFLAG_RD, &adapter->stats.crcerrs, in em_add_hw_stats()
4181 CTLFLAG_RD, &adapter->stats.algnerrc, in em_add_hw_stats()
4185 CTLFLAG_RD, &adapter->stats.cexterr, in em_add_hw_stats()
4188 CTLFLAG_RD, &adapter->stats.xonrxc, in em_add_hw_stats()
4191 CTLFLAG_RD, &adapter->stats.xontxc, in em_add_hw_stats()
4194 CTLFLAG_RD, &adapter->stats.xoffrxc, in em_add_hw_stats()
4197 CTLFLAG_RD, &adapter->stats.xofftxc, in em_add_hw_stats()
4202 CTLFLAG_RD, &adapter->stats.tpr, in em_add_hw_stats()
4205 CTLFLAG_RD, &adapter->stats.gprc, in em_add_hw_stats()
4208 CTLFLAG_RD, &adapter->stats.bprc, in em_add_hw_stats()
4211 CTLFLAG_RD, &adapter->stats.mprc, in em_add_hw_stats()
4214 CTLFLAG_RD, &adapter->stats.prc64, in em_add_hw_stats()
4217 CTLFLAG_RD, &adapter->stats.prc127, in em_add_hw_stats()
4220 CTLFLAG_RD, &adapter->stats.prc255, in em_add_hw_stats()
4223 CTLFLAG_RD, &adapter->stats.prc511, in em_add_hw_stats()
4226 CTLFLAG_RD, &adapter->stats.prc1023, in em_add_hw_stats()
4229 CTLFLAG_RD, &adapter->stats.prc1522, in em_add_hw_stats()
4232 CTLFLAG_RD, &adapter->stats.gorc, in em_add_hw_stats()
4237 CTLFLAG_RD, &adapter->stats.gotc, in em_add_hw_stats()
4240 CTLFLAG_RD, &adapter->stats.tpt, in em_add_hw_stats()
4243 CTLFLAG_RD, &adapter->stats.gptc, in em_add_hw_stats()
4246 CTLFLAG_RD, &adapter->stats.bptc, in em_add_hw_stats()
4249 CTLFLAG_RD, &adapter->stats.mptc, in em_add_hw_stats()
4252 CTLFLAG_RD, &adapter->stats.ptc64, in em_add_hw_stats()
4255 CTLFLAG_RD, &adapter->stats.ptc127, in em_add_hw_stats()
4258 CTLFLAG_RD, &adapter->stats.ptc255, in em_add_hw_stats()
4261 CTLFLAG_RD, &adapter->stats.ptc511, in em_add_hw_stats()
4264 CTLFLAG_RD, &adapter->stats.ptc1023, in em_add_hw_stats()
4267 CTLFLAG_RD, &adapter->stats.ptc1522, in em_add_hw_stats()
4270 CTLFLAG_RD, &adapter->stats.tsctc, in em_add_hw_stats()
4273 CTLFLAG_RD, &adapter->stats.tsctfc, in em_add_hw_stats()
4284 CTLFLAG_RD, &adapter->stats.iac, in em_add_hw_stats()
4288 CTLFLAG_RD, &adapter->stats.icrxptc, in em_add_hw_stats()
4292 CTLFLAG_RD, &adapter->stats.icrxatc, in em_add_hw_stats()
4296 CTLFLAG_RD, &adapter->stats.ictxptc, in em_add_hw_stats()
4300 CTLFLAG_RD, &adapter->stats.ictxatc, in em_add_hw_stats()
4304 CTLFLAG_RD, &adapter->stats.ictxqec, in em_add_hw_stats()
4308 CTLFLAG_RD, &adapter->stats.ictxqmtc, in em_add_hw_stats()
4312 CTLFLAG_RD, &adapter->stats.icrxdmtc, in em_add_hw_stats()
4316 CTLFLAG_RD, &adapter->stats.icrxoc, in em_add_hw_stats()
4330 struct adapter *adapter = (struct adapter *)arg1; in em_sysctl_nvm_info() local
4346 em_print_nvm_info(adapter); in em_sysctl_nvm_info()
4352 em_print_nvm_info(struct adapter *adapter) in em_print_nvm_info() argument
4365 e1000_read_nvm(&adapter->hw, i, 1, &eeprom_data); in em_print_nvm_info()
4375 struct adapter *adapter; in em_sysctl_int_delay() local
4391 adapter = info->adapter; in em_sysctl_int_delay()
4393 regval = E1000_READ_OFFSET(&adapter->hw, info->offset); in em_sysctl_int_delay()
4401 adapter->txd_cmd &= ~E1000_TXD_CMD_IDE; in em_sysctl_int_delay()
4405 adapter->txd_cmd |= E1000_TXD_CMD_IDE; in em_sysctl_int_delay()
4408 E1000_WRITE_OFFSET(&adapter->hw, info->offset, regval); in em_sysctl_int_delay()
4413 em_add_int_delay_sysctl(struct adapter *adapter, const char *name, in em_add_int_delay_sysctl() argument
4417 info->adapter = adapter; in em_add_int_delay_sysctl()
4420 SYSCTL_ADD_PROC(device_get_sysctl_ctx(adapter->dev), in em_add_int_delay_sysctl()
4421 SYSCTL_CHILDREN(device_get_sysctl_tree(adapter->dev)), in em_add_int_delay_sysctl()
4439 struct adapter *adapter = (struct adapter *) arg1; in em_set_flowcntl() local
4446 if (input == adapter->fc) /* no change? */ in em_set_flowcntl()
4454 adapter->hw.fc.requested_mode = input; in em_set_flowcntl()
4455 adapter->fc = input; in em_set_flowcntl()
4462 adapter->hw.fc.current_mode = adapter->hw.fc.requested_mode; in em_set_flowcntl()
4463 e1000_force_mac_fc(&adapter->hw); in em_set_flowcntl()
4475 struct adapter *adapter = (struct adapter *) arg1; in em_sysctl_eee() local
4478 value = adapter->hw.dev_spec.ich8lan.eee_disable; in em_sysctl_eee()
4482 adapter->hw.dev_spec.ich8lan.eee_disable = (value != 0); in em_sysctl_eee()
4483 em_if_init(adapter->ctx); in em_sysctl_eee()
4491 struct adapter *adapter; in em_sysctl_debug_info() local
4502 adapter = (struct adapter *) arg1; in em_sysctl_debug_info()
4503 em_print_debug_info(adapter); in em_sysctl_debug_info()
4512 struct adapter *adapter = (struct adapter *) arg1; in em_get_rs() local
4521 em_dump_rs(adapter); in em_get_rs()
4537 em_print_debug_info(struct adapter *adapter) in em_print_debug_info() argument
4539 device_t dev = iflib_get_dev(adapter->ctx); in em_print_debug_info()
4540 struct ifnet *ifp = iflib_get_ifp(adapter->ctx); in em_print_debug_info()
4541 struct tx_ring *txr = &adapter->tx_queues->txr; in em_print_debug_info()
4542 struct rx_ring *rxr = &adapter->rx_queues->rxr; in em_print_debug_info()
4554 for (int i = 0; i < adapter->tx_num_queues; i++, txr++) { in em_print_debug_info()
4557 E1000_READ_REG(&adapter->hw, E1000_TDH(i)), in em_print_debug_info()
4558 E1000_READ_REG(&adapter->hw, E1000_TDT(i))); in em_print_debug_info()
4561 for (int j=0; j < adapter->rx_num_queues; j++, rxr++) { in em_print_debug_info()
4564 E1000_READ_REG(&adapter->hw, E1000_RDH(j)), in em_print_debug_info()
4565 E1000_READ_REG(&adapter->hw, E1000_RDT(j))); in em_print_debug_info()
4577 struct adapter *adapter = iflib_get_softc(ctx); in em_enable_vectors_82574() local
4578 struct e1000_hw *hw = &adapter->hw; in em_enable_vectors_82574()