Date: Thu, 3 Aug 2006 19:20:02 -0700 (PDT) From: Kip Macy <kmacy@fsmware.com> To: John Birrell <jb@freebsd.org> Cc: Perforce Change Reviews <perforce@freebsd.org> Subject: Re: PERFORCE change 103141 for review Message-ID: <20060803191858.C53360@demos.bsdclusters.com> In-Reply-To: <200608032139.k73LdViR080818@repoman.freebsd.org> References: <200608032139.k73LdViR080818@repoman.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
Hey - you were the one who said it wasn't ready! As you know, KSE needs to be optional at compile-time first. -Kip On Thu, 3 Aug 2006, John Birrell wrote: > http://perforce.freebsd.org/chv.cgi?CH=103141 > > Change 103141 by jb@jb_freebsd2 on 2006/08/03 21:39:18 > > IFC. > > I bet the changes to em will cause grief on sun4v. > > Another reason why sun4v should be merged into -current. > > Affected files ... > > .. //depot/projects/dtrace/doc/en_US.ISO8859-1/articles/contributors/contrib.additional.sgml#19 integrate > .. //depot/projects/dtrace/doc/en_US.ISO8859-1/books/porters-handbook/book.sgml#17 integrate > .. //depot/projects/dtrace/ports/UPDATING#9 integrate > .. //depot/projects/dtrace/src/etc/mtree/BSD.usr.dist#7 integrate > .. //depot/projects/dtrace/src/share/man/man7/hier.7#7 integrate > .. //depot/projects/dtrace/src/sys/dev/em/README#3 integrate > .. //depot/projects/dtrace/src/sys/dev/em/if_em.c#8 integrate > .. //depot/projects/dtrace/src/sys/dev/em/if_em.h#4 integrate > .. //depot/projects/dtrace/src/sys/dev/em/if_em_hw.c#5 integrate > .. //depot/projects/dtrace/src/sys/dev/em/if_em_hw.h#3 integrate > .. //depot/projects/dtrace/src/sys/dev/em/if_em_osdep.h#4 integrate > .. //depot/projects/dtrace/src/sys/kern/subr_rman.c#6 integrate > .. //depot/projects/dtrace/src/sys/net/if_vlan.c#5 integrate > .. //depot/projects/dtrace/src/sys/netncp/ncp_sock.c#4 integrate > .. //depot/projects/dtrace/src/sys/netsmb/smb_trantcp.c#4 integrate > .. //depot/projects/dtrace/www/en/gnome/news.xml#6 integrate > .. //depot/projects/dtrace/www/en/news/press.xml#9 integrate > > Differences ... > > ==== //depot/projects/dtrace/doc/en_US.ISO8859-1/articles/contributors/contrib.additional.sgml#19 (text+ko) ==== > > @@ -1,4 +1,4 @@ > -<!-- $FreeBSD: doc/en_US.ISO8859-1/articles/contributors/contrib.additional.sgml,v 1.596 2006/08/01 01:24:20 itetcu Exp $ --> > +<!-- $FreeBSD: doc/en_US.ISO8859-1/articles/contributors/contrib.additional.sgml,v 1.597 2006/08/03 20:32:43 bsam Exp $ --> > <!-- > NOTE TO COMMITTERS: Contributors lists are sorted in alphabetical > order by first name. > @@ -4742,6 +4742,11 @@ > </listitem> > > <listitem> > + <para>Karel Miklav > + <email>karel@lovetemple.net</email></para> > + </listitem> > + > + <listitem> > <para>Karl Denninger > <email>karl@mcs.com</email></para> > </listitem> > > ==== //depot/projects/dtrace/doc/en_US.ISO8859-1/books/porters-handbook/book.sgml#17 (text+ko) ==== > > @@ -1,7 +1,7 @@ > <!-- > The FreeBSD Documentation Project > > - $FreeBSD: doc/en_US.ISO8859-1/books/porters-handbook/book.sgml,v 1.739 2006/07/29 20:23:33 simon Exp $ > + $FreeBSD: doc/en_US.ISO8859-1/books/porters-handbook/book.sgml,v 1.740 2006/08/03 19:01:34 shaun Exp $ > --> > > <!DOCTYPE BOOK PUBLIC "-//FreeBSD//DTD DocBook V4.1-Based Extension//EN" [ > @@ -7174,8 +7174,9 @@ > this entry (in quotes). You should generate a UUID > for each new VuXML entry (and do not forget to substitute > it for the template UUID unless you are writing the > - entry from scratch). You can use &man.uuidgen.1; in > - FreeBSD 5.x, or you may install the port <filename > + entry from scratch). You can use &man.uuidgen.1; to > + generate a VuXML UUID; alternatively, if you are using > + FreeBSD 4.x, you may install the port <filename > role="package">devel/p5-Data-UUID</filename> and issue > the following command:</para> > > > ==== //depot/projects/dtrace/ports/UPDATING#9 (text+ko) ==== > > @@ -50,7 +50,7 @@ > now works. Please be aware of this when updating if you have it in your > config and are using GSSAPI when use_sasl is enabled. Using GSSAPI with a > misconfigured krb5_ccname combined with one of the 'hard' bind_policy > - options can effectivly lockout users. > + options can effectively lockout users. > > 20060728: > AFFECTS: users of polish/ekg and polish/ibgadu > @@ -3966,4 +3966,4 @@ > 2) Update all p5-* modules. > portupgrade -f p5-\* > > -$FreeBSD: ports/UPDATING,v 1.377 2006/08/03 00:38:32 mezz Exp $ > +$FreeBSD: ports/UPDATING,v 1.378 2006/08/03 18:45:53 blackend Exp $ > > ==== //depot/projects/dtrace/src/etc/mtree/BSD.usr.dist#7 (text+ko) ==== > > @@ -1,4 +1,4 @@ > -# $FreeBSD: src/etc/mtree/BSD.usr.dist,v 1.318 2006/08/03 03:30:53 jb Exp $ > +# $FreeBSD: src/etc/mtree/BSD.usr.dist,v 1.319 2006/08/03 05:44:51 jb Exp $ > # > # Please see the file src/etc/mtree/README before making changes to this file. > # > @@ -18,8 +18,8 @@ > aout > .. > .. > - dtrace > - .. > + dtrace > + .. > engines > .. > .. > > ==== //depot/projects/dtrace/src/share/man/man7/hier.7#7 (text+ko) ==== > > @@ -30,7 +30,7 @@ > .\" SUCH DAMAGE. > .\" > .\" @(#)hier.7 8.1 (Berkeley) 6/5/93 > -.\" $FreeBSD: src/share/man/man7/hier.7,v 1.119 2006/07/29 19:47:09 simon Exp $ > +.\" $FreeBSD: src/share/man/man7/hier.7,v 1.120 2006/08/03 05:46:32 jb Exp $ > .\" > .Dd May 10, 2006 > .Dt HIER 7 > @@ -413,6 +413,8 @@ > .It Pa aout/ > a.out backward compatibility libraries > .El > +.It Pa dtrace/ > +DTrace library scripts > .It Pa engines/ > OpenSSL (Cryptography/SSL toolkit) dynamically loadable engines > .El > > ==== //depot/projects/dtrace/src/sys/dev/em/README#3 (text+ko) ==== > > @@ -1,8 +1,8 @@ > -$FreeBSD: src/sys/dev/em/README,v 1.12 2006/04/06 17:09:02 glebius Exp $ > +$FreeBSD: src/sys/dev/em/README,v 1.13 2006/08/03 09:20:11 glebius Exp $ > FreeBSD* Driver for the Intel(R) PRO/1000 Family of Adapters > ============================================================ > > -January 4, 2006 > +May 2, 2006 > > > Contents > @@ -22,8 +22,7 @@ > ======== > > This file describes the FreeBSD* driver for the Intel(R) PRO/1000 Family of > -Adapters. This driver has been developed for use with FreeBSD, Release 4.11 > -and greater and Release 5.4. > +Adapters. This driver has been developed for use with FreeBSD, Release 6.x. > > For questions related to hardware requirements, refer to the documentation > supplied with your Intel PRO/1000 adapter. All hardware requirements listed > @@ -45,8 +44,9 @@ > > > NOTE: Mobile adapters are not fully supported. > +NOTE: The Intel(R) 82562v 10/100 Network Connection only provides 10/100 > +support. > > - > Building and Installation > ========================= > > @@ -92,14 +92,14 @@ > > cp Makefile.kernel /usr/src/sys/modules/em/Makefile > > - Edit the /usr/src/sys/conf/files.i386 file, and add the following lines only if > + Edit the /usr/src/sys/conf/files file, and add the following lines only if > they don't already exist: > > dev/em/if_em.c optional em > > dev/em/if_em_hw.c optional em > > - Remove the following lines from the /usr/src/sys/conf/files.i386 file, > + Remove the following lines from the /usr/src/sys/conf/files file, > if they exist: > > dev/em/if_em_fxhw.c optional em > @@ -230,6 +230,13 @@ > - Using Jumbo Frames at 10 or 100 Mbps may result in poor performance or > loss of link. > > + - The following adapters do not support Jumbo Frames: > + Intel(R) 82562V 10/100 Network Connection > + Intel(R) 82566DM Gigabit Network Connection > + Intel(R) 82566DC Gigabit Network Connection > + Intel(R) 82566MM Gigabit Network Connection > + Intel(R) 82566MC Gigabit Network Connection > + > > VLANs > ----- > > ==== //depot/projects/dtrace/src/sys/dev/em/if_em.c#8 (text+ko) ==== > > @@ -1,6 +1,6 @@ > /************************************************************************** > > -Copyright (c) 2001-2005, Intel Corporation > +Copyright (c) 2001-2006, Intel Corporation > All rights reserved. > > Redistribution and use in source and binary forms, with or without > @@ -31,7 +31,7 @@ > > ***************************************************************************/ > > -/*$FreeBSD: src/sys/dev/em/if_em.c,v 1.119 2006/07/20 04:18:45 yongari Exp $*/ > +/*$FreeBSD: src/sys/dev/em/if_em.c,v 1.124 2006/08/03 19:05:04 pdeuskar Exp $*/ > > #ifdef HAVE_KERNEL_OPTION_HEADERS > #include "opt_device_polling.h" > @@ -86,7 +86,7 @@ > * Driver version > *********************************************************************/ > > -char em_driver_version[] = "Version - 5.1.5"; > +char em_driver_version[] = "Version - 6.0.5"; > > > /********************************************************************* > @@ -159,10 +159,17 @@ > { 0x8086, E1000_DEV_ID_82573E, PCI_ANY_ID, PCI_ANY_ID, 0}, > { 0x8086, E1000_DEV_ID_82573E_IAMT, PCI_ANY_ID, PCI_ANY_ID, 0}, > { 0x8086, E1000_DEV_ID_82573L, PCI_ANY_ID, PCI_ANY_ID, 0}, > + { 0x8086, E1000_DEV_ID_80003ES2LAN_COPPER_SPT, > + PCI_ANY_ID, PCI_ANY_ID, 0}, > + { 0x8086, E1000_DEV_ID_80003ES2LAN_SERDES_SPT, > + PCI_ANY_ID, PCI_ANY_ID, 0}, > { 0x8086, E1000_DEV_ID_80003ES2LAN_COPPER_DPT, > PCI_ANY_ID, PCI_ANY_ID, 0}, > { 0x8086, E1000_DEV_ID_80003ES2LAN_SERDES_DPT, > PCI_ANY_ID, PCI_ANY_ID, 0}, > + { 0x8086, E1000_DEV_ID_ICH8_IGP_AMT, PCI_ANY_ID, PCI_ANY_ID, 0}, > + { 0x8086, E1000_DEV_ID_ICH8_IGP_C, PCI_ANY_ID, PCI_ANY_ID, 0}, > + { 0x8086, E1000_DEV_ID_ICH8_IFE, PCI_ANY_ID, PCI_ANY_ID, 0}, > > /* required last entry */ > { 0, 0, 0, 0, 0} > @@ -190,64 +197,64 @@ > static int em_ioctl(struct ifnet *, u_long, caddr_t); > static void em_watchdog(struct ifnet *); > static void em_init(void *); > -static void em_init_locked(struct em_softc *); > +static void em_init_locked(struct adapter *); > static void em_stop(void *); > static void em_media_status(struct ifnet *, struct ifmediareq *); > static int em_media_change(struct ifnet *); > -static void em_identify_hardware(struct em_softc *); > -static int em_allocate_pci_resources(struct em_softc *); > -static int em_allocate_intr(struct em_softc *); > -static void em_free_intr(struct em_softc *); > -static void em_free_pci_resources(struct em_softc *); > +static void em_identify_hardware(struct adapter *); > +static int em_allocate_pci_resources(struct adapter *); > +static int em_allocate_intr(struct adapter *); > +static void em_free_intr(struct adapter *); > +static void em_free_pci_resources(struct adapter *); > static void em_local_timer(void *); > -static int em_hardware_init(struct em_softc *); > -static void em_setup_interface(device_t, struct em_softc *); > -static int em_setup_transmit_structures(struct em_softc *); > -static void em_initialize_transmit_unit(struct em_softc *); > -static int em_setup_receive_structures(struct em_softc *); > -static void em_initialize_receive_unit(struct em_softc *); > -static void em_enable_intr(struct em_softc *); > -static void em_disable_intr(struct em_softc *); > -static void em_free_transmit_structures(struct em_softc *); > -static void em_free_receive_structures(struct em_softc *); > -static void em_update_stats_counters(struct em_softc *); > -static void em_txeof(struct em_softc *); > -static int em_allocate_receive_structures(struct em_softc *); > -static int em_allocate_transmit_structures(struct em_softc *); > -static int em_rxeof(struct em_softc *, int); > +static int em_hardware_init(struct adapter *); > +static void em_setup_interface(device_t, struct adapter *); > +static int em_setup_transmit_structures(struct adapter *); > +static void em_initialize_transmit_unit(struct adapter *); > +static int em_setup_receive_structures(struct adapter *); > +static void em_initialize_receive_unit(struct adapter *); > +static void em_enable_intr(struct adapter *); > +static void em_disable_intr(struct adapter *); > +static void em_free_transmit_structures(struct adapter *); > +static void em_free_receive_structures(struct adapter *); > +static void em_update_stats_counters(struct adapter *); > +static void em_txeof(struct adapter *); > +static int em_allocate_receive_structures(struct adapter *); > +static int em_allocate_transmit_structures(struct adapter *); > +static int em_rxeof(struct adapter *, int); > #ifndef __NO_STRICT_ALIGNMENT > -static int em_fixup_rx(struct em_softc *); > +static int em_fixup_rx(struct adapter *); > #endif > -static void em_receive_checksum(struct em_softc *, struct em_rx_desc *, > +static void em_receive_checksum(struct adapter *, struct em_rx_desc *, > struct mbuf *); > -static void em_transmit_checksum_setup(struct em_softc *, struct mbuf *, > +static void em_transmit_checksum_setup(struct adapter *, struct mbuf *, > uint32_t *, uint32_t *); > -static void em_set_promisc(struct em_softc *); > -static void em_disable_promisc(struct em_softc *); > -static void em_set_multi(struct em_softc *); > -static void em_print_hw_stats(struct em_softc *); > -static void em_update_link_status(struct em_softc *); > -static int em_get_buf(int i, struct em_softc *, struct mbuf *); > -static void em_enable_vlans(struct em_softc *); > -static void em_disable_vlans(struct em_softc *); > -static int em_encap(struct em_softc *, struct mbuf **); > -static void em_smartspeed(struct em_softc *); > -static int em_82547_fifo_workaround(struct em_softc *, int); > -static void em_82547_update_fifo_head(struct em_softc *, int); > -static int em_82547_tx_fifo_reset(struct em_softc *); > +static void em_set_promisc(struct adapter *); > +static void em_disable_promisc(struct adapter *); > +static void em_set_multi(struct adapter *); > +static void em_print_hw_stats(struct adapter *); > +static void em_update_link_status(struct adapter *); > +static int em_get_buf(int i, struct adapter *, struct mbuf *); > +static void em_enable_vlans(struct adapter *); > +static void em_disable_vlans(struct adapter *); > +static int em_encap(struct adapter *, struct mbuf **); > +static void em_smartspeed(struct adapter *); > +static int em_82547_fifo_workaround(struct adapter *, int); > +static void em_82547_update_fifo_head(struct adapter *, int); > +static int em_82547_tx_fifo_reset(struct adapter *); > static void em_82547_move_tail(void *arg); > -static void em_82547_move_tail_locked(struct em_softc *); > -static int em_dma_malloc(struct em_softc *, bus_size_t, > +static void em_82547_move_tail_locked(struct adapter *); > +static int em_dma_malloc(struct adapter *, bus_size_t, > struct em_dma_alloc *, int); > -static void em_dma_free(struct em_softc *, struct em_dma_alloc *); > -static void em_print_debug_info(struct em_softc *); > +static void em_dma_free(struct adapter *, struct em_dma_alloc *); > +static void em_print_debug_info(struct adapter *); > static int em_is_valid_ether_addr(uint8_t *); > static int em_sysctl_stats(SYSCTL_HANDLER_ARGS); > static int em_sysctl_debug_info(SYSCTL_HANDLER_ARGS); > static uint32_t em_fill_descriptors (bus_addr_t address, uint32_t length, > PDESC_ARRAY desc_array); > static int em_sysctl_int_delay(SYSCTL_HANDLER_ARGS); > -static void em_add_int_delay_sysctl(struct em_softc *, const char *, > +static void em_add_int_delay_sysctl(struct adapter *, const char *, > const char *, struct em_int_delay_info *, int, int); > > /* > @@ -259,7 +266,7 @@ > static void em_intr(void *); > #else > static void em_intr_fast(void *); > -static void em_add_int_process_limit(struct em_softc *, const char *, > +static void em_add_int_process_limit(struct adapter *, const char *, > const char *, int *, int); > static void em_handle_rxtx(void *context, int pending); > static void em_handle_link(void *context, int pending); > @@ -281,7 +288,7 @@ > }; > > static driver_t em_driver = { > - "em", em_methods, sizeof(struct em_softc), > + "em", em_methods, sizeof(struct adapter), > }; > > static devclass_t em_devclass; > @@ -302,6 +309,7 @@ > static int em_rx_abs_int_delay_dflt = E1000_TICKS_TO_USECS(EM_RADV); > static int em_rxd = EM_DEFAULT_RXD; > static int em_txd = EM_DEFAULT_TXD; > +static int em_smart_pwr_down = FALSE; > > TUNABLE_INT("hw.em.tx_int_delay", &em_tx_int_delay_dflt); > TUNABLE_INT("hw.em.rx_int_delay", &em_rx_int_delay_dflt); > @@ -309,6 +317,7 @@ > TUNABLE_INT("hw.em.rx_abs_int_delay", &em_rx_abs_int_delay_dflt); > TUNABLE_INT("hw.em.rxd", &em_rxd); > TUNABLE_INT("hw.em.txd", &em_txd); > +TUNABLE_INT("hw.em.smart_pwr_down", &em_smart_pwr_down); > #ifndef DEVICE_POLLING > static int em_rx_process_limit = 100; > TUNABLE_INT("hw.em.rx_process_limit", &em_rx_process_limit); > @@ -378,199 +387,199 @@ > static int > em_attach(device_t dev) > { > - struct em_softc *sc; > + struct adapter *adapter; > int tsize, rsize; > int error = 0; > > INIT_DEBUGOUT("em_attach: begin"); > > - sc = device_get_softc(dev); > - sc->dev = sc->osdep.dev = dev; > - EM_LOCK_INIT(sc, device_get_nameunit(dev)); > + adapter = device_get_softc(dev); > + adapter->dev = adapter->osdep.dev = dev; > + EM_LOCK_INIT(adapter, device_get_nameunit(dev)); > > /* SYSCTL stuff */ > SYSCTL_ADD_PROC(device_get_sysctl_ctx(dev), > SYSCTL_CHILDREN(device_get_sysctl_tree(dev)), > - OID_AUTO, "debug_info", CTLTYPE_INT|CTLFLAG_RW, sc, 0, > + OID_AUTO, "debug_info", CTLTYPE_INT|CTLFLAG_RW, adapter, 0, > em_sysctl_debug_info, "I", "Debug Information"); > > SYSCTL_ADD_PROC(device_get_sysctl_ctx(dev), > SYSCTL_CHILDREN(device_get_sysctl_tree(dev)), > - OID_AUTO, "stats", CTLTYPE_INT|CTLFLAG_RW, sc, 0, > + OID_AUTO, "stats", CTLTYPE_INT|CTLFLAG_RW, adapter, 0, > em_sysctl_stats, "I", "Statistics"); > > - callout_init(&sc->timer, CALLOUT_MPSAFE); > - callout_init(&sc->tx_fifo_timer, CALLOUT_MPSAFE); > + callout_init(&adapter->timer, CALLOUT_MPSAFE); > + callout_init(&adapter->tx_fifo_timer, CALLOUT_MPSAFE); > > /* Determine hardware revision */ > - em_identify_hardware(sc); > + em_identify_hardware(adapter); > > /* 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", > + em_add_int_delay_sysctl(adapter, "rx_int_delay", > + "receive interrupt delay in usecs", &adapter->rx_int_delay, > + E1000_REG_OFFSET(&adapter->hw, RDTR), em_rx_int_delay_dflt); > + em_add_int_delay_sysctl(adapter, "tx_int_delay", > + "transmit interrupt delay in usecs", &adapter->tx_int_delay, > + E1000_REG_OFFSET(&adapter->hw, TIDV), em_tx_int_delay_dflt); > + if (adapter->hw.mac_type >= em_82540) { > + em_add_int_delay_sysctl(adapter, "rx_abs_int_delay", > "receive interrupt delay limit in usecs", > - &sc->rx_abs_int_delay, > - E1000_REG_OFFSET(&sc->hw, RADV), > + &adapter->rx_abs_int_delay, > + E1000_REG_OFFSET(&adapter->hw, RADV), > em_rx_abs_int_delay_dflt); > - em_add_int_delay_sysctl(sc, "tx_abs_int_delay", > + em_add_int_delay_sysctl(adapter, "tx_abs_int_delay", > "transmit interrupt delay limit in usecs", > - &sc->tx_abs_int_delay, > - E1000_REG_OFFSET(&sc->hw, TADV), > + &adapter->tx_abs_int_delay, > + E1000_REG_OFFSET(&adapter->hw, TADV), > em_tx_abs_int_delay_dflt); > } > > #ifndef DEVICE_POLLING > /* Sysctls for limiting the amount of work done in the taskqueue */ > - em_add_int_process_limit(sc, "rx_processing_limit", > - "max number of rx packets to process", &sc->rx_process_limit, > + em_add_int_process_limit(adapter, "rx_processing_limit", > + "max number of rx packets to process", &adapter->rx_process_limit, > em_rx_process_limit); > #endif > > /* > * Validate number of transmit and receive descriptors. It > * must not exceed hardware maximum, and must be multiple > - * of E1000_DBA_ALIGN. > + * of EM_DBA_ALIGN. > */ > - if (((em_txd * sizeof(struct em_tx_desc)) % E1000_DBA_ALIGN) != 0 || > - (sc->hw.mac_type >= em_82544 && em_txd > EM_MAX_TXD) || > - (sc->hw.mac_type < em_82544 && em_txd > EM_MAX_TXD_82543) || > + if (((em_txd * sizeof(struct em_tx_desc)) % EM_DBA_ALIGN) != 0 || > + (adapter->hw.mac_type >= em_82544 && em_txd > EM_MAX_TXD) || > + (adapter->hw.mac_type < em_82544 && em_txd > EM_MAX_TXD_82543) || > (em_txd < EM_MIN_TXD)) { > device_printf(dev, "Using %d TX descriptors instead of %d!\n", > EM_DEFAULT_TXD, em_txd); > - sc->num_tx_desc = EM_DEFAULT_TXD; > + adapter->num_tx_desc = EM_DEFAULT_TXD; > } else > - sc->num_tx_desc = em_txd; > - if (((em_rxd * sizeof(struct em_rx_desc)) % E1000_DBA_ALIGN) != 0 || > - (sc->hw.mac_type >= em_82544 && em_rxd > EM_MAX_RXD) || > - (sc->hw.mac_type < em_82544 && em_rxd > EM_MAX_RXD_82543) || > + adapter->num_tx_desc = em_txd; > + if (((em_rxd * sizeof(struct em_rx_desc)) % EM_DBA_ALIGN) != 0 || > + (adapter->hw.mac_type >= em_82544 && em_rxd > EM_MAX_RXD) || > + (adapter->hw.mac_type < em_82544 && em_rxd > EM_MAX_RXD_82543) || > (em_rxd < EM_MIN_RXD)) { > device_printf(dev, "Using %d RX descriptors instead of %d!\n", > EM_DEFAULT_RXD, em_rxd); > - sc->num_rx_desc = EM_DEFAULT_RXD; > + adapter->num_rx_desc = EM_DEFAULT_RXD; > } else > - sc->num_rx_desc = em_rxd; > + adapter->num_rx_desc = em_rxd; > > - sc->hw.autoneg = DO_AUTO_NEG; > - sc->hw.wait_autoneg_complete = WAIT_FOR_AUTO_NEG_DEFAULT; > - sc->hw.autoneg_advertised = AUTONEG_ADV_DEFAULT; > - sc->hw.tbi_compatibility_en = TRUE; > - sc->rx_buffer_len = EM_RXBUFFER_2048; > + adapter->hw.autoneg = DO_AUTO_NEG; > + adapter->hw.wait_autoneg_complete = WAIT_FOR_AUTO_NEG_DEFAULT; > + adapter->hw.autoneg_advertised = AUTONEG_ADV_DEFAULT; > + adapter->hw.tbi_compatibility_en = TRUE; > + adapter->rx_buffer_len = EM_RXBUFFER_2048; > > - sc->hw.phy_init_script = 1; > - sc->hw.phy_reset_disable = FALSE; > + adapter->hw.phy_init_script = 1; > + adapter->hw.phy_reset_disable = FALSE; > > #ifndef EM_MASTER_SLAVE > - sc->hw.master_slave = em_ms_hw_default; > + adapter->hw.master_slave = em_ms_hw_default; > #else > - sc->hw.master_slave = EM_MASTER_SLAVE; > + adapter->hw.master_slave = EM_MASTER_SLAVE; > #endif > /* > * Set the max frame size assuming standard ethernet > * sized frames. > */ > - sc->hw.max_frame_size = ETHERMTU + ETHER_HDR_LEN + ETHER_CRC_LEN; > + adapter->hw.max_frame_size = ETHERMTU + ETHER_HDR_LEN + ETHER_CRC_LEN; > > - sc->hw.min_frame_size = MINIMUM_ETHERNET_PACKET_SIZE + ETHER_CRC_LEN; > + adapter->hw.min_frame_size = MINIMUM_ETHERNET_PACKET_SIZE + ETHER_CRC_LEN; > > /* > * This controls when hardware reports transmit completion > * status. > */ > - sc->hw.report_tx_early = 1; > - if (em_allocate_pci_resources(sc)) { > + adapter->hw.report_tx_early = 1; > + if (em_allocate_pci_resources(adapter)) { > device_printf(dev, "Allocation of PCI resources failed\n"); > error = ENXIO; > goto err_pci; > } > > /* Initialize eeprom parameters */ > - em_init_eeprom_params(&sc->hw); > + em_init_eeprom_params(&adapter->hw); > > - tsize = roundup2(sc->num_tx_desc * sizeof(struct em_tx_desc), > - E1000_DBA_ALIGN); > + tsize = roundup2(adapter->num_tx_desc * sizeof(struct em_tx_desc), > + EM_DBA_ALIGN); > > /* Allocate Transmit Descriptor ring */ > - if (em_dma_malloc(sc, tsize, &sc->txdma, BUS_DMA_NOWAIT)) { > + if (em_dma_malloc(adapter, tsize, &adapter->txdma, BUS_DMA_NOWAIT)) { > device_printf(dev, "Unable to allocate tx_desc memory\n"); > error = ENOMEM; > goto err_tx_desc; > } > - sc->tx_desc_base = (struct em_tx_desc *)sc->txdma.dma_vaddr; > + adapter->tx_desc_base = (struct em_tx_desc *)adapter->txdma.dma_vaddr; > > - rsize = roundup2(sc->num_rx_desc * sizeof(struct em_rx_desc), > - E1000_DBA_ALIGN); > + rsize = roundup2(adapter->num_rx_desc * sizeof(struct em_rx_desc), > + EM_DBA_ALIGN); > > /* Allocate Receive Descriptor ring */ > - if (em_dma_malloc(sc, rsize, &sc->rxdma, BUS_DMA_NOWAIT)) { > + if (em_dma_malloc(adapter, rsize, &adapter->rxdma, BUS_DMA_NOWAIT)) { > device_printf(dev, "Unable to allocate rx_desc memory\n"); > error = ENOMEM; > goto err_rx_desc; > } > - sc->rx_desc_base = (struct em_rx_desc *)sc->rxdma.dma_vaddr; > + adapter->rx_desc_base = (struct em_rx_desc *)adapter->rxdma.dma_vaddr; > > /* Initialize the hardware */ > - if (em_hardware_init(sc)) { > + if (em_hardware_init(adapter)) { > device_printf(dev, "Unable to initialize the hardware\n"); > error = EIO; > goto err_hw_init; > } > > /* Copy the permanent MAC address out of the EEPROM */ > - if (em_read_mac_addr(&sc->hw) < 0) { > + if (em_read_mac_addr(&adapter->hw) < 0) { > device_printf(dev, "EEPROM read error while reading MAC" > " address\n"); > error = EIO; > goto err_hw_init; > } > > - if (!em_is_valid_ether_addr(sc->hw.mac_addr)) { > + if (!em_is_valid_ether_addr(adapter->hw.mac_addr)) { > device_printf(dev, "Invalid MAC address\n"); > error = EIO; > goto err_hw_init; > } > > /* Setup OS specific network interface */ > - em_setup_interface(dev, sc); > + em_setup_interface(dev, adapter); > > - em_allocate_intr(sc); > + em_allocate_intr(adapter); > > /* Initialize statistics */ > - em_clear_hw_cntrs(&sc->hw); > - em_update_stats_counters(sc); > - sc->hw.get_link_status = 1; > - em_update_link_status(sc); > + em_clear_hw_cntrs(&adapter->hw); > + em_update_stats_counters(adapter); > + adapter->hw.get_link_status = 1; > + em_update_link_status(adapter); > > /* Indicate SOL/IDER usage */ > - if (em_check_phy_reset_block(&sc->hw)) > + if (em_check_phy_reset_block(&adapter->hw)) > device_printf(dev, > "PHY reset is blocked due to SOL/IDER session.\n"); > > /* Identify 82544 on PCIX */ > - em_get_bus_info(&sc->hw); > - if(sc->hw.bus_type == em_bus_type_pcix && sc->hw.mac_type == em_82544) > - sc->pcix_82544 = TRUE; > + em_get_bus_info(&adapter->hw); > + if(adapter->hw.bus_type == em_bus_type_pcix && adapter->hw.mac_type == em_82544) > + adapter->pcix_82544 = TRUE; > else > - sc->pcix_82544 = FALSE; > + adapter->pcix_82544 = FALSE; > > INIT_DEBUGOUT("em_attach: end"); > > return (0); > > err_hw_init: > - em_dma_free(sc, &sc->rxdma); > + em_dma_free(adapter, &adapter->rxdma); > err_rx_desc: > - em_dma_free(sc, &sc->txdma); > + em_dma_free(adapter, &adapter->txdma); > err_tx_desc: > err_pci: > - em_free_intr(sc); > - em_free_pci_resources(sc); > - EM_LOCK_DESTROY(sc); > + em_free_intr(adapter); > + em_free_pci_resources(adapter); > + EM_LOCK_DESTROY(adapter); > > return (error); > } > @@ -588,8 +597,8 @@ > static int > em_detach(device_t dev) > { > - struct em_softc *sc = device_get_softc(dev); > - struct ifnet *ifp = sc->ifp; > + struct adapter *adapter = device_get_softc(dev); > + struct ifnet *ifp = adapter->ifp; > > INIT_DEBUGOUT("em_detach: begin"); > > @@ -598,31 +607,31 @@ > ether_poll_deregister(ifp); > #endif > > - em_free_intr(sc); > - EM_LOCK(sc); > - sc->in_detach = 1; > - em_stop(sc); > - em_phy_hw_reset(&sc->hw); > - EM_UNLOCK(sc); > - ether_ifdetach(sc->ifp); > + em_free_intr(adapter); > + EM_LOCK(adapter); > + adapter->in_detach = 1; > + em_stop(adapter); > + em_phy_hw_reset(&adapter->hw); > + EM_UNLOCK(adapter); > + ether_ifdetach(adapter->ifp); > > - em_free_pci_resources(sc); > + em_free_pci_resources(adapter); > bus_generic_detach(dev); > if_free(ifp); > > /* Free Transmit Descriptor ring */ > - if (sc->tx_desc_base) { > - em_dma_free(sc, &sc->txdma); > - sc->tx_desc_base = NULL; > + if (adapter->tx_desc_base) { > + em_dma_free(adapter, &adapter->txdma); > + adapter->tx_desc_base = NULL; > } > > /* Free Receive Descriptor ring */ > - if (sc->rx_desc_base) { > - em_dma_free(sc, &sc->rxdma); > - sc->rx_desc_base = NULL; > + if (adapter->rx_desc_base) { > + em_dma_free(adapter, &adapter->rxdma); > + adapter->rx_desc_base = NULL; > } > > - EM_LOCK_DESTROY(sc); > + EM_LOCK_DESTROY(adapter); > > return (0); > } > @@ -636,10 +645,10 @@ > static int > em_shutdown(device_t dev) > { > - struct em_softc *sc = device_get_softc(dev); > - EM_LOCK(sc); > - em_stop(sc); > - EM_UNLOCK(sc); > + struct adapter *adapter = device_get_softc(dev); > + EM_LOCK(adapter); > + em_stop(adapter); > + EM_UNLOCK(adapter); > return (0); > } > > @@ -649,11 +658,11 @@ > static int > em_suspend(device_t dev) > { > - struct em_softc *sc = device_get_softc(dev); > + struct adapter *adapter = device_get_softc(dev); > > - EM_LOCK(sc); > - em_stop(sc); > - EM_UNLOCK(sc); > + EM_LOCK(adapter); > + em_stop(adapter); > + EM_UNLOCK(adapter); > > return bus_generic_suspend(dev); > } > @@ -661,15 +670,15 @@ > static int > em_resume(device_t dev) > { > - struct em_softc *sc = device_get_softc(dev); > - struct ifnet *ifp = sc->ifp; > + struct adapter *adapter = device_get_softc(dev); > + struct ifnet *ifp = adapter->ifp; > > - EM_LOCK(sc); > - em_init_locked(sc); > + EM_LOCK(adapter); > + em_init_locked(adapter); > if ((ifp->if_flags & IFF_UP) && > (ifp->if_drv_flags & IFF_DRV_RUNNING)) > em_start_locked(ifp); > - EM_UNLOCK(sc); > + EM_UNLOCK(adapter); > > return bus_generic_resume(dev); > } > @@ -688,15 +697,15 @@ > static void > em_start_locked(struct ifnet *ifp) > { > - struct em_softc *sc = ifp->if_softc; > + struct adapter *adapter = ifp->if_softc; > struct mbuf *m_head; > > - EM_LOCK_ASSERT(sc); > + EM_LOCK_ASSERT(adapter); > > if ((ifp->if_drv_flags & (IFF_DRV_RUNNING|IFF_DRV_OACTIVE)) != > IFF_DRV_RUNNING) > return; > - if (!sc->link_active) > + if (!adapter->link_active) > return; > > while (!IFQ_DRV_IS_EMPTY(&ifp->if_snd)) { > @@ -708,7 +717,7 @@ > * em_encap() can modify our pointer, and or make it NULL on > * failure. In that event, we can't requeue. > */ > - if (em_encap(sc, &m_head)) { > + if (em_encap(adapter, &m_head)) { > if (m_head == NULL) > break; > ifp->if_drv_flags |= IFF_DRV_OACTIVE; > @@ -727,12 +736,12 @@ > static void > em_start(struct ifnet *ifp) > { > - struct em_softc *sc = ifp->if_softc; > + struct adapter *adapter = ifp->if_softc; > > - EM_LOCK(sc); > + EM_LOCK(adapter); > if (ifp->if_drv_flags & IFF_DRV_RUNNING) > em_start_locked(ifp); > - EM_UNLOCK(sc); > + EM_UNLOCK(adapter); > } > > /********************************************************************* > @@ -747,12 +756,12 @@ > static int > em_ioctl(struct ifnet *ifp, u_long command, caddr_t data) > { > - struct em_softc *sc = ifp->if_softc; > + struct adapter *adapter = ifp->if_softc; > struct ifreq *ifr = (struct ifreq *)data; > struct ifaddr *ifa = (struct ifaddr *)data; > int error = 0; > > - if (sc->in_detach) > + if (adapter->in_detach) > return (error); > > switch (command) { > @@ -768,9 +777,9 @@ > */ > ifp->if_flags |= IFF_UP; > if (!(ifp->if_drv_flags & IFF_DRV_RUNNING)) { > - EM_LOCK(sc); > - em_init_locked(sc); > - EM_UNLOCK(sc); > + EM_LOCK(adapter); > + em_init_locked(adapter); > + EM_UNLOCK(adapter); > } > arp_ifinit(ifp, ifa); > } else > @@ -783,14 +792,14 @@ > > IOCTL_DEBUGOUT("ioctl rcv'd: SIOCSIFMTU (Set Interface MTU)"); > > - EM_LOCK(sc); > - switch (sc->hw.mac_type) { > + EM_LOCK(adapter); > + switch (adapter->hw.mac_type) { > case em_82573: > /* > * 82573 only supports jumbo frames > * if ASPM is disabled. > */ > - em_read_eeprom(&sc->hw, EEPROM_INIT_3GIO_3, 1, > + em_read_eeprom(&adapter->hw, EEPROM_INIT_3GIO_3, 1, > &eeprom_data); > if (eeprom_data & EEPROM_WORD1A_ASPM_MASK) { > max_frame_size = ETHER_MAX_LEN; > @@ -802,64 +811,68 @@ > case em_80003es2lan: /* Limit Jumbo Frame size */ > max_frame_size = 9234; > break; > + case em_ich8lan: > + /* ICH8 does not support jumbo frames */ > + max_frame_size = ETHER_MAX_LEN; > + break; > default: > max_frame_size = MAX_JUMBO_FRAME_SIZE; > } > if (ifr->ifr_mtu > max_frame_size - ETHER_HDR_LEN - > ETHER_CRC_LEN) { > - EM_UNLOCK(sc); > + EM_UNLOCK(adapter); > error = EINVAL; > break; > } > > ifp->if_mtu = ifr->ifr_mtu; > - sc->hw.max_frame_size = > + adapter->hw.max_frame_size = > ifp->if_mtu + ETHER_HDR_LEN + ETHER_CRC_LEN; > - em_init_locked(sc); > - EM_UNLOCK(sc); > + em_init_locked(adapter); > + EM_UNLOCK(adapter); > break; > } > case SIOCSIFFLAGS: > IOCTL_DEBUGOUT("ioctl rcv'd: SIOCSIFFLAGS (Set Interface Flags)"); > - EM_LOCK(sc); > + EM_LOCK(adapter); > if (ifp->if_flags & IFF_UP) { > if ((ifp->if_drv_flags & IFF_DRV_RUNNING)) { > - if ((ifp->if_flags ^ sc->if_flags) & > + if ((ifp->if_flags ^ adapter->if_flags) & > IFF_PROMISC) { > - em_disable_promisc(sc); > - em_set_promisc(sc); > + em_disable_promisc(adapter); > + em_set_promisc(adapter); > } > } else > - em_init_locked(sc); > + em_init_locked(adapter); > } else { > if (ifp->if_drv_flags & IFF_DRV_RUNNING) { > - em_stop(sc); > + em_stop(adapter); > } > } > - sc->if_flags = ifp->if_flags; > - EM_UNLOCK(sc); > + adapter->if_flags = ifp->if_flags; > + EM_UNLOCK(adapter); > break; > case SIOCADDMULTI: > case SIOCDELMULTI: > IOCTL_DEBUGOUT("ioctl rcv'd: SIOC(ADD|DEL)MULTI"); > if (ifp->if_drv_flags & IFF_DRV_RUNNING) { > - EM_LOCK(sc); > - em_disable_intr(sc); > - em_set_multi(sc); > - if (sc->hw.mac_type == em_82542_rev2_0) { > - em_initialize_receive_unit(sc); > + EM_LOCK(adapter); > + em_disable_intr(adapter); > + em_set_multi(adapter); > + if (adapter->hw.mac_type == em_82542_rev2_0) { > + em_initialize_receive_unit(adapter); > } > #ifdef DEVICE_POLLING > if (!(ifp->if_capenable & IFCAP_POLLING)) > #endif > - em_enable_intr(sc); > - EM_UNLOCK(sc); > + em_enable_intr(adapter); > + EM_UNLOCK(adapter); > } > break; > case SIOCSIFMEDIA: > case SIOCGIFMEDIA: > IOCTL_DEBUGOUT("ioctl rcv'd: SIOCxIFMEDIA (Get/Set Interface Media)"); > - error = ifmedia_ioctl(ifp, ifr, &sc->media, command); > + error = ifmedia_ioctl(ifp, ifr, &adapter->media, command); > break; > case SIOCSIFCAP: > { > @@ -874,17 +887,17 @@ > error = ether_poll_register(em_poll, ifp); > if (error) > return (error); > - EM_LOCK(sc); > - em_disable_intr(sc); > + EM_LOCK(adapter); > + em_disable_intr(adapter); > ifp->if_capenable |= IFCAP_POLLING; > - EM_UNLOCK(sc); > + EM_UNLOCK(adapter); > } else { > error = ether_poll_deregister(ifp); > /* Enable interrupt even in error case */ > - EM_LOCK(sc); > - em_enable_intr(sc); > + EM_LOCK(adapter); > + em_enable_intr(adapter); > ifp->if_capenable &= ~IFCAP_POLLING; > - EM_UNLOCK(sc); > + EM_UNLOCK(adapter); > } > } > #endif > @@ -897,7 +910,7 @@ > reinit = 1; > } > if (reinit && (ifp->if_drv_flags & IFF_DRV_RUNNING)) > - em_init(sc); > + em_init(adapter); > VLAN_CAPABILITIES(ifp); > break; > } > @@ -919,26 +932,26 @@ > static void > em_watchdog(struct ifnet *ifp) > { > - struct em_softc *sc = ifp->if_softc; > + struct adapter *adapter = ifp->if_softc; > > - EM_LOCK(sc); > + EM_LOCK(adapter); > /* If we are in this routine because of pause frames, then > * don't reset the hardware. > */ > - if (E1000_READ_REG(&sc->hw, STATUS) & E1000_STATUS_TXOFF) { > + if (E1000_READ_REG(&adapter->hw, STATUS) & E1000_STATUS_TXOFF) { > ifp->if_timer = EM_TX_TIMEOUT; > > >>> TRUNCATED FOR MAIL (1000 lines) <<< >
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20060803191858.C53360>