diff options
Diffstat (limited to 'sys/dev/pci/if_em.c')
-rw-r--r-- | sys/dev/pci/if_em.c | 926 |
1 files changed, 16 insertions, 910 deletions
diff --git a/sys/dev/pci/if_em.c b/sys/dev/pci/if_em.c index 417421f62b2..079d048ed71 100644 --- a/sys/dev/pci/if_em.c +++ b/sys/dev/pci/if_em.c @@ -32,7 +32,7 @@ POSSIBILITY OF SUCH DAMAGE. ***************************************************************************/ /* $FreeBSD: if_em.c,v 1.46 2004/09/29 18:28:28 mlaier Exp $ */ -/* $OpenBSD: if_em.c,v 1.40 2005/03/26 23:04:58 brad Exp $ */ +/* $OpenBSD: if_em.c,v 1.41 2005/03/27 16:38:13 brad Exp $ */ #include "bpfilter.h" #include "vlan.h" @@ -93,68 +93,6 @@ struct em_softc *em_adapter_list = NULL; char em_driver_version[] = "1.7.35"; -#ifdef __FreeBSD__ -/********************************************************************* - * PCI Device ID Table - * - * Used by probe to select devices to load on - * Last field stores an index into em_strings - * Last entry must be all 0s - * - * { Vendor ID, Device ID, SubVendor ID, SubDevice ID, String Index } - *********************************************************************/ - -em_vendor_info_t em_vendor_info_array[] = -{ - /* Intel(R) PRO/1000 Network Connection */ - { 0x8086, 0x1000, PCI_ANY_ID, PCI_ANY_ID, 0}, - { 0x8086, 0x1001, PCI_ANY_ID, PCI_ANY_ID, 0}, - { 0x8086, 0x1004, PCI_ANY_ID, PCI_ANY_ID, 0}, - { 0x8086, 0x1008, PCI_ANY_ID, PCI_ANY_ID, 0}, - { 0x8086, 0x1009, PCI_ANY_ID, PCI_ANY_ID, 0}, - { 0x8086, 0x100C, PCI_ANY_ID, PCI_ANY_ID, 0}, - { 0x8086, 0x100D, PCI_ANY_ID, PCI_ANY_ID, 0}, - { 0x8086, 0x100E, PCI_ANY_ID, PCI_ANY_ID, 0}, - { 0x8086, 0x100F, PCI_ANY_ID, PCI_ANY_ID, 0}, - { 0x8086, 0x1010, PCI_ANY_ID, PCI_ANY_ID, 0}, - { 0x8086, 0x1011, PCI_ANY_ID, PCI_ANY_ID, 0}, - { 0x8086, 0x1012, PCI_ANY_ID, PCI_ANY_ID, 0}, - { 0x8086, 0x1013, PCI_ANY_ID, PCI_ANY_ID, 0}, - { 0x8086, 0x1014, PCI_ANY_ID, PCI_ANY_ID, 0}, - { 0x8086, 0x1015, PCI_ANY_ID, PCI_ANY_ID, 0}, - { 0x8086, 0x1016, PCI_ANY_ID, PCI_ANY_ID, 0}, - { 0x8086, 0x1017, PCI_ANY_ID, PCI_ANY_ID, 0}, - { 0x8086, 0x1018, PCI_ANY_ID, PCI_ANY_ID, 0}, - { 0x8086, 0x1019, PCI_ANY_ID, PCI_ANY_ID, 0}, - { 0x8086, 0x101A, PCI_ANY_ID, PCI_ANY_ID, 0}, - { 0x8086, 0x101D, PCI_ANY_ID, PCI_ANY_ID, 0}, - { 0x8086, 0x101E, PCI_ANY_ID, PCI_ANY_ID, 0}, - { 0x8086, 0x1026, PCI_ANY_ID, PCI_ANY_ID, 0}, - { 0x8086, 0x1027, PCI_ANY_ID, PCI_ANY_ID, 0}, - { 0x8086, 0x1028, PCI_ANY_ID, PCI_ANY_ID, 0}, - { 0x8086, 0x1075, PCI_ANY_ID, PCI_ANY_ID, 0}, - { 0x8086, 0x1076, PCI_ANY_ID, PCI_ANY_ID, 0}, - { 0x8086, 0x1077, PCI_ANY_ID, PCI_ANY_ID, 0}, - { 0x8086, 0x1078, PCI_ANY_ID, PCI_ANY_ID, 0}, - { 0x8086, 0x1079, PCI_ANY_ID, PCI_ANY_ID, 0}, - { 0x8086, 0x107A, PCI_ANY_ID, PCI_ANY_ID, 0}, - { 0x8086, 0x107B, PCI_ANY_ID, PCI_ANY_ID, 0}, - { 0x8086, 0x107C, PCI_ANY_ID, PCI_ANY_ID, 0}, - { 0x8086, 0x108A, PCI_ANY_ID, PCI_ANY_ID, 0}, - /* required last entry */ - { 0, 0, 0, 0, 0} -}; - -/********************************************************************* - * Table of branding strings for all supported NICs. - *********************************************************************/ - -char *em_strings[] = { - "Intel(R) PRO/1000 Network Connection" -}; -#endif /* __FreeBSD__ */ - -#ifdef __OpenBSD__ /********************************************************************* * PCI Device ID Table *********************************************************************/ @@ -194,24 +132,14 @@ const struct pci_matchid em_devices[] = { { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82546GB }, { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_PRO_1000_GT } }; -#endif /* __OpenBSD__ */ /********************************************************************* * Function prototypes *********************************************************************/ -#ifdef __FreeBSD__ -int em_probe(device_t); -int em_attach(device_t); -int em_detach(device_t); -int em_shutdown(device_t); -void em_intr(void *); -#endif /* __FreeBSD__ */ -#ifdef __OpenBSD__ int em_probe(struct device *, void *, void *); void em_attach(struct device *, struct device *, void *); int em_intr(void *); void em_power(int, void *); -#endif /* __OpenBSD__ */ void em_start(struct ifnet *); void em_start_locked(struct ifnet *); int em_ioctl(struct ifnet *, u_long, caddr_t); @@ -226,12 +154,7 @@ int em_allocate_pci_resources(struct em_softc *); void em_free_pci_resources(struct em_softc *); void em_local_timer(void *); int em_hardware_init(struct em_softc *); -#ifdef __FreeBSD__ -void em_setup_interface(device_t, struct em_softc *); -#endif -#ifdef __OpenBSD__ void em_setup_interface(struct em_softc *); -#endif int em_setup_transmit_structures(struct em_softc *); void em_initialize_transmit_unit(struct em_softc *); int em_setup_receive_structures(struct em_softc *); @@ -273,45 +196,14 @@ int em_dma_malloc(struct em_softc *, bus_size_t, void em_dma_free(struct em_softc *, struct em_dma_alloc *); void em_print_debug_info(struct em_softc *); int em_is_valid_ether_addr(u_int8_t *); -#ifdef __FreeBSD__ -int em_sysctl_stats(SYSCTL_HANDLER_ARGS); -int em_sysctl_debug_info(SYSCTL_HANDLER_ARGS); -#endif /* __FreeBSD__ */ u_int32_t em_fill_descriptors (u_int64_t address, u_int32_t length, PDESC_ARRAY desc_array); -#ifdef __FreeBSD__ -int em_sysctl_int_delay(SYSCTL_HANDLER_ARGS); -void em_add_int_delay_sysctl(struct em_softc *, const char *, - const char *, struct em_int_delay_info *, - int, int); -#endif /* __FreeBSD__ */ /********************************************************************* - * FreeBSD Device Interface Entry Points + * OpenBSD Device Interface Entry Points *********************************************************************/ -#ifdef __FreeBSD__ -device_method_t em_methods[] = { - /* Device interface */ - DEVMETHOD(device_probe, em_probe), - DEVMETHOD(device_attach, em_attach), - DEVMETHOD(device_detach, em_detach), - DEVMETHOD(device_shutdown, em_shutdown), - {0, 0} -}; - -driver_t em_driver = { - "em", em_methods, sizeof(struct em_softc), -}; - -devclass_t em_devclass; -DRIVER_MODULE(em, pci, em_driver, em_devclass, 0, 0); -MODULE_DEPEND(em, pci, 1, 1, 1); -MODULE_DEPEND(em, ether, 1, 1, 1); -#endif /* __FreeBSD__ */ - -#ifdef __OpenBSD__ struct cfattach em_ca = { sizeof(struct em_softc), em_probe, em_attach }; @@ -319,7 +211,6 @@ struct cfattach em_ca = { struct cfdriver em_cd = { 0, "em", DV_IFNET }; -#endif /* __OpenBSD__ */ /********************************************************************* * Tunable default values. @@ -333,13 +224,6 @@ int em_rx_int_delay_dflt = E1000_TICKS_TO_USECS(EM_RDTR); int em_tx_abs_int_delay_dflt = E1000_TICKS_TO_USECS(EM_TADV); int em_rx_abs_int_delay_dflt = E1000_TICKS_TO_USECS(EM_RADV); -#ifdef __FreeBSD__ -TUNABLE_INT("hw.em.tx_int_delay", &em_tx_int_delay_dflt); -TUNABLE_INT("hw.em.rx_int_delay", &em_rx_int_delay_dflt); -TUNABLE_INT("hw.em.tx_abs_int_delay", &em_tx_abs_int_delay_dflt); -TUNABLE_INT("hw.em.rx_abs_int_delay", &em_rx_abs_int_delay_dflt); -#endif /* __FreeBSD__ */ - /********************************************************************* * Device identification routine * @@ -349,52 +233,6 @@ TUNABLE_INT("hw.em.rx_abs_int_delay", &em_rx_abs_int_delay_dflt); * return 0 on success, positive on failure *********************************************************************/ -#ifdef __FreeBSD__ -int -em_probe(device_t dev) -{ - em_vendor_info_t *ent; - - u_int16_t pci_vendor_id = 0; - u_int16_t pci_device_id = 0; - u_int16_t pci_subvendor_id = 0; - u_int16_t pci_subdevice_id = 0; - char adapter_name[60]; - - INIT_DEBUGOUT("em_probe: begin"); - - pci_vendor_id = pci_get_vendor(dev); - if (pci_vendor_id != EM_VENDOR_ID) - return(ENXIO); - - pci_device_id = pci_get_device(dev); - pci_subvendor_id = pci_get_subvendor(dev); - pci_subdevice_id = pci_get_subdevice(dev); - - ent = em_vendor_info_array; - while (ent->vendor_id != 0) { - if ((pci_vendor_id == ent->vendor_id) && - (pci_device_id == ent->device_id) && - - ((pci_subvendor_id == ent->subvendor_id) || - (ent->subvendor_id == PCI_ANY_ID)) && - - ((pci_subdevice_id == ent->subdevice_id) || - (ent->subdevice_id == PCI_ANY_ID))) { - sprintf(adapter_name, "%s, Version - %s", - em_strings[ent->index], - em_driver_version); - device_set_desc_copy(dev, adapter_name); - return(0); - } - ent++; - } - - return(ENXIO); -} -#endif /* __FreeBSD__ */ - -#ifdef __OpenBSD__ int em_probe(struct device *parent, void *match, void *aux) { @@ -403,7 +241,6 @@ em_probe(struct device *parent, void *match, void *aux) return (pci_matchbyid((struct pci_attach_args *)aux, em_devices, sizeof(em_devices)/sizeof(em_devices[0]))); } -#endif /* __OpenBSD__ */ /********************************************************************* * Device initialization routine @@ -415,108 +252,30 @@ em_probe(struct device *parent, void *match, void *aux) * return 0 on success, positive on failure *********************************************************************/ -#ifdef __FreeBSD__ -int -em_attach(device_t dev) -{ - pci_chipset_tag_t pc = pa->pa_pc; -#endif /* __FreeBSD__ */ -#ifdef __OpenBSD__ void em_attach(struct device *parent, struct device *self, void *aux) { struct pci_attach_args *pa = aux; -#endif /* __OpenBSD__ */ struct em_softc *sc; int tsize, rsize; int error = 0; INIT_DEBUGOUT("em_attach: begin"); -#ifdef __FreeBSD__ - /* Allocate, clear, and link in our sc structure */ - if (!(sc = device_get_softc(dev))) { - printf("em: sc structure allocation failed\n"); - return(ENOMEM); - } - bzero(sc, sizeof(struct em_softc)); - sc->dev = dev; - sc->osdep.dev = dev; - sc->sc_dv.dv_xname = device_get_unit(dev); - EM_LOCK_INIT(sc, device_get_nameunit(dev)); -#endif /* __FreeBSD__ */ - - -#ifdef __OpenBSD__ sc = (struct em_softc *)self; sc->osdep.em_pa = *pa; -#endif if (em_adapter_list != NULL) em_adapter_list->prev = sc; sc->next = em_adapter_list; em_adapter_list = sc; -#ifdef __FreeBSD__ - /* SYSCTL stuff */ - sysctl_ctx_init(&sc->sysctl_ctx); - sc->sysctl_tree = SYSCTL_ADD_NODE(&sc->sysctl_ctx, - SYSCTL_STATIC_CHILDREN(_hw), - OID_AUTO, - device_get_nameunit(dev), - CTLFLAG_RD, - 0, ""); - if (sc->sysctl_tree == NULL) { - error = EIO; - goto err_sysctl; - } - - SYSCTL_ADD_PROC(&sc->sysctl_ctx, - SYSCTL_CHILDREN(sc->sysctl_tree), - OID_AUTO, "debug_info", CTLTYPE_INT|CTLFLAG_RW, - (void *)sc, 0, - em_sysctl_debug_info, "I", "Debug Information"); - - SYSCTL_ADD_PROC(&sc->sysctl_ctx, - SYSCTL_CHILDREN(sc->sysctl_tree), - OID_AUTO, "stats", CTLTYPE_INT|CTLFLAG_RW, - (void *)sc, 0, - em_sysctl_stats, "I", "Statistics"); - - callout_init(&sc->timer, CALLOUT_MPSAFE); - callout_init(&sc->tx_fifo_timer, CALLOUT_MPSAFE); -#endif /* __FreeBSD__ */ - -#ifdef __OpenBSD__ timeout_set(&sc->timer_handle, em_local_timer, sc); timeout_set(&sc->tx_fifo_timer_handle, em_82547_move_tail, sc); -#endif /* __OpenBSD__ */ /* Determine hardware revision */ em_identify_hardware(sc); -#ifdef __FreeBSD__ - /* Set up some sysctls for the tunable interrupt delays */ - em_add_int_delay_sysctl(sc, "rx_int_delay", - "receive interrupt delay in usecs", &sc->rx_int_delay, - E1000_REG_OFFSET(&sc->hw, RDTR), em_rx_int_delay_dflt); - em_add_int_delay_sysctl(sc, "tx_int_delay", - "transmit interrupt delay in usecs", &sc->tx_int_delay, - E1000_REG_OFFSET(&sc->hw, TIDV), em_tx_int_delay_dflt); - if (sc->hw.mac_type >= em_82540) { - em_add_int_delay_sysctl(sc, "rx_abs_int_delay", - "receive interrupt delay limit in usecs", - &sc->rx_abs_int_delay, - E1000_REG_OFFSET(&sc->hw, RADV), - em_rx_abs_int_delay_dflt); - em_add_int_delay_sysctl(sc, "tx_abs_int_delay", - "transmit interrupt delay limit in usecs", - &sc->tx_abs_int_delay, - E1000_REG_OFFSET(&sc->hw, TADV), - em_tx_abs_int_delay_dflt); - } -#endif /* __FreeBSD__ */ - /* Parameters (to be read from user) */ sc->num_tx_desc = EM_MIN_TXD; sc->num_rx_desc = EM_MIN_RXD; @@ -552,7 +311,7 @@ em_attach(struct device *parent, struct device *self, void *aux) ETHER_MAX_LEN; sc->hw.min_frame_size = - MINIMUM_ETHERNET_PACKET_SIZE + ETHER_CRC_LEN; + ETHER_MIN_LEN + ETHER_CRC_LEN; /* * This controls when hardware reports transmit completion @@ -568,7 +327,6 @@ em_attach(struct device *parent, struct device *self, void *aux) goto err_pci; } - /* Initialize eeprom parameters */ em_init_eeprom_params(&sc->hw); @@ -636,19 +394,9 @@ em_attach(struct device *parent, struct device *self, void *aux) if (sc->link_active == 1) { em_get_speed_and_duplex(&sc->hw, &sc->link_speed, &sc->link_duplex); -#ifdef __FreeBSD__ - printf("%s: Speed:%d Mbps Duplex:%s\n", - sc->sc_dv.dv_xname, - sc->link_speed, - sc->link_duplex == FULL_DUPLEX ? "Full" : "Half"); - } else - printf("%s: Speed:N/A Duplex:N/A\n", sc->sc_dv.dv_xname); -#endif /* __FreeBSD__ */ -#ifdef __OpenBSD__ } printf(", address: %s\n", ether_sprintf(sc->interface_data.ac_enaddr)); -#endif /* __OpenBSD__ */ /* Identify 82544 on PCIX */ em_get_bus_info(&sc->hw); @@ -660,13 +408,8 @@ em_attach(struct device *parent, struct device *self, void *aux) sc->pcix_82544 = FALSE; } INIT_DEBUGOUT("em_attach: end"); -#ifdef __FreeBSD__ - return(0); -#endif -#ifdef __OpenBSD__ sc->sc_powerhook = powerhook_establish(em_power, sc); return; -#endif err_mac_addr: err_hw_init: @@ -676,15 +419,8 @@ err_rx_desc: err_tx_desc: err_pci: em_free_pci_resources(sc); -#ifdef __FreeBSD__ - sysctl_ctx_free(&sc->sysctl_ctx); -err_sysctl: - return(error); -#endif /* __FreeBSD__ */ - } -#ifdef __OpenBSD__ void em_power(int why, void *arg) { @@ -697,93 +433,6 @@ em_power(int why, void *arg) em_init(sc); } } -#endif - -/********************************************************************* - * Device removal routine - * - * The detach entry point is called when the driver is being removed. - * This routine stops the adapter and deallocates all the resources - * that were allocated for driver operation. - * - * return 0 on success, positive on failure - *********************************************************************/ - -#ifdef __FreeBSD__ -int -em_detach(device_t dev) -{ - struct em_softc *sc = device_get_softc(dev); - struct ifnet *ifp = &sc->interface_data.ac_if; - EM_LOCK_STATE(); - - INIT_DEBUGOUT("em_detach: begin"); - - EM_LOCK(sc); - sc->in_detach = 1; - em_stop(sc); - em_phy_hw_reset(&sc->hw); - EM_UNLOCK(sc); -#if __FreeBSD_version < 500000 - ether_ifdetach(&sc->interface_data.ac_if, ETHER_BPF_SUPPORTED); -#else - ether_ifdetach(&sc->interface_data.ac_if); -#endif - em_free_pci_resources(sc); - bus_generic_detach(dev); - - /* Free Transmit Descriptor ring */ - if (sc->tx_desc_base) { - em_dma_free(sc, &sc->txdma); - sc->tx_desc_base = NULL; - } - - /* Free Receive Descriptor ring */ - if (sc->rx_desc_base) { - em_dma_free(sc, &sc->rxdma); - sc->rx_desc_base = NULL; - } - - /* Free the sysctl tree */ - sysctl_ctx_free(&sc->sysctl_ctx); - - /* Remove from the sc list */ - if (em_adapter_list == sc) - em_adapter_list = sc->next; - if (sc->next != NULL) - sc->next->prev = sc->prev; - if (sc->prev != NULL) - sc->prev->next = sc->next; - - EM_LOCK_DESTROY(sc); - - ifp->if_flags &= ~(IFF_RUNNING | IFF_OACTIVE); - ifp->if_timer = 0; - - return(0); -} -#endif /* __FreeBSD__ */ - -/********************************************************************* - * - * Shutdown entry point - * - **********************************************************************/ - -#ifdef __FreeBSD__ -int -em_shutdown(device_t dev) -{ - struct em_softc *sc = device_get_softc(dev); - EM_LOCK_STATE(); - - EM_LOCK(sc); - em_stop(sc); - EM_UNLOCK(sc); - return(0); -} -#endif /* __FreeBSD__ */ - /********************************************************************* * Transmit entry point @@ -860,7 +509,6 @@ em_ioctl(struct ifnet *ifp, u_long command, caddr_t data) struct em_softc *sc = ifp->if_softc; EM_LOCK_STATE(); -#ifdef __OpenBSD__ struct ifaddr *ifa = (struct ifaddr *)data; EM_LOCK(sc); error = ether_ioctl(ifp, &sc->interface_data, command, data); @@ -868,18 +516,10 @@ em_ioctl(struct ifnet *ifp, u_long command, caddr_t data) if (error > 0) return (error); -#endif /* __OpenBSD__ */ if (sc->in_detach) return(error); switch (command) { case SIOCSIFADDR: -#ifdef __FreeBSD__ - case SIOCGIFADDR: - IOCTL_DEBUGOUT("ioctl rcv'd: SIOCxIFADDR (Get/Set Interface Addr)"); - ether_ioctl(ifp, command, data); - break; -#endif /* __FreeBSD__ */ -#ifdef __OpenBSD__ IOCTL_DEBUGOUT("ioctl rcv'd: SIOCSIFADDR (Set Interface " "Addr)"); ifp->if_flags |= IFF_UP; @@ -894,7 +534,6 @@ em_ioctl(struct ifnet *ifp, u_long command, caddr_t data) break; } break; -#endif /* __OpenBSD__ */ case SIOCSIFMTU: IOCTL_DEBUGOUT("ioctl rcv'd: SIOCSIFMTU (Set Interface MTU)"); if (ifr->ifr_mtu > MAX_JUMBO_FRAME_SIZE - ETHER_HDR_LEN) { @@ -928,13 +567,11 @@ em_ioctl(struct ifnet *ifp, u_long command, caddr_t data) case SIOCADDMULTI: case SIOCDELMULTI: IOCTL_DEBUGOUT("ioctl rcv'd: SIOC(ADD|DEL)MULTI"); -#ifdef __OpenBSD__ error = (command == SIOCADDMULTI) ? ether_addmulti(ifr, &sc->interface_data) : ether_delmulti(ifr, &sc->interface_data); if (error == ENETRESET) { -#endif /* __OpenBSD__ */ if (ifp->if_flags & IFF_RUNNING) { EM_LOCK(sc); em_disable_intr(sc); @@ -942,36 +579,17 @@ em_ioctl(struct ifnet *ifp, u_long command, caddr_t data) if (sc->hw.mac_type == em_82542_rev2_0) { em_initialize_receive_unit(sc); } -#ifdef DEVICE_POLLING - if (!(ifp->if_flags & IFF_POLLING)) -#endif em_enable_intr(sc); EM_UNLOCK(sc); } -#ifdef __OpenBSD__ error = 0; } -#endif /* __OpenBSD__ */ break; case SIOCSIFMEDIA: case SIOCGIFMEDIA: IOCTL_DEBUGOUT("ioctl rcv'd: SIOCxIFMEDIA (Get/Set Interface Media)"); error = ifmedia_ioctl(ifp, ifr, &sc->media, command); break; -#ifdef __FreeBSD__ - case SIOCSIFCAP: - IOCTL_DEBUGOUT("ioctl rcv'd: SIOCSIFCAP (Set Capabilities)"); - mask = ifr->ifr_reqcap ^ ifp->if_capenable; - if (mask & IFCAP_HWCSUM) { - if (IFCAP_HWCSUM & ifp->if_capenable) - ifp->if_capenable &= ~IFCAP_HWCSUM; - else - ifp->if_capenable |= IFCAP_HWCSUM; - if (ifp->if_flags & IFF_RUNNING) - em_init(sc); - } - break; -#endif /* __FreeBSD__ */ default: IOCTL_DEBUGOUT1("ioctl received: UNKNOWN (0x%x)", (int)command); error = EINVAL; @@ -1075,11 +693,9 @@ em_init_locked(struct em_softc *sc) INIT_DEBUGOUT1("em_init: pba=%dK",pba); E1000_WRITE_REG(&sc->hw, PBA, pba); -#ifdef __FreeBSD__ /* Get the latest mac address, User can use a LAA */ bcopy(sc->interface_data.ac_enaddr, sc->hw.mac_addr, ETHER_ADDR_LEN); -#endif /* __FreeBSD__ */ /* Initialize the hardware */ if (em_hardware_init(sc)) { @@ -1117,30 +733,9 @@ em_init_locked(struct em_softc *sc) ifp->if_flags |= IFF_RUNNING; ifp->if_flags &= ~IFF_OACTIVE; -#ifdef __FreeBSD__ - if (sc->hw.mac_type >= em_82543) { - if (ifp->if_capenable & IFCAP_TXCSUM) - ifp->if_hwassist = EM_CHECKSUM_FEATURES; - else - ifp->if_hwassist = 0; - } - - callout_reset(&sc->timer, 2*hz, em_local_timer, sc); -#endif /* __FreeBSD__ */ -#ifdef __OpenBSD__ timeout_add(&sc->timer_handle, 2*hz); -#endif em_clear_hw_cntrs(&sc->hw); -#ifdef DEVICE_POLLING - /* - * Only enable interrupts if we are not polling, make sure - * they are off otherwise. - */ - if (ifp->if_flags & IFF_POLLING) - em_disable_intr(sc); - else -#endif /* DEVICE_POLLING */ - em_enable_intr(sc); + em_enable_intr(sc); /* Don't reset the phy next time init gets called */ sc->hw.phy_reset_disable = TRUE; @@ -1160,64 +755,12 @@ em_init(void *arg) return; } - -#ifdef DEVICE_POLLING -poll_handler_t em_poll; - -void -em_poll_locked(struct ifnet *ifp, enum poll_cmd cmd, int count) -{ - struct em_softc *sc = ifp->if_softc; - u_int32_t reg_icr; - - mtx_assert(&sc->mtx, MA_OWNED); - - if (cmd == POLL_DEREGISTER) { /* final call, enable interrupts */ - em_enable_intr(sc); - return; - } - if (cmd == POLL_AND_CHECK_STATUS) { - reg_icr = E1000_READ_REG(&sc->hw, ICR); - if (reg_icr & (E1000_ICR_RXSEQ | E1000_ICR_LSC)) { - callout_stop(&sc->timer); - sc->hw.get_link_status = 1; - em_check_for_link(&sc->hw); - em_update_link_status(sc); - callout_reset(&sc->timer, 2*hz, em_local_timer, sc); - } - } - if (ifp->if_flags & IFF_RUNNING) { - em_process_receive_interrupts(sc, count); - em_clean_transmit_interrupts(sc); - } - - if (ifp->if_flags & IFF_RUNNING && ifp->if_snd.ifq_head != NULL) - em_start_locked(ifp); -} - -void -em_poll(struct ifnet *ifp, enum poll_cmd cmd, int count) -{ - struct em_softc *sc = ifp->if_softc; - EM_LOCK_STATE(); - - EM_LOCK(sc); - em_poll_locked(ifp, cmd, count); - EM_UNLOCK(sc); -} -#endif /* DEVICE_POLLING */ - /********************************************************************* * * Interrupt Service routine * **********************************************************************/ -#ifdef __FreeBSD__ -void -#endif -#ifdef __OpenBSD__ int -#endif em_intr(void *arg) { u_int32_t loop_cnt = EM_MAX_INTR; @@ -1230,48 +773,19 @@ em_intr(void *arg) ifp = &sc->interface_data.ac_if; -#ifdef DEVICE_POLLING - if (ifp->if_flags & IFF_POLLING) { - EM_UNLOCK(sc); - return; - } - - if (ether_poll_register(em_poll, ifp)) { - em_disable_intr(sc); - em_poll_locked(ifp, 0, 1); - EM_UNLOCK(sc); - return; - } -#endif /* DEVICE_POLLING */ - reg_icr = E1000_READ_REG(&sc->hw, ICR); if (!reg_icr) { EM_UNLOCK(sc); -#ifdef __FreeBSD__ - return; -#endif -#ifdef __OpenBSD__ return (0); -#endif } /* Link status change */ if (reg_icr & (E1000_ICR_RXSEQ | E1000_ICR_LSC)) { -#ifdef __FreeBSD__ - callout_stop(&sc->timer); -#endif -#ifdef __OpenBSD__ timeout_del(&sc->timer_handle); -#endif sc->hw.get_link_status = 1; em_check_for_link(&sc->hw); em_update_link_status(sc); -#ifdef __FreeBSD__ - callout_reset(&sc->timer, 2*hz, em_local_timer, sc); -#endif -#ifdef __OpenBSD__ timeout_add(&sc->timer_handle, 2*hz); -#endif } while (loop_cnt > 0) { @@ -1282,25 +796,13 @@ em_intr(void *arg) loop_cnt--; } -#ifdef __FreeBSD__ - if (ifp->if_flags & IFF_RUNNING && ifp->if_snd.ifq_head != NULL) -#endif -#ifdef __OpenBSD__ if (ifp->if_flags & IFF_RUNNING && IFQ_IS_EMPTY(&ifp->if_snd) == 0) -#endif em_start_locked(ifp); EM_UNLOCK(sc); -#ifdef __FreeBSD__ - return; -#endif -#ifdef __OpenBSD__ return (1); -#endif } - - /********************************************************************* * * Media Ioctl callback @@ -1351,11 +853,7 @@ em_media_status(struct ifnet *ifp, struct ifmediareq *ifmr) ifmr->ifm_active |= IFM_100_TX; break; case 1000: -#if defined(__FreeBSD__) && __FreeBSD_version < 500000 - ifmr->ifm_active |= IFM_1000_TX; -#else ifmr->ifm_active |= IFM_1000_T; -#endif break; } if (sc->link_duplex == FULL_DUPLEX) @@ -1391,11 +889,7 @@ em_media_change(struct ifnet *ifp) sc->hw.autoneg_advertised = AUTONEG_ADV_DEFAULT; break; case IFM_1000_SX: -#if defined(__FreeBSD__) && __FreeBSD_version < 500000 - case IFM_1000_TX: -#else case IFM_1000_T: -#endif sc->hw.autoneg = DO_AUTO_NEG; sc->hw.autoneg_advertised = ADVERTISE_1000_FULL; break; @@ -1429,21 +923,6 @@ em_media_change(struct ifnet *ifp) return(0); } -#ifdef __FreeBSD__ -void -em_tx_cb(void *arg, bus_dma_segment_t *seg, int nsegs, bus_size_t mapsize, int error) -{ - struct em_q *q = arg; - - if (error) - return; - KASSERT(nsegs <= EM_MAX_SCATTER, - ("Too many DMA segments returned when mapping tx packet")); - q->nsegs = nsegs; - bcopy(seg, q->segs, nsegs * sizeof(seg[0])); -} -#endif /* __FreeBSD__ */ - /********************************************************************* * * This routine maps the mbufs to tx descriptors. @@ -1507,14 +986,10 @@ em_encap(struct em_softc *sc, struct mbuf *m_head) } -#ifdef __FreeBSD__ - if (ifp->if_hwassist > 0) { - em_transmit_checksum_setup(sc, m_head, - &txd_upper, &txd_lower); - } else -#endif /* __FreeBSD__ */ - txd_upper = txd_lower = 0; - +#if 0 + em_transmit_checksum_setup(sc, m_head, &txd_upper, &txd_lower); +#endif + txd_upper = txd_lower = 0; /* Find out if we are in vlan mode */ #if NVLAN > 0 @@ -1655,13 +1130,7 @@ em_82547_move_tail_locked(struct em_softc *sc) if(eop) { if (em_82547_fifo_workaround(sc, length)) { sc->tx_fifo_wrk_cnt++; -#ifdef __FreeBSD__ - callout_reset(&sc->tx_fifo_timer, 1, - em_82547_move_tail, sc); -#endif -#ifdef __OpenBSD__ timeout_add(&sc->tx_fifo_timer_handle, 1); -#endif break; } E1000_WRITE_REG(&sc->hw, TDT, hw_tdt); @@ -1818,16 +1287,11 @@ em_set_multi(struct em_softc *sc) { u_int32_t reg_rctl = 0; u_int8_t mta[MAX_NUM_MULTICAST_ADDRESSES * ETH_LENGTH_OF_ADDRESS]; -#ifdef __FreeBSD__ - struct ifmultiaddr *ifma; -#endif int mcnt = 0; struct ifnet *ifp = &sc->interface_data.ac_if; -#ifdef __OpenBSD__ struct arpcom *ac = &sc->interface_data; struct ether_multi *enm; struct ether_multistep step; -#endif /* __OpenBSD__ */ IOCTL_DEBUGOUT("em_set_multi: begin"); @@ -1840,24 +1304,6 @@ em_set_multi(struct em_softc *sc) E1000_WRITE_REG(&sc->hw, RCTL, reg_rctl); msec_delay(5); } - -#ifdef __FreeBSD__ -#if __FreeBSD_version < 500000 - LIST_FOREACH(ifma, &ifp->if_multiaddrs, ifma_link) { -#else - TAILQ_FOREACH(ifma, &ifp->if_multiaddrs, ifma_link) { -#endif - if (ifma->ifma_addr->sa_family != AF_LINK) - continue; - - if (mcnt == MAX_NUM_MULTICAST_ADDRESSES) break; - - bcopy(LLADDR((struct sockaddr_dl *)ifma->ifma_addr), - &mta[mcnt*ETH_LENGTH_OF_ADDRESS], ETH_LENGTH_OF_ADDRESS); - mcnt++; - } -#endif /* __FreeBSD__ */ -#ifdef __OpenBSD__ ETHER_FIRST_MULTI(step, ac, enm); while (enm != NULL) { if (bcmp(enm->enm_addrlo, enm->enm_addrhi, ETHER_ADDR_LEN)) { @@ -1871,7 +1317,6 @@ em_set_multi(struct em_softc *sc) mcnt++; ETHER_NEXT_MULTI(step, enm); } -#endif /* __OpenBSD__ */ if (mcnt >= MAX_NUM_MULTICAST_ADDRESSES) { reg_rctl = E1000_READ_REG(&sc->hw, RCTL); @@ -1893,7 +1338,6 @@ em_set_multi(struct em_softc *sc) return; } - /********************************************************************* * Timer routine * @@ -1920,12 +1364,7 @@ em_local_timer(void *arg) } em_smartspeed(sc); -#ifdef __FreeBSD__ - callout_reset(&sc->timer, 2*hz, em_local_timer, sc); -#endif /* __FreeBSD__ */ -#ifdef __OpenBSD__ timeout_add(&sc->timer_handle, 2*hz); -#endif /* __OpenBSD__ */ EM_UNLOCK(sc); return; @@ -2006,25 +1445,17 @@ em_stop(void *arg) INIT_DEBUGOUT("em_stop: begin"); em_disable_intr(sc); em_reset_hw(&sc->hw); -#ifdef __FreeBSD__ - callout_stop(&sc->timer); - callout_stop(&sc->tx_fifo_timer); -#endif /* __FreeBSD__ */ -#ifdef __OpenBSD__ timeout_del(&sc->timer_handle); timeout_del(&sc->tx_fifo_timer_handle); -#endif /* __OpenBSD__ */ em_free_transmit_structures(sc); em_free_receive_structures(sc); - /* Tell the stack that the interface is no longer active */ ifp->if_flags &= ~(IFF_RUNNING | IFF_OACTIVE); return; } - /********************************************************************* * * Determine hardware revision. @@ -2117,13 +1548,7 @@ em_allocate_pci_resources(struct em_softc *sc) return (ENXIO); } -#ifdef __FreeBSD__ - sc->hw.io_base = - rman_get_start(sc->res_ioport); -#endif -#ifdef __OpenBSD__ sc->hw.io_base = 0; -#endif } if (pci_intr_map(pa, &ih)) { @@ -2231,59 +1656,24 @@ em_hardware_init(struct em_softc *sc) * **********************************************************************/ void -#ifdef __FreeBSD__ -em_setup_interface(device_t dev, struct em_softc *sc) -#endif -#ifdef __OpenBSD__ em_setup_interface(struct em_softc *sc) -#endif { struct ifnet *ifp; INIT_DEBUGOUT("em_setup_interface: begin"); ifp = &sc->interface_data.ac_if; -#ifdef __FreeBSD__ - if_initname(ifp, device_get_name(dev), device_get_unit(dev)); -#endif -#ifdef __OpenBSD__ strlcpy(ifp->if_xname, sc->sc_dv.dv_xname, IFNAMSIZ); -#endif ifp->if_baudrate = 1000000000; -#ifdef __FreeBSD__ - ifp->if_init = em_init; -#endif ifp->if_softc = sc; ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST; ifp->if_ioctl = em_ioctl; ifp->if_start = em_start; ifp->if_watchdog = em_watchdog; -#ifdef __FreeBSD__ - ifp->if_snd.ifq_maxlen = sc->num_tx_desc - 1; -#endif -#ifdef __OpenBSD__ IFQ_SET_MAXLEN(&ifp->if_snd, sc->num_tx_desc - 1); IFQ_SET_READY(&ifp->if_snd); -#endif -#ifdef __FreeBSD__ - if (sc->hw.mac_type >= em_82543) { - ifp->if_capabilities = IFCAP_HWCSUM; - ifp->if_capenable = ifp->if_capabilities; - } - - /* - * Tell the upper layer(s) we support long frames. - */ - ifp->if_data.ifi_hdrlen = sizeof(struct ether_vlan_header); -#if __FreeBSD_version >= 500000 - ifp->if_capabilities |= IFCAP_VLAN_HWTAGGING | IFCAP_VLAN_MTU; -#endif -#endif /* __FreeBSD__ */ - -#ifdef __OpenBSD__ - ifp->if_capabilities |= IFCAP_VLAN_MTU; -#endif + ifp->if_capabilities = IFCAP_VLAN_MTU; /* * Specify the media types supported by this adapter and register @@ -2311,10 +1701,9 @@ em_setup_interface(struct em_softc *sc) ifmedia_add(&sc->media, IFM_ETHER | IFM_AUTO, 0, NULL); ifmedia_set(&sc->media, IFM_ETHER | IFM_AUTO); -#ifdef __OpenBSD__ if_attach(ifp); ether_ifattach(ifp); -#endif + return; } @@ -2379,53 +1768,18 @@ em_smartspeed(struct em_softc *sc) return; } - /* * Manage DMA'able memory. */ -#ifdef __FreeBSD__ -void -em_dmamap_cb(void *arg, bus_dma_segment_t *segs, int nseg, int error) -{ - if (error) - return; - *(bus_addr_t*) arg = segs->ds_addr; - return; -} -#endif /* __FreeBSD__ */ - int em_dma_malloc(struct em_softc *sc, bus_size_t size, struct em_dma_alloc *dma, int mapflags) { int r; -#ifdef __FreeBSD__ - r = bus_dma_tag_create(NULL, /* parent */ - PAGE_SIZE, 0, /* alignment, bounds */ - BUS_SPACE_MAXADDR, /* lowaddr */ - BUS_SPACE_MAXADDR, /* highaddr */ - NULL, NULL, /* filter, filterarg */ - size, /* maxsize */ - 1, /* nsegments */ - size, /* maxsegsize */ - BUS_DMA_ALLOCNOW, /* flags */ - NULL, /* lockfunc */ - NULL, /* lockarg */ - &dma->dma_tag); - if (r != 0) { - printf("%s: em_dma_malloc: bus_dma_tag_create failed; " - "error %u\n", sc->sc_dv.dv_xname, r); - goto fail_0; - } - - r = bus_dmamap_create(dma->dma_tag, BUS_DMA_NOWAIT, &dma->dma_map); -#endif /* __FreeBSD__ */ -#ifdef __OpenBSD__ dma->dma_tag = sc->osdep.em_pa.pa_dmat; r = bus_dmamap_create(dma->dma_tag, size, 1, size, 0, BUS_DMA_NOWAIT, &dma->dma_map); -#endif /* __OpenBSD__ */ if (r != 0) { printf("%s: em_dma_malloc: bus_dmamap_create failed; " "error %u\n", sc->sc_dv.dv_xname, r); @@ -2489,7 +1843,6 @@ em_dma_free(struct em_softc *sc, struct em_dma_alloc *dma) bus_dma_tag_destroy(dma->dma_tag); } - /********************************************************************* * * Allocate memory for tx_buffer structures. The tx_buffer stores all @@ -2522,30 +1875,7 @@ em_allocate_transmit_structures(struct em_softc *sc) int em_setup_transmit_structures(struct em_softc *sc) { -#ifdef __FreeBSD__ - /* - * Setup DMA descriptor areas. - */ - if (bus_dma_tag_create(NULL, /* parent */ - PAGE_SIZE, 0, /* alignment, bounds */ - BUS_SPACE_MAXADDR, /* lowaddr */ - BUS_SPACE_MAXADDR, /* highaddr */ - NULL, NULL, /* filter, filterarg */ - MCLBYTES * 8, /* maxsize */ - EM_MAX_SCATTER, /* nsegments */ - MCLBYTES * 8, /* maxsegsize */ - BUS_DMA_ALLOCNOW, /* flags */ - NULL, /* lockfunc */ - NULL, /* lockarg */ - &sc->txtag)) { - printf("%s: Unable to allocate TX DMA tag\n", sc->sc_dv.dv_xname); - return (ENOMEM); - } - -#endif /* __FreeBSD__ */ -#ifdef __OpenBSD__ sc->txtag = sc->osdep.em_pa.pa_dmat; -#endif if (em_allocate_transmit_structures(sc)) return (ENOMEM); @@ -2679,7 +2009,7 @@ em_free_transmit_structures(struct em_softc *sc) * context only if the protocol type changes. * **********************************************************************/ -#ifdef __FreeBSD__ +#if 0 void em_transmit_checksum_setup(struct em_softc *sc, struct mbuf *mp, @@ -2758,7 +2088,7 @@ em_transmit_checksum_setup(struct em_softc *sc, return; } -#endif /* __FreeBSD__ */ +#endif /********************************************************************** * @@ -2918,27 +2248,7 @@ em_allocate_receive_structures(struct em_softc *sc) bzero(sc->rx_buffer_area, sizeof(struct em_buffer) * sc->num_rx_desc); -#ifdef __FreeBSD__ - error = bus_dma_tag_create(NULL, /* parent */ - PAGE_SIZE, 0, /* alignment, bounds */ - BUS_SPACE_MAXADDR, /* lowaddr */ - BUS_SPACE_MAXADDR, /* highaddr */ - NULL, NULL, /* filter, filterarg */ - MCLBYTES, /* maxsize */ - 1, /* nsegments */ - MCLBYTES, /* maxsegsize */ - BUS_DMA_ALLOCNOW, /* flags */ - &sc->rxtag); - if (error != 0) { - printf("%s: em_allocate_receive_structures: " - "bus_dma_tag_create failed; error %u\n", - sc->sc_dv.dv_xname, error); - goto fail_0; - } -#endif /* __FreeBSD__ */ -#ifdef __OpenBSD__ sc->rxtag = sc->osdep.em_pa.pa_dmat; -#endif rx_buffer = sc->rx_buffer_area; for (i = 0; i < sc->num_rx_desc; i++, rx_buffer++) { @@ -3001,7 +2311,7 @@ void em_initialize_receive_unit(struct em_softc *sc) { u_int32_t reg_rctl; -#ifdef __FreeBSD__ +#if 0 u_int32_t reg_rxcsum; #endif struct ifnet *ifp; @@ -3029,12 +2339,7 @@ em_initialize_receive_unit(struct em_softc *sc) } /* Setup the Base and Length of the Rx Descriptor Ring */ -#ifdef __FreeBSD__ - bus_addr = sc->rxdma.dma_paddr; -#endif -#ifdef __OpenBSD__ bus_addr = sc->rxdma.dma_map->dm_segs[0].ds_addr; -#endif E1000_WRITE_REG(&sc->hw, RDBAL, (u_int32_t)bus_addr); E1000_WRITE_REG(&sc->hw, RDBAH, (u_int32_t)(bus_addr >> 32)); E1000_WRITE_REG(&sc->hw, RDLEN, sc->num_rx_desc * @@ -3072,15 +2377,14 @@ em_initialize_receive_unit(struct em_softc *sc) if (ifp->if_mtu > ETHERMTU) reg_rctl |= E1000_RCTL_LPE; -#ifdef __FreeBSD__ /* Enable 82543 Receive Checksum Offload for TCP and UDP */ - if ((sc->hw.mac_type >= em_82543) && - (ifp->if_capenable & IFCAP_RXCSUM)) { +#if 0 + if (sc->hw.mac_type >= em_82543) { reg_rxcsum = E1000_READ_REG(&sc->hw, RXCSUM); reg_rxcsum |= (E1000_RXCSUM_IPOFL | E1000_RXCSUM_TUOFL); E1000_WRITE_REG(&sc->hw, RXCSUM, reg_rxcsum); } -#endif /* __FreeBSD__ */ +#endif /* Enable Receives */ E1000_WRITE_REG(&sc->hw, RCTL, reg_rctl); @@ -3139,11 +2443,6 @@ em_process_receive_interrupts(struct em_softc *sc, int count) { struct ifnet *ifp; struct mbuf *mp; -#ifdef __FreeBSD__ -#if __FreeBSD_version < 500000 - struct ether_header *eh; -#endif -#endif /* __FreeBSD__ */ u_int8_t accept_frame = 0; u_int8_t eop = 0; u_int16_t len, desc_len, prev_len_adj; @@ -3302,7 +2601,6 @@ em_process_receive_interrupts(struct em_softc *sc, int count) sc->fmp->m_pkthdr.rcvif = ifp; ifp->if_ipackets++; -#ifdef __OpenBSD__ #if NBPFILTER > 0 /* * Handle BPF listeners. Let the BPF @@ -3314,37 +2612,6 @@ em_process_receive_interrupts(struct em_softc *sc, int count) em_receive_checksum(sc, current_desc, sc->fmp); ether_input_mbuf(ifp, sc->fmp); -#endif /* __OpenBSD__ */ -#ifdef __FreeBSD__ -#if __FreeBSD_version < 500000 - eh = mtod(sc->fmp, struct ether_header *); - /* Remove ethernet header from mbuf */ - m_adj(sc->fmp, sizeof(struct ether_header)); - em_receive_checksum(sc, current_desc, - sc->fmp); - if (current_desc->status & E1000_RXD_STAT_VP) - VLAN_INPUT_TAG(eh, sc->fmp, - (current_desc->special & - E1000_RXD_SPC_VLAN_MASK)); - else - ether_input(ifp, eh, sc->fmp); -#else - - em_receive_checksum(sc, current_desc, - sc->fmp); - if (current_desc->status & E1000_RXD_STAT_VP) - VLAN_INPUT_TAG(ifp, sc->fmp, - (current_desc->special & - E1000_RXD_SPC_VLAN_MASK), - sc->fmp = NULL); - - if (sc->fmp != NULL) { - EM_UNLOCK(sc); - (*ifp->if_input)(ifp, sc->fmp); - EM_LOCK(sc); - } -#endif -#endif /* __FreeBSD__ */ sc->fmp = NULL; sc->lmp = NULL; } @@ -3386,39 +2653,6 @@ em_receive_checksum(struct em_softc *sc, struct em_rx_desc *rx_desc, struct mbuf *mp) { -#ifdef __FreeBSD__ - /* 82543 or newer only */ - if ((sc->hw.mac_type < em_82543) || - /* Ignore Checksum bit is set */ - (rx_desc->status & E1000_RXD_STAT_IXSM)) { - mp->m_pkthdr.csum_flags = 0; - return; - } - - if (rx_desc->status & E1000_RXD_STAT_IPCS) { - /* Did it pass? */ - if (!(rx_desc->errors & E1000_RXD_ERR_IPE)) { - /* IP Checksum Good */ - mp->m_pkthdr.csum_flags = CSUM_IP_CHECKED; - mp->m_pkthdr.csum_flags |= CSUM_IP_VALID; - - } else { - mp->m_pkthdr.csum_flags = 0; - } - } - - if (rx_desc->status & E1000_RXD_STAT_TCPCS) { - /* Did it pass? */ - if (!(rx_desc->errors & E1000_RXD_ERR_TCPE)) { - mp->m_pkthdr.csum_flags |= - (CSUM_DATA_VALID | CSUM_PSEUDO_HDR); - mp->m_pkthdr.csum_data = htons(0xffff); - } - } - - return; -#endif /* __FreeBSD__ */ -#ifdef __OpenBSD__ /* 82543 or newer only */ if ((sc->hw.mac_type < em_82543) || /* Ignore Checksum bit is set */ @@ -3433,7 +2667,6 @@ em_receive_checksum(struct em_softc *sc, E1000_RXD_STAT_TCPCS|E1000_RXD_ERR_TCPE)) == (E1000_RXD_STAT_TCPCS | E1000_RXD_STAT_IPCS)) mp->m_pkthdr.csum |= M_TCP_CSUM_IN_OK | M_UDP_CSUM_IN_OK; -#endif /* __OpenBSD__ */ } @@ -3534,21 +2767,6 @@ em_pci_clear_mwi(struct em_hw *hw) } -#ifdef __FreeBSD__ -int32_t -em_io_read(struct em_hw *hw, unsigned long port) -{ - return(inl(port)); -} - -void -em_io_write(struct em_hw *hw, unsigned long port, uint32_t value) -{ - outl(port, value); - return; -} -#endif /* __FreeBSD__ */ - /********************************************************************* * 82544 Coexistence issue workaround. * There are 2 issues. @@ -3690,11 +2908,6 @@ em_update_stats_counters(struct em_softc *sc) ifp = &sc->interface_data.ac_if; /* Fill out the OS statistics structure */ -#ifndef __OpenBSD__ - ifp->if_ibytes = sc->stats.gorcl; - ifp->if_obytes = sc->stats.gotcl; - ifp->if_imcasts = sc->stats.mprc; -#endif ifp->if_collisions = sc->stats.colc; /* Rx Errors */ @@ -3711,7 +2924,6 @@ em_update_stats_counters(struct em_softc *sc) } - /********************************************************************** * * This routine is called only when em_display_debug_stats is enabled. @@ -3810,109 +3022,3 @@ em_print_hw_stats(struct em_softc *sc) return; } - -#ifdef __FreeBSD__ -int -em_sysctl_debug_info(SYSCTL_HANDLER_ARGS) -{ - int error; - int result; - struct em_softc *sc; - - result = -1; - error = sysctl_handle_int(oidp, &result, 0, req); - - if (error || !req->newptr) - return (error); - - if (result == 1) { - sc = (struct em_softc *)arg1; - em_print_debug_info(sc); - } - - return error; -} - - -int -em_sysctl_stats(SYSCTL_HANDLER_ARGS) -{ - int error; - int result; - struct em_softc *sc; - - result = -1; - error = sysctl_handle_int(oidp, &result, 0, req); - - if (error || !req->newptr) - return (error); - - if (result == 1) { - sc = (struct em_softc *)arg1; - em_print_hw_stats(sc); - } - - return error; -} - -int -em_sysctl_int_delay(SYSCTL_HANDLER_ARGS) -{ - struct em_int_delay_info *info; - struct em_softc *sc; - u_int32_t regval; - int error; - int usecs; - int ticks; - int s; - - info = (struct em_int_delay_info *)arg1; - sc = info->sc; - usecs = info->value; - error = sysctl_handle_int(oidp, &usecs, 0, req); - if (error != 0 || req->newptr == NULL) - return error; - if (usecs < 0 || usecs > E1000_TICKS_TO_USECS(65535)) - return EINVAL; - info->value = usecs; - ticks = E1000_USECS_TO_TICKS(usecs); - - s = splimp(); - regval = E1000_READ_OFFSET(&sc->hw, info->offset); - regval = (regval & ~0xffff) | (ticks & 0xffff); - /* Handle a few special cases. */ - switch (info->offset) { - case E1000_RDTR: - case E1000_82542_RDTR: - regval |= E1000_RDT_FPDB; - break; - case E1000_TIDV: - case E1000_82542_TIDV: - if (ticks == 0) { - sc->txd_cmd &= ~E1000_TXD_CMD_IDE; - /* Don't write 0 into the TIDV register. */ - regval++; - } else - sc->txd_cmd |= E1000_TXD_CMD_IDE; - break; - } - E1000_WRITE_OFFSET(&sc->hw, info->offset, regval); - splx(s); - return 0; -} - -void -em_add_int_delay_sysctl(struct em_softc *sc, const char *name, - const char *description, struct em_int_delay_info *info, - int offset, int value) -{ - info->sc = sc; - info->offset = offset; - info->value = value; - SYSCTL_ADD_PROC(&sc->sysctl_ctx, - SYSCTL_CHILDREN(sc->sysctl_tree), - OID_AUTO, name, CTLTYPE_INT|CTLFLAG_RW, - info, 0, em_sysctl_int_delay, "I", description); -} -#endif /* __FreeBSD__ */ - |