commit bb9e63e27117b469a151c61fb0045a8ec4cced5d
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Mon Apr 20 07:13:31 2009 +0000

    tg3: Update version to 3.99
    
    This patch updates the tg3 version to 3.99.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit daba2a631d2b7831b6a021b36d61314a9153526e
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Mon Apr 20 06:58:52 2009 +0000

    tg3: Restore LAA sooner in shutdown sequence
    
    After a shutdown reset, the LAA needs to be restored before posting the
    post-reset signature in shared memory.  If the LAA is not restored
    before then, the bootcode will assume the factory default MAC address
    and WOL will not work with the LAA.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 9cf74ebb634fe79587cf9a1d5ff971391dd12e1b
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Mon Apr 20 06:58:27 2009 +0000

    tg3: Limit CLKREQ fix to A[01] of 57780 asic rev
    
    This patch restricts the CLKREQ bugfix to the A0 and A1 revisions
    of 57780 ASIC rev chips.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 8d519ab2866c92f5d722085492a124f016f601aa
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Mon Apr 20 06:58:01 2009 +0000

    tg3: Allow 5761 WOL and LED fixes to 5761S too
    
    The 5761 WOL and LED fixes used the PCI device ID to as the activation
    key.  The 5761S requires the same process.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 33466d938f43ab65312466ba5472b9c6ee200cce
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Mon Apr 20 06:57:41 2009 +0000

    tg3: Prevent send BD corruption
    
    On rare occasions, send BD corruptions can occur.  This patch
    fixes the problem by increasing the L1 entry threshold to 4
    milliseconds.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit df259d8cba7d7880dc04d34c7a6e0ce15fbc9644
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Mon Apr 20 06:57:14 2009 +0000

    tg3: Handle NVRAM absent cases
    
    Some 57780 ASIC revision parts do not have NVRAM.  Code the driver so
    that it is tolerant of this configuration.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 624f8e5082efd0348ccf7e3d3f4bfc41efead26c
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Mon Apr 20 06:55:01 2009 +0000

    tg3: Allow screaming interrupt detection
    
    The tg3 driver's ISR is coded to accept interrupts as its own if the
    status block tag does not equal the last tag the driver has seen.  The
    last_tag field is updated from tg3_poll.  In a screaming interrupt
    situation from another device sharing tg3's IRQ, tg3_poll does not get
    a chance to be called, so the last_tag will always be out of sync with
    the status block tag.  Consequently, the driver will continually
    declare the screaming interrupts as its own, thus thwarting the
    screaming interrupt detection logic.
    
    This patch solves the problem by creating a new last_irq_tag member and
    recording the status block tag in the ISR.  The ISR then checks the
    last_irq_tag for interrupt ownership.
    
    Many thanks to John Marvin for the detailed bug report and analysis and
    Michael Chan for the bugfix.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Tested-by: John Marvin <jsm@fc.hp.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 62cedd11f63c99efd2962fb69763a09e2778f6e6
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Mon Apr 20 14:52:29 2009 -0700

    tg3: Fix SEEPROM accesses
    
    The recent NVRAM patches sanitized how the driver deals with NVRAM
    data, but they failed to bring the SEEPROM interfaces inline with
    the new strategy.  This patch brings the SEEPROM interfaces up to date.
    This patch also reverts commit 0d489ffb76de0fe804cf06a9d4d11fa7342d74b9
    ("tg3: fix big endian MAC address collection failure").
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Tested-by: Robin Holt <holt@sgi.com>
    Tested-by: James Bottomley <james.bottomley@HansenPartnership.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 0d489ffb76de0fe804cf06a9d4d11fa7342d74b9
Author: James Bottomley <James.Bottomley@HansenPartnership.com>
Date:   Mon Apr 13 14:31:51 2009 -0700

    tg3: fix big endian MAC address collection failure
    
    We noticed on parisc that our broadcoms all swapped MAC addresses going
    from 2.6.29 to 2.6.30-rc1:
    
    Apr 11 07:48:24 ion kernel: eth0: Tigon3 [partno(BCM95700A6) rev 0105] (PCI:66MHz:64-bit) MAC address 00:30:6e:4b:15:59
    Apr 13 07:34:34 ion kernel: eth0: Tigon3 [partno(BCM95700A6) rev 0105] (PCI:66MHz:64-bit) MAC address 00:00:59:15:4b:6e
    
    The problem patch is:
    
    commit 6d348f2c1e0bb1cf7a494b51fc921095ead3f6ae
    Author: Matt Carlson <mcarlson@broadcom.com>
    Date:   Wed Feb 25 14:25:52 2009 +0000
    
        tg3: Eliminate tg3_nvram_read_swab()
    
    With the root cause being the use of memcpy to set the mac address:
    
       memcpy(&dev->dev_addr[0], ((char *)&hi) + 2, 2);
       memcpy(&dev->dev_addr[2], (char *)&lo, sizeof(lo));
    
    This might work on little endian machines, but it can't on big endian
    ones.  You have to use the original setting mechanism to be correct on
    all architectures.
    
    The attached patch fixes parisc.
    
    Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 284901a90a9e0b812ca3f5f852cbbfb60d10249d
Author: Yang Hongyang <yanghy@cn.fujitsu.com>
Date:   Mon Apr 6 19:01:15 2009 -0700

    dma-mapping: replace all DMA_32BIT_MASK macro with DMA_BIT_MASK(32)
    
    Replace all DMA_32BIT_MASK macro with DMA_BIT_MASK(32)
    
    Signed-off-by: Yang Hongyang<yanghy@cn.fujitsu.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

commit 50cf156af7dc68a44409bef636585ef88ebbab34
Author: Yang Hongyang <yanghy@cn.fujitsu.com>
Date:   Mon Apr 6 19:01:14 2009 -0700

    dma-mapping: replace all DMA_40BIT_MASK macro with DMA_BIT_MASK(40)
    
    Replace all DMA_40BIT_MASK macro with DMA_BIT_MASK(40)
    
    Signed-off-by: Yang Hongyang<yanghy@cn.fujitsu.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

commit 6a35528a8346f6e6fd32ed7e51f04d1fa4ca2c01
Author: Yang Hongyang <yanghy@cn.fujitsu.com>
Date:   Mon Apr 6 19:01:13 2009 -0700

    dma-mapping: replace all DMA_64BIT_MASK macro with DMA_BIT_MASK(64)
    
    Replace all DMA_64BIT_MASK macro with DMA_BIT_MASK(64)
    
    Signed-off-by: Yang Hongyang<yanghy@cn.fujitsu.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

commit 811158b147a503fbdf9773224004ffd32002d1fe
Merge: 4e76c5c... b26e0ed...
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Fri Apr 3 15:24:35 2009 -0700

    Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial
    
    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (28 commits)
      trivial: Update my email address
      trivial: NULL noise: drivers/mtd/tests/mtd_*test.c
      trivial: NULL noise: drivers/media/dvb/frontends/drx397xD_fw.h
      trivial: Fix misspelling of "Celsius".
      trivial: remove unused variable 'path' in alloc_file()
      trivial: fix a pdlfush -> pdflush typo in comment
      trivial: jbd header comment typo fix for JBD_PARANOID_IOFAIL
      trivial: wusb: Storage class should be before const qualifier
      trivial: drivers/char/bsr.c: Storage class should be before const qualifier
      trivial: h8300: Storage class should be before const qualifier
      trivial: fix where cgroup documentation is not correctly referred to
      trivial: Give the right path in Documentation example
      trivial: MTD: remove EOL from MODULE_DESCRIPTION
      trivial: Fix typo in bio_split()'s documentation
      trivial: PWM: fix of #endif comment
      trivial: fix typos/grammar errors in Kconfig texts
      trivial: Fix misspelling of firmware
      trivial: cgroups: documentation typo and spelling corrections
      trivial: Update contact info for Jochen Hein
      trivial: fix typo "resgister" -> "register"
      ...

commit 877d03105d04b2c13e241130277fa69c8d2564f0
Author: Nick Andrew <nick@nick-andrew.net>
Date:   Mon Jan 26 11:06:57 2009 +0100

    trivial: Fix misspelling of firmware
    
    Fix misspelling of firmware.
    
    Signed-off-by: Nick Andrew <nick@nick-andrew.net>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>

commit 1383bdb98c01bbd28d72336d1bf614ce79114d29
Author: David S. Miller <davem@davemloft.net>
Date:   Sun Mar 29 01:39:49 2009 -0700

    tg3: Add GRO support.
    
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 0d2a5068aaa238eba971784585e44130db6d4759
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Wed Feb 25 14:40:42 2009 +0000

    tg3: Update copyright and version
    
    This patch updates the copyright to 2009 and updates the version number
    to 3.98.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit a6f6cb1cf8ba54efdbbbf61b5b4345b0246da42f
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Wed Feb 25 14:27:43 2009 +0000

    tg3: Add version reporting for hardware selfboot
    
    This patch adds version reporting for hardware selfboot.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Benjamin Li <benli@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 7fd764455a13f4d9b37c9b908f07d0758f11d3c5
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Wed Feb 25 14:27:20 2009 +0000

    tg3: Add DASH firmware version reporting
    
    This patch adds code to report the DASH firmware version.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Benjamin Li <benli@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit ff3a7cb25217bddcefd20e72af08a65481db4096
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Wed Feb 25 14:26:58 2009 +0000

    tg3: Add legacy bootcode version decoding
    
    This patch adds code to obtain the bootcode version for versions
    of bootcode that do not use the new method.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Benjamin Li <benli@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit acd9c119cc663860fff4f1445ed0f87d82378d99
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Wed Feb 25 14:26:33 2009 +0000

    tg3: Refactor firmware version routines
    
    This patch reorganizes the firmware version routines in preparation for
    the following patches.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Benjamin Li <benli@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 6d348f2c1e0bb1cf7a494b51fc921095ead3f6ae
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Wed Feb 25 14:25:52 2009 +0000

    tg3: Eliminate tg3_nvram_read_swab()
    
    The remaining uses of tg3_nvram_read_swab() either intended to read the
    data from NVRAM exactly as tg3_nvram_read_be32() did or hide deeper
    interpretations of the data.  For the former case, a direct replacement
    of tg3_nvram_read_swab() with tg3_nvram_read_be32() is in order.  For
    the latter case, we remove tg3_nvram_read_swab() and document what the
    code is really doing.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Benjamin Li <benli@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit a9dc529dcd5c541c51cb2ba09bff99580361c576
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Wed Feb 25 14:25:30 2009 +0000

    tg3: Correct NVRAM stream endian notations
    
    Any software requesting NVRAM data as it exists on NVRAM is necessarily
    requesting that the results be returned as a bytestream.  A bytestream
    data read in from the device can also be thought to be in big endian
    format.  Therefore, all the LE notations in the driver are mislabeled.
    This patch converts all LE notations to BE notations, carefully
    evaluating the surrounding code in the process.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Benjamin Li <benli@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit e4f341103e4a2b35f56a0f89802f1b1448e8d04b
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Wed Feb 25 14:25:00 2009 +0000

    tg3: Invert nvram_read() and nvram_read_swab()
    
    This patch removes the blind byteswap of NVRAM data as it is read in.
    To preserve the logic at the call sites, this patch also inverts every
    call to tg3_nvram_read() and tg3_nvram_read_swab().  The call swap gets
    confusing within tg3_nvram_read_le() (LE is a misnomer), but the reader
    should be able to convince himself / herself that the resulting behavior
    is still unchanged.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Benjamin Li <benli@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit ffbcfed441b9ba74ce77f215eed6925f6a0b82a3
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Wed Feb 25 14:24:28 2009 +0000

    tg3: Eliminate nvram routine forward declarations
    
    This patch moves all NVRAM routines earlier in the source file to
    eliminate forward declarations.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Benjamin Li <benli@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 844b3eed8a9efffa4225c811b989c8ff41691a78
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Wed Feb 25 14:23:56 2009 +0000

    tg3: Refine tg3_vlan_rx_register()
    
    tg3_vlan_rx_register() touches the hardware if netif_running() returns
    false.  This patch fixes the problem.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Benjamin Li <benli@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 7e5856bd9644e2299adbf5d0a8916f9cc56f1f36
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Wed Feb 25 14:23:01 2009 +0000

    tg3: Update ethtool set_settings error checks
    
    The ethtool interface has acquired some new enumerations since the
    tg3 driver's tg3_set_settings() error checking code was written.  The
    error checking code is no longer complete.  This patch rewrites the
    error checking so that it is future-proofed.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Benjamin Li <benli@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit f7b493e02101bb5a0a69a91a8b4b7b002cd60eaf
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Wed Feb 25 14:21:52 2009 +0000

    tg3: Drop non-VLAN rx pkts larger than the MTU
    
    The hardware's MTU is configured so that it will accept packets whose
    VLAN tag is left inline.  This means that the hardware will also accept
    other packets larger than the desired MTU size.  This patch checks for
    and discards packets that are larger than the requested MTU but are not
    VLAN tagged frames.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Benjamin Li <benli@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit a6435f3a53746a0eb687a9f636cf1941f35f935e
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Wed Feb 25 14:21:20 2009 +0000

    tg3: Fix 5906 link problems
    
    Commit 6833c043f9fc03696fde623914c4a0277df2a0bc introduced the phy
    auto-powerdown capability.  While the APD feature only works for 5761
    and 5784 asic revisions, the (harmless portion of the) code was applied
    to all 5705 and newer devices.  However, the 5906 phy departs from the
    usual design.  This commit was interfering with the 5906's ability to
    negotiate link against some switches.  This patch corrects the problem.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Benjamin Li <benli@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit e70049b9e74267dd47e1ffa62302073487afcb48
Merge: d18921a... f7e603a...
Author: David S. Miller <davem@davemloft.net>
Date:   Tue Feb 24 03:50:29 2009 -0800

    Merge branch 'master' of /home/davem/src/GIT/linux-2.6/

commit f72b534961ac38dde17824d7693292eeaadf10e8
Author: Roel Kluin <roel.kluin@gmail.com>
Date:   Wed Feb 18 17:42:42 2009 -0800

    TG3: &&/|| confusion
    
    phyid Can't be both TG3_PHY_OUI_1 and TG3_PHY_OUI_2 and TG3_PHY_OUI_3.
    
    Signed-off-by: Roel Kluin <roel.kluin@gmail.com>
    Acked-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 5e30589521518bff36fd2638b3c3d69679c50436
Merge: ac178ef... d2f8d7e...
Author: David S. Miller <davem@davemloft.net>
Date:   Sat Feb 14 23:12:00 2009 -0800

    Merge branch 'master' of /home/davem/src/GIT/linux-2.6/
    
    Conflicts:
    	drivers/net/wireless/iwlwifi/iwl-agn.c
    	drivers/net/wireless/iwlwifi/iwl3945-base.c

commit d4675b52a933831d4901217564cba5a434ddd922
Author: Roel Kluin <roel.kluin@gmail.com>
Date:   Thu Feb 12 16:33:27 2009 -0800

    TG3: limit reaches -1
    
    With while (limit--) { ... } limit reaches -1, so 0 means success.
    
    Signed-off-by: Roel Kluin <roel.kluin@gmail.com>
    Acked-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 3d16543d3235fefca351c10b30c1cca6536f2569
Author: Francois Romieu <romieu@fr.zoreil.com>
Date:   Mon Jan 19 16:56:50 2009 -0800

    tg3: remove extra casting
    
    Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 288379f050284087578b77e04f040b57db3db3f8
Author: Ben Hutchings <bhutchings@solarflare.com>
Date:   Mon Jan 19 16:43:59 2009 -0800

    net: Remove redundant NAPI functions
    
    Following the removal of the unused struct net_device * parameter from
    the NAPI functions named *netif_rx_* in commit 908a7a1, they are
    exactly equivalent to the corresponding *napi_* functions and are
    therefore redundant.
    
    Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
    Acked-by: Neil Horman <nhorman@tuxdriver.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 9e9fd12dc0679643c191fc9795a3021807e77de4
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Mon Jan 19 16:57:45 2009 -0800

    tg3: Fix firmware loading
    
    This patch modifies how the tg3 driver handles device firmware.
    
    The patch starts by consolidating David Woodhouse's earlier patch under
    the same name.  Specifically, the patch moves the request_firmware call
    into a separate tg3_request_firmware() function and calls that function
    from tg3_open() rather than tg3_init_one().
    
    The patch then goes on to limit the number of devices that will make
    request_firmware calls.  The original firmware patch unnecessarily
    requested TSO firmware for devices that did not need it.  This patch
    reduces the set of devices making TSO firmware patches to approximately
    the following device set : 5703, 5704, and 5705.
    
    Finally, the patch reduces the effects of a request_firmware() failure.
    For those devices that are requesting TSO firmware, the driver will turn
    off the TSO capability.  If TSO firmware becomes available at a later
    time, the device can be closed and then opened again to reacquire the
    TSO capability.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 077f849de42e58172e25ccb24df4c1a13e82420c
Author: Jaswinder Singh Rajput <jaswinderrajput@gmail.com>
Date:   Sun Jan 4 16:11:25 2009 -0800

    firmware: convert tg3 driver to request_firmware()
    
    Firmware blob looks like this...
            u8 firmware_major
            u8 firmware_minor
            u8 firmware_fix
            u8 pad
            __be32 start_address
            __be32 length (total, including BSS sections to be zeroed)
            data... (in __be32 words, which is native for the firmware)
    
    Signed-off-by: Jaswinder Singh Rajput <jaswinderrajput@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 908a7a16b852ffd618a9127be8d62432182d81b4
Author: Neil Horman <nhorman@tuxdriver.com>
Date:   Mon Dec 22 20:43:12 2008 -0800

    net: Remove unused netdev arg from some NAPI interfaces.
    
    When the napi api was changed to separate its 1:1 binding to the net_device
    struct, the netif_rx_[prep|schedule|complete] api failed to remove the now
    vestigual net_device structure parameter.  This patch cleans up that api by
    properly removing it..
    
    Signed-off-by: Neil Horman <nhorman@tuxdriver.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit d3d317092b58a6df1d31a4ca90cdb9d2bd4ebffa
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Sun Dec 21 20:21:52 2008 -0800

    tg3: Update version to 3.97
    
    This patch updates the version number to 3.97.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Benjamin Li <benli@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit aa10f27d99410cff9145bf91b6efc884c7a4871c
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Sun Dec 21 20:21:18 2008 -0800

    tg3: tg3.h cleanups
    
    This patch cleans up the tg3 header file by removing the preprocessor
    definitions for standard PCI configuration space registers.  The driver
    should be using the standard definitions when needed.  The patch
    continues by removing redundant PHY related definitions and reorganizes
    some of the remaining entries.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Benjamin Li <benli@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 69fc405318967c7913e5b55cf3906250a26b49d0
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Sun Dec 21 20:19:57 2008 -0800

    tg3: Remove unused cfgspc device members
    
    This patch removes the pci_bist and pci_hdr_type members from the
    device structure and removes the code that references them.  They are
    not really used.
    
    The patch rounds out the changes by moving the pci_cmd member to plug
    a structure hole that would have been created.  On 32-bit systems, this
    movement removes a subsequent structure hole later in the structure. On
    64-bit systems though, the movement merely consolidates two holes into
    one larger hole.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Benjamin Li <benli@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 027455adacdc142cc018e555ce391014fa227e70
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Sun Dec 21 20:19:30 2008 -0800

    tg3: Cleanup IPV6 LSO
    
    This patch attempts to make the relationship between IPV6 checksum
    offload and IPV6 LSO more obvious.  The patch also toggles a bit
    needed for IPV6 LSO on 5785 and 57780 devices.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Benjamin Li <benli@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 2023276ebf074a01eb56f38ed4d04deef1deee67
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Sun Dec 21 20:18:56 2008 -0800

    tg3: WOL fixes
    
    The first hunk of this patch inverts a flag that was accidentally
    toggled as part of commit 0a459aac9d151c2e36ec65723b9b845b24c5cbc3
    ("tg3: Allow WOL for phylib controlled Broadcom phys").
    
    The second hunk of the patch removes the call to
    device_may_wakeup() in the 5906 config detection path.  At the
    point of the call, the driver shouldn't be querying for WOL
    capability.  It should be detecting and setting it.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Benjamin Li <benli@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit bc02ff95fe4ebd3e5ee7455c0aa6f76ebe39ebca
Author: Steve Glendinning <steve.glendinning@smsc.com>
Date:   Tue Dec 16 02:00:48 2008 -0800

    net: Refactor full duplex flow control resolution
    
    These 4 drivers have identical full duplex flow control resolution
    functions.  This patch changes them all to use one common function.
    
    The function in question decides whether a device should enable TX and
    RX flow control in a standard way (IEEE 802.3-2005 table 28B-3), so this
    should also be useful for other drivers.
    
    Signed-off-by: Steve Glendinning <steve.glendinning@smsc.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit e18ce3465477502108187c6c08b6423fb784a313
Author: Steve Glendinning <steve.glendinning@smsc.com>
Date:   Tue Dec 16 02:00:00 2008 -0800

    net: Move flow control definitions to mii.h
    
    flags used within drivers for indicating tx and rx flow control are
    defined in 4 drivers (and probably more), move these constants to mii.h.
    
    The 3 SMSC drivers use the same constants (FLOW_CTRL_TX), but TG3 uses
    TG3_FLOW_CTRL_TX, so this patch also renames the constants within TG3.
    
    Signed-off-by: Steve Glendinning <steve.glendinning@smsc.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit e245a3855eec42127b722ed9688a49ec3f3c9a27
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Fri Nov 21 17:23:26 2008 -0800

    tg3: Update version to 3.96
    
    This patch updates the version number to 3.96.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 321d32a052d6b5f71111ebad4fbebea5577f8974
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Fri Nov 21 17:22:19 2008 -0800

    tg3: Add 57780 support
    
    This patch adds support for the 57780 ASIC revision.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 22435849a6dcde2ce10d1870aba461a54e347fe3
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Fri Nov 21 17:21:13 2008 -0800

    tg3: Allow GPHY powerdown on 5761
    
    The ENABLE_APE flag tells the driver whether or not the device has an
    Application Processing Engine (APE).  The APE does not need the PHY to
    be powered unless it is running management firmware.  For backwards
    compatibility, management firmware will still set the ENABLE_ASF bit.
    Consequently, there is no reason to consider the ENABLE_APE flag when
    deciding whether or not to power down the phy.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit d5fe488a7b59e41b98b91137805159466b7b49c2
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Fri Nov 21 17:20:32 2008 -0800

    tg3: Embrace pci_ioremap_bar()
    
    Per Dave Miller's suggestion, replace the remaining ioremap_nocache()
    call with pci_ioremap_bar().  Remove the two IORESOURCE_MEM checks as
    they are redundant.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit dfe00d7d890134f9cafda49e3e60e6ce27af91ed
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Fri Nov 21 17:19:41 2008 -0800

    tg3: Extract FW ver from alt NVRAM formats
    
    This patch extracts the bootcode firmware version from the alternate
    selfboot patch NVRAM format.  This format is used on the 5784, 5761 and
    some newer devices.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 6833c043f9fc03696fde623914c4a0277df2a0bc
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Fri Nov 21 17:18:59 2008 -0800

    tg3: Enable GPHY APD on select devices
    
    GPHY Autopowerdown (APD) is a way to save power when energy is not
    detected on the wire.  At the moment, only the 5784 and 5761 are
    capable of enabling this mode.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 5e7dfd0fb94abed04f59481d1ce0cc06a892048a
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Fri Nov 21 17:18:16 2008 -0800

    tg3: Prevent corruption at 10 / 100Mbps w CLKREQ
    
    This patch disables CLKREQ at 10Mbps and 100Mbps to workaround a TX BD
    corruption issue.  This problem only affects the 5784 and 5761 (and
    57780 AX) ASIC revisions.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 52f4490c3b6dcb1e8dec7ff9f1c35f09bd7c136f
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Fri Nov 21 17:17:04 2008 -0800

    tg3: Qualify use of tp->pcix_cap
    
    This patch makes sure the device is a PCIX device before attempting to
    use the pcix_cap device structure member.  This is prep work for the
    following patch.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit ad8292681a629cdb16bb19ee7d721b457c32a23a
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Fri Nov 21 17:16:16 2008 -0800

    tg3: Use NET_IP_ALIGN
    
    This patch replaces hardcoded 2's with the NET_IP_ALIGN constant or
    TG3_RAW_IP_ALIGN where appropriate.  Some platforms can redefine the
    NET_IP_ALIGN definition to zero if unaligned DMA transfers cost more
    than the IP header alignment gains.  This patch represents a
    performance improvement when using the 5701 on these platforms.
    The copy path can be avoided.
    
    TG3_RAW_IP_ALIGN is used in cases where we always want to align the
    IP header on dword boundaries.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 008298231abbeb91bc7be9e8b078607b816d1a4a
Author: Stephen Hemminger <shemminger@vyatta.com>
Date:   Thu Nov 20 20:14:53 2008 -0800

    netdev: add more functions to netdevice ops
    
    This patch moves neigh_setup and hard_start_xmit into the network device ops
    structure. For bisection, fix all the previously converted drivers as well.
    Bonding driver took the biggest hit on this.
    
    Added a prefetch of the hard_start_xmit in the fast path to try and reduce
    any impact this would have.
    
    Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 7c7d64b8c00bcf9519e5ec38368bc7afdc185c51
Author: Stephen Hemminger <shemminger@vyatta.com>
Date:   Wed Nov 19 22:25:36 2008 -0800

    tg3: convert to net_device_ops
    
    Convert this driver to network device ops.
    
    Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit fb28ad35906af2f042c94e2f9c0f898ef9acfa37
Author: Kay Sievers <kay.sievers@vrfy.org>
Date:   Mon Nov 10 13:55:14 2008 -0800

    net: struct device - replace bus_id with dev_name(), dev_set_name()
    
    Acked-by: Marcel Holtmann <marcel@holtmann.org>
    Acked-by: Greg Kroah-Hartman <gregkh@suse.de>
    Signed-off-by: Kay Sievers <kay.sievers@vrfy.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit babcda74e9d96bb58fd9c6c5112dbdbff169e695
Author: David S. Miller <davem@davemloft.net>
Date:   Mon Nov 3 21:11:17 2008 -0800

    drivers/net: Kill now superfluous ->last_rx stores.
    
    The generic packet receive code takes care of setting
    netdev->last_rx when necessary, for the sake of the
    bonding ARP monitor.
    
    Drivers need not do it any more.
    
    Some cases had to be skipped over because the drivers
    were making use of the ->last_rx value themselves.
    
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit fa228b3fcb724ce2281a61737e09a8afa4fed542
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Mon Nov 3 16:58:53 2008 -0800

    tg3: Update version to 3.95
    
    This patch updates the version to 3.95.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit fcb389dfd842be54545cb436b3437f07da10115c
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Mon Nov 3 16:55:44 2008 -0800

    tg3: 5785 enhancements
    
    This patch refines support for the 5785 device.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 9c61d6bc56bf0a5fb1ebfcf4c168cc5ce30e153b
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Mon Nov 3 16:54:56 2008 -0800

    tg3: Refine phylib support
    
    This patch refines the phylib support in the tg3 driver.  The patch does
    the following things :
    
    * Rename tg3_mdio_config() to tg3_mdio_config_5785().  The 5785 will be
      the only device that will use it so the name might as well reflect
      that.
    * Fix a memory leak if mdiobus_register() fails.
    * Add code to deal with phy device detection failures.
    * Add code to correct the supported list of phy features based on the
      MAC <=> PHY interface.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 0a459aac9d151c2e36ec65723b9b845b24c5cbc3
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Mon Nov 3 16:54:15 2008 -0800

    tg3: Allow WOL for phylib controlled Broadcom phys
    
    This patch allows WOL to be enabled for Broadcom phys under phylib
    control.  The only exception is the AC131, which has a completely
    different register set.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 05ac4cb7dff4515447dce6e9a56c4de6b7e426d5
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Mon Nov 3 16:53:46 2008 -0800

    tg3: Refine power management and WOL code
    
    Commit 12dac0756d357325b107fe6ec24921ec38661839 ("tg3: adapt tg3 to
    use reworked PCI PM code") introduced the new PCI PM API to the tg3
    driver.  The patch was understandably conservative, so this patch
    elaborates on that work.
    
    The patch starts by creating a single point in tg3_set_power_state()
    to decide whether or not to enable WOL.  The rest of the code in
    tg3_set_power_state() was then pivoted to use the result of this
    decision.
    
    The patch then makes sure the device is allowed to wakeup before
    reporting whether or not WOL is currently enabled.  The final hunks of
    the patch consolidate where the WOL capability and WOL enabled flags
    are set to a single location.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit df59c9403557397aafbe291533d113b752da7661
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Mon Nov 3 16:52:56 2008 -0800

    tg3: Move phylib report to end of tg3_init_one
    
    Currently, phylib reports appear with a eth%d prefix.  Move the line
    after register_netdev() and place it alongside the other informative
    messages.  Update nearby informative messages accordingly.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit b2b98d4acc58a6f36b731e666c6ebd901cd6a27e
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Mon Nov 3 16:52:32 2008 -0800

    tg3: Do not enable APE on bcm5700
    
    With older versions of the NVRAM format, the driver may mistakenly
    determine that APE is enabled.  Make sure this doesn't happen by
    restricting the ENABLE_APE check to devices known to have more
    recent NVRAM image formats.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit bcb37f6cb57e565e7bd342272652c3a50cf88761
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Mon Nov 3 16:52:09 2008 -0800

    tg3: Reclaim TG3_FLG3_5761_5784_AX_FIXES flag
    
    This patch reclaims the TG3_FLG3_5761_5784_AX_FIXES flag.  It only
    used twice in non-fast paths.  This patch also consolidates some other
    places where specific 5784 AX chip revisions can be generalized.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 3f007891da0ad3d9192e9aa13ce4e3aaf20c33fa
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Mon Nov 3 16:51:36 2008 -0800

    tg3: Preserve LAA when device control is released
    
    This patch moves the __tg3_set_mac_addr() function earlier in the file
    listing, to avoid a function prototype, and calls the function to
    restore the LAA after a driver unload chip reset.  With this code in
    place, the administrator can wake the machine using the LAA.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit b2aee1545dc3c05c8d5cf116de1e92907e98009b
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Mon Nov 3 16:51:11 2008 -0800

    tg3: Preserve DASH connectivity when WOL enabled
    
    DASH firmware runs on the APE side of the chip, but it requires a few MAC
    to be programmed correctly.
    
    When WOL is enabled and management firmware is disabled, incoming
    packets are evaluated and discarded at the chip's rule processor.
    When management firmware is enabled, the hardware must be informed that
    there are agents further up the stack that still use the incoming
    frames.  Normally management firmware will configure the MAC correctly
    on its own, but there can be cases where the setting could get clobbered
    by the driver.  The first hunk of this patch preserves this setting.
    
    The second hunk of this patch wipes out the driver present signature of
    the APE memory space.  By doing so, the DASH firmware can assume
    driver absent behavior.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 63532394af307795ea637a283bd1fd057f5dfcea
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Mon Nov 3 16:49:57 2008 -0800

    tg3: Use pci_ioremap_bar()
    
    This patch replaces the existing APE register mapping code with a call
    to pci_ioremap_bar().  The code that maps the main device register space
    did not undergo a similar change because the information derived from
    the pci_resource_start() and pci_resource_len() is still used to
    populate the (optional) mem_start and mem_end netdevice members.
    Replace hardcoded constants where appropriate.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit c88e668b52c8cd8bc55b6734c7dfbb0cb005d445
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Mon Nov 3 16:49:18 2008 -0800

    tg3: Add 5761S support
    
    This patch adds support for the 5761S chip variants.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit e174961ca1a0b28f7abf0be47973ad57cb74e5f0
Author: Johannes Berg <johannes@sipsolutions.net>
Date:   Mon Oct 27 15:59:26 2008 -0700

    net: convert print_mac to %pM
    
    This converts pretty much everything to print_mac. There were
    a few things that had conflicts which I have just dropped for
    now, no harm done.
    
    I've built an allyesconfig with this and looked at the files
    that weren't built very carefully, but it's a huge patch.
    
    Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 298cf9beb9679522de995e249eccbd82f7c51999
Author: Lennert Buytenhek <buytenh@marvell.com>
Date:   Wed Oct 8 16:29:57 2008 -0700

    phylib: move to dynamic allocation of struct mii_bus
    
    This patch introduces mdiobus_alloc() and mdiobus_free(), and
    makes all mdio bus drivers use these functions to allocate their
    struct mii_bus'es dynamically.
    
    Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Acked-by: Andy Fleming <afleming@freescale.com>

commit 18ee49ddb0d242ed1d0e273038d5e4f6de7379d3
Author: Lennert Buytenhek <buytenh@wantstofly.org>
Date:   Wed Oct 1 15:41:33 2008 +0000

    phylib: rename mii_bus::dev to mii_bus::parent
    
    In preparation of giving mii_bus objects a device tree presence of
    their own, rename struct mii_bus's ->dev argument to ->parent, since
    having a 'struct device *dev' that points to our parent device
    conflicts with introducing a 'struct device dev' representing our own
    device.
    
    Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Acked-by: Andy Fleming <afleming@freescale.com>

commit 638266f7e879e34de4a4635049c15f5a58505e75
Author: David S. Miller <davem@davemloft.net>
Date:   Thu Sep 11 15:45:19 2008 -0700

    tg3: Fix DMA mapping leak in tigon3_dma_hwbug_workaround().
    
    Noticed by Michael Chan.
    
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 90079ce89aa65e17f36ac2b09110720c51d874f4
Author: David S. Miller <davem@davemloft.net>
Date:   Thu Sep 11 04:52:51 2008 -0700

    tg3: Use SKB DMA helper functions for TX.
    
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 23197916c447a1623d196e6547781180905f0bb2
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Fri Aug 15 14:11:19 2008 -0700

    tg3: Update version to 3.94
    
    This patch updates the version number to 3.94.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 816f8b86621000fc82e16ae5f172164de761d5eb
Author: Stefan Buehler <stbuehler@web.de>
Date:   Fri Aug 15 14:10:54 2008 -0700

    tg3: fix 64 bit counter for ethtool stats
    
    Ethtool stats are 64-bits in length.  net_device_stats members are
    unsigned long types.  When gathering information for
    a get_ethtool_stats call, the driver will call a driver-private,
    inlined get_stat64() function, which returns an unsigned long value.
    This call will inadvertently mask off the upper 32-bits of a stat on
    32-bit machines.
    
    This patch defines a new get_estat() inline function and modifies the
    ESTAT_ADD() macro to use it.
    
    Signed-off-by: Stefan Buehler <stbuehler@web.de>
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 4ba526ced990f4d61ee8d65fe8a6f0745e8e455c
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Fri Aug 15 14:10:04 2008 -0700

    tg3: Fix firmware event timeouts
    
    The git commit 7c5026aa9b81dd45df8d3f4e0be73e485976a8b6 ("tg3: Add
    link state reporting to UMP firmware") introduced code that waits for
    previous firmware events to be serviced before attempting to submit a
    new event.  Unfortunately that patch contained a bug that cause the
    driver to wait 2.5 seconds, rather than 2.5 milliseconds as intended.
    This patch fixes that bug.
    
    This bug revealed that not all firmware versions service driver events
    though.  Since we do not know which versions of the firmware do and don't
    service these events, the driver needs some way to minimize the effects
    of the delay.  This patch solves the problem by recording a jiffies
    timestamp when it submits an event to the hardware.  If the jiffies
    counter shows that 2.5 milliseconds have already passed, a wait is not
    needed and the driver can proceed to submit a new event.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit bc7959b2cbb57393b625b423c73e6fd07610257f
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Fri Aug 15 14:08:55 2008 -0700

    tg3: Turn off ASF "driver alive" heartbeats for APE
    
    The ENABLE_ASF flag is set when DASH is enabled on the NIC, but DASH
    does not run on the RX CPU.  Instead it runs on the APE.
    Consequently, the driver does not need to send "driver alive" updates
    to the RX CPU when the APE is present.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 3bda12589646caa22b2ed4ef7cf82d17ea59d7a6
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Fri Aug 15 14:08:22 2008 -0700

    tg3: Preserve register settings for DASH
    
    Broadcom's DASH (Desktop and mobile Architecture for System Hardware)
    implementation requires that the driver preserve particular register
    settings.  If the driver does not preserve them, communication with
    the DASH firmware will be lost.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 731fd79c133dc04cabee17ecfa7661189a8df5c8
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Fri Aug 15 14:07:51 2008 -0700

    tg3: Refine APE status check
    
    Recently, more status bits have been added to the APE status register.
    This patch refines the status register check so that the driver can
    send more events than it would have otherwise.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 77b483f132ba25edf4ef455dd87a91ab7bbf4170
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Fri Aug 15 14:07:24 2008 -0700

    tg3: Add APE register access locking
    
    If the driver resets the chip while the APE is performing a register
    access, that register access will never complete and the APE will hang
    indefinitely.  To prevent this race condition, the driver must acquire
    an APE mutex before resetting the chip.  The APE will not attempt a
    register access until it acquires this lock.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 2f751b67a8be698cec52f786910ef4f0beffe9a7
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Mon Aug 4 23:17:34 2008 -0700

    tg3: Fix 'scheduling while atomic' errors
    
    This patch fixes the 'scheduling while atomic' errors introduced by
    commit 12dac0756d357325b107fe6ec24921ec38661839 ("tg3: adapt tg3 to
    use reworked PCI PM code").
    
    The first hunk of the patch removes an unnecessary
    tg3_set_power_state() call.  The chip will already be in the D0 state
    either due to a chip reset or through a previous call to
    tg3_set_power_state().
    
    The second hunk of the patch moves the tg3_set_power_state() call
    outside the critical section guarded by tg3_full_lock() and
    tg3_full_unlock() functions.  The power state of the device is and
    should be outside the lock's domain and all other
    tg3_set_power_state() calls support this.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 12dac0756d357325b107fe6ec24921ec38661839
Author: Rafael J. Wysocki <rjw@sisk.pl>
Date:   Wed Jul 30 16:37:33 2008 -0700

    tg3: adapt tg3 to use reworked PCI PM code
    
    Adapt the tg3 driver to use the reworked PCI PM and make it use the
    exported PCI PM core functions instead of accessing the PCI PM registers
    directly by itself.
    
    Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 65b53e4cc90e59936733b3b95b9451d2ca47528d
Merge: 788c0a5... 2e761e0...
Author: David S. Miller <davem@davemloft.net>
Date:   Tue Jun 10 02:22:26 2008 -0700

    Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
    
    Conflicts:
    
    	drivers/net/tg3.c
    	drivers/net/wireless/rt2x00/rt2x00dev.c
    	net/mac80211/ieee80211_i.h

commit 1b84d9462a93ccfa99f725aad744ab4d1af8402b
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Mon Jun 9 15:41:33 2008 -0700

    tg3: Update version to 3.92.1
    
    This patch increments the version to 3.92.1.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 5f0c4a3cb6fda7c505f8c916b54ea90205feed68
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Mon Jun 9 15:41:12 2008 -0700

    tg3: Fix 5761 WOL
    
    On 5761 non-e devices, two problems prevent the administrator from
    overriding the WOL settings in the device's NVRAM.
    
    The first problem is that GPIO 0 and GPIO 2 have been swapped.  This
    change prevented the administrator from turning on WOL when it is
    disabled in NVRAM.  The fix is to add a new path for the 5761 that
    swaps the two GPIOs in the code as well.
    
    The second problem is that GPIO 1 could not be toggled by the driver
    because the GPIO is shared with the debug UART GPIO.  This will prevent
    the administrator from being able to turn WOL off if it was enabled in
    NVRAM.  The fix is to always disable the debug UART after a GRC reset.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 0ba11fb307a4f18c11df6f5f255158ce055a2a16
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Mon Jun 9 15:40:26 2008 -0700

    tg3: Fix a flags typo
    
    This patch fixes a problem where the TG3_FLAG_10_100_ONLY flag was
    testing against the wrong flags variable.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 2bd3ed0479c35f7c8dadecf72b725ca0c20ea015
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Mon Jun 9 15:39:55 2008 -0700

    tg3: Fix 5714S / 5715S / 5780S link failures
    
    The git commit ef167e27039eeaea6d3cdd5c547b082e89840bdd entitled
    "Fix supporting flowctrl code" introduced a bug that prevents 5714S,
    5715S and 5780S devices from falling back to a forced link mode.  The
    problem is that the added flow control check will always fail if flow
    control is set to autoneg and either RX or TX (or both) flow control
    is enabled.  The driver defaults to setting flow control to autoneg
    and advertises both RX and TX flow control.
    
    The fix is to remove the errant check.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit a5b17df04c4ad8f25fc598fce37fccb4b387c94c
Merge: b79eeeb... c03571a...
Author: David S. Miller <davem@davemloft.net>
Date:   Thu May 29 03:31:03 2008 -0700

    Merge branch 'upstream-next-davem' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6

commit bb9122b829e960f4e242c04c2b38c12efb37757b
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Sun May 25 23:51:01 2008 -0700

    tg3: Update version to 3.93
    
    This patch increments the version to 3.93.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: Benjamin Li <benli@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit a9daf36746b1fb5c2db8d164ca70c30c63a0d7b2
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Sun May 25 23:49:44 2008 -0700

    tg3: Add shmem options.
    
    This patch adds some options obtained through shared memory.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: Benjamin Li <benli@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 57e6983cbde91b4569b4014b933f3a16e12b99fd
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Sun May 25 23:48:31 2008 -0700

    tg3: Add 5785 ASIC revision
    
    This patch added the 5785 device ID and ASIC revision to the code.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: Benjamin Li <benli@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit b02fd9e3ac118037549baeb86fbe0718561db17f
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Sun May 25 23:47:41 2008 -0700

    tg3: Add libphy support.
    
    This patch introduces the libphy support.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: Benjamin Li <benli@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 158d7abdae85e9ac43d99780c372d79c119f7626
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Thu May 29 01:37:54 2008 -0700

    tg3: Add mdio bus registration
    
    This patch introduces code to register and unregister the tg3 mdio bus
    with the system.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: Benjamin Li <benli@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit dd47700310ff929b439223105364c9ee3db81511
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Sun May 25 23:45:58 2008 -0700

    tg3: Add TG3_FLG3_USE_PHYLIB
    
    This patch introduces the TG3_FLG3_USE_PHYLIB flag and applies it to
    some select places.  This work makes later patches a little easier to
    read.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: Benjamin Li <benli@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit f51f3562d1c7df6c5a4ffee2185d713e98e76aa0
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Sun May 25 23:45:08 2008 -0700

    tg3: Code cleanup.
    
    This patch applies cleanups that would otherwise clutter later
    patches.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: Benjamin Li <benli@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 95e2869adc13041baf3beecb97ab8e38c01525ae
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Sun May 25 23:44:14 2008 -0700

    tg3: Pure code movement.
    
    This patch moves some functions towards the top of the file to avoid
    unnecessary function prototypes.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: Benjamin Li <benli@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 855e1111f3806905b410b745e696fec4f5dac724
Author: Stephen Hemminger <shemminger@vyatta.com>
Date:   Wed Apr 16 16:37:28 2008 -0700

    tg3: remove unneeded semicolons
    
    Remove extraneous semicolons after switch and conditional statements.
    
    Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
    Signed-off-by: Jeff Garzik <jgarzik@redhat.com>

commit 920e37f76b19b4a3d8a1a3144cd6ee24e0e7f5b4
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Fri May 2 16:49:50 2008 -0700

    tg3: Update version to 3.92
    
    This patch updates the version number to 3.92.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 7c5026aa9b81dd45df8d3f4e0be73e485976a8b6
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Fri May 2 16:49:29 2008 -0700

    tg3: Add link state reporting to UMP firmware
    
    All variants of the 5714, 5715, and 5780 offer a feature called the
    "Universal Management Port".  This feature is implemented in firmware
    and is largely transparent to the driver, except...
    
    It turns out that the UMP firmware needs to know the current status
    of the link.  Because the firmware cannot touch the PHY registers while
    the driver is in control of the device, it needs the driver to report
    link status changes through an additional handshaking mechanism.
    Without this handshake, it has been observed in the field that the UMP
    firmware will not operate correctly.
    
    This patch implements the new handshake with the UMP firmware.  Since
    the handshake uses the same mechanism ASF heartbeats use, code was
    added to detect and wait for completion of a pending previous event.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 109115e1991824b88306b374b763d6857b292aeb
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Fri May 2 16:48:59 2008 -0700

    tg3: Fix ethtool loopback test for 5761 BX devices
    
    A CPMU related loopback test bug existed for AX revisions of the 5761.
    While that errata has been fixed, the CPMU still slows down the core
    clock too far to run the loopback test successfully.  This patch
    disables the CPMU LINK_SPEED mode just like we do with the AX
    revisions of the 5761 and all revisions of the 5784.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit fd1122a2593d0bbe19856e3943c859ebfe563583
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Fri May 2 16:48:36 2008 -0700

    tg3: Fix 5761 NVRAM sizes
    
    The 5761 NVRAM sizes assigned to the nvram_size member are half as big
    as they should be.  This patch corrects the NVRAM sizes and replaces
    the hardcoded constants with preprocessor constants for readability.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 8ef214288622bf523a3b3096958292a1c63132ad
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Fri May 2 16:47:53 2008 -0700

    tg3: Use constant 500KHz MI clock on adapters with a CPMU
    
    The MI clock is not configured correctly on adapters with the CPMU
    present.  The tg3 driver has code which statically sets the MI clock to
    be a fraction of the speed at which the core clock is running.
    However, the CPMU can change the adapter's core clock frequency based
    on operating conditions.  Consequently, the MI will run slow when the
    core's clock has been slowed down.
    
    There is a new 500KHz constant frequency clock available on adapters
    with a CPMU.  This patch removes the static core clock scaling and
    configures the MI clock to use this new 500KHz clock instead.
    
    Running the MI clock at slower speeds will not directly result in data
    corruption, but it does challenge the PHY read and write routine timeouts.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 801678c5a3b4c79236970bcca27c733f5559e0d1
Author: Hirofumi Nakagawa <hnakagawa@miraclelinux.com>
Date:   Tue Apr 29 01:03:09 2008 -0700

    Remove duplicated unlikely() in IS_ERR()
    
    Some drivers have duplicated unlikely() macros.  IS_ERR() already has
    unlikely() in itself.
    
    This patch cleans up such pointless code.
    
    Signed-off-by: Hirofumi Nakagawa <hnakagawa@miraclelinux.com>
    Acked-by: David S. Miller <davem@davemloft.net>
    Acked-by: Jeff Garzik <jeff@garzik.org>
    Cc: Paul Clements <paul.clements@steeleye.com>
    Cc: Richard Purdie <rpurdie@rpsys.net>
    Cc: Alessandro Zummo <a.zummo@towertech.it>
    Cc: David Brownell <david-b@pacbell.net>
    Cc: James Bottomley <James.Bottomley@HansenPartnership.com>
    Cc: Michael Halcrow <mhalcrow@us.ibm.com>
    Cc: Anton Altaparmakov <aia21@cantab.net>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Cc: Carsten Otte <cotte@de.ibm.com>
    Cc: Patrick McHardy <kaber@trash.net>
    Cc: Paul Mundt <lethal@linux-sh.org>
    Cc: Jaroslav Kysela <perex@perex.cz>
    Cc: Takashi Iwai <tiwai@suse.de>
    Acked-by: Mike Frysinger <vapier@gentoo.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

commit 78c6146f16d45f52c33ddb6b48c10fc6cfc53659
Author: Eric Dumazet <dada1@cosmosbay.com>
Date:   Thu Apr 24 23:33:06 2008 -0700

    tg3: sparse cleanup
    
    Fix the following sparse warning :
    
    drivers/net/tg3.c:4025:3: warning: context imbalance in 'tg3_restart_hw'
    - unexpected unlock
    
    Signed-off-by: Eric Dumazet <dada1@cosmosbay.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 41588ba1ae166eaba0a70abf2d7ff064ad9331d3
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Sat Apr 19 18:12:33 2008 -0700

    tg3: 5701 DMA corruption fix
    
    Herbert Xu's commit fb93134dfc2a6e6fbedc7c270a31da03fce88db9, entitled
    "[TCP]: Fix size calculation in sk_stream_alloc_pskb", has triggered a
    bug in the 5701 where the 5701 DMA engine will corrupt outgoing
    packets.  This problem only happens when the starting address of the
    packet matches a certain range of offsets and only when the 5701 is
    placed downstream of a particular Intel bridge.
    
    This patch detects the problematic bridge and if present, readjusts the
    starting address of the packet data to a dword aligned boundary.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 2de58e30db3f7e83592e22fb459dd6695b648889
Author: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Date:   Sat Apr 12 18:30:58 2008 -0700

    tg3: fix MMIO for PPC 44x platforms
    
    The driver stores the PCI resource addresses into 'unsigned long' variable
    before calling ioremap_nocache() on them. This warrants kernel oops when the
    registers are accessed on PPC 44x platforms which (being 32-bit) have PCI
    memory space mapped beyond 4 GB.
    
    The arch/ppc/ kernel has a fixup in ioremap() that creates an illusion that
    the PCI memory resource is mapped below 4 GB, but arch/powerpc/ code got rid
    of this trick, having instead CONFIG_RESOURCES_64BIT enabled.
    
    [ Bump driver version and release date -DaveM ]
    
    Signed-off-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit b2a5c19ca0315723cecb9489ff8b67c4f17367b4
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Thu Apr 3 21:44:44 2008 -0700

    [TG3]: Add PHY workaround for 5784
    
    The 5784 B step and newer chips require the PHY DSPs to be fine-tuned
    based on one-time programmable values stored in the chip.  This is
    essential to achieve optimal PHY operations especially when using
    long cables.  We also need to properly handle the 10Mbit RX bit in the
    CPMU_CTRL register during PHY reset.
    
    Update version to 3.89.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 7582a33557cc6dc42b4c6918c6e7f8e465b72a70
Author: David S. Miller <davem@davemloft.net>
Date:   Thu Mar 20 15:53:15 2008 -0700

    [TG3]: Fix build warning on sparc32.
    
    Sparc MAC address support should be protected consistently
    with CONFIG_SPARC, but there was a stray CONFIG_SPARC64
    case.
    
    Bump driver version and release date.
    
    Reported by Andrew Morton.
    
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 759afc31332aed66bde20743e7e2d1e47b08aaeb
Author: Stephen Hemminger <shemminger@vyatta.com>
Date:   Sat Feb 23 19:51:59 2008 -0800

    tg3: ethtool phys_id default
    
    When asked to blink LEDs the tg3 driver behaves when using:
    	ethtool -p ethX
    The default value for data is zero, and other drivers interpret this
    as blink forever (or at least a really long time).  The tg3 driver
    interprets this as blink once.  All drivers should have the same
    behaviour.
    
    Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
    Acked-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 79ea13ce07c951bb4d95471e7300baa0f1be9e78
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Thu Jan 24 02:06:46 2008 -0800

    NULL noise in drivers/net
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Jeff Garzik <jeff@garzik.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 255f97b3117cbe10b2493f7f12d66a81dfbcdf43
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Thu Dec 20 20:10:38 2007 -0800

    [TG3]: Update version to 3.87
    
    This patch updates the version number to 3.87.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit ef167e27039eeaea6d3cdd5c547b082e89840bdd
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Thu Dec 20 20:10:01 2007 -0800

    [TG3]: Fix supporting flowctrl code
    
    This patch does three things.  It modifies tg3_setup_flow_control() to
    use the administrator requested flow control settings if
    autonegotiation is turned off.  It slightly modifies the
    tg3_setup_fiber_mii_phy() function to account for this new use case.
    And finally, it does the same for tg3_setup_copper_phy().
    
    The copper modifications are more than a small multi-line change.  The
    new code makes an attempt to avoid a link renegotiation if the link is
    active at half duplex and the only difference between the current
    advertised settings and requested advertised settings is the
    flow control advertisements.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 5be73b471bbed9ca61ddfd952a2cb7701f94f034
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Thu Dec 20 20:09:29 2007 -0800

    [TG3]: Correct sw autoneg flow control advertisements
    
    This patch modifies the software autoneg code to use the administrator
    specified flow control parameters.  Since the autonegotiation code uses
    alternative flow control enumerations, the 1000-BaseX utility functions
    are used and code was added to convert the definitions to and from the
    alternate enumerations.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 82cd3d11f359763da445a7636ee683a922aaf025
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Thu Dec 20 20:09:00 2007 -0800

    [TG3]: Correct 5704S flowctrl advertisements
    
    This patch modifies the 5704S hardware autoneg code to use the
    administrator specified flow control parameters.  Since the 5704S uses
    device specific flow control enumerations, the 1000-BaseX utility
    functions are used and code was added to convert the definitions to and
    from the proprietary enumerations.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit c98f6e3be1d1b9bc9299d84da4f0b1ea9a50f392
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Thu Dec 20 20:08:32 2007 -0800

    [TG3]: Replace some magic 5704S constants
    
    This patch replaces magic values with preprocessor definitions for
    the sg_dig_ctrl and sg_dig_status registers.  This is preparatory work
    for the next patch.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit ba4d07a8483e6ec0de3194960f8aca862711454c
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Thu Dec 20 20:08:00 2007 -0800

    [TG3]: Add 1000T & 1000X flowctl adv helpers
    
    This patch adds two functions designed to convert abstract TX & RX
    flow control parameters to 1000-BaseT and 1000-BaseX autonegotiation
    advertisements.  Code that uses standard definitions which statically
    advertises TX & RX flow control has been replaced with code that
    configures the advertisements based on administrator dictated
    preferences.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 95937268b7c4c334a3d98f7177c7d5a00b74b2e7
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Thu Dec 20 20:06:19 2007 -0800

    [TG3]: Add 1000T & 1000X flowctrl resolvers
    
    This patch adds two new utility functions to resolve flow control.  One
    function resolves flow control based on 1000-BaseT register definitions.
    The other resolves flow control based on 1000-Base X register
    definitions.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 8d018621085b8d00511768c343d941676bd77ee9
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Thu Dec 20 20:05:44 2007 -0800

    [TG3]: Separate requested and actual flow control parameters
    
    This patch removes the TX and RX flow control flags from tg3_flags and
    adds two new flow control variables, flowctrl and active_flowctrl.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit d66453722873e1595b7934acbdcd5cdfa6982d6c
Author: Joe Perches <joe@perches.com>
Date:   Thu Dec 20 04:06:59 2007 -0800

    [TG3]: Use print_mac
    
    Signed-off-by: Joe Perches <joe@perches.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 286e310f94b9459f3fa975333781c969b1041522
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Mon Dec 17 23:00:31 2007 -0800

    [TG3]: Endianness bugfix.
    
    tg3_nvram_write_block_unbuffered() is reading data from nvram into
    allocated buffer before overwriting a part of it with user-supplied
    data.  Then it feeds the entire page back to nvram.  It should be
    storing the words it had read as little-endian, not as host-endian.
    Note that tg3_set_eeprom() does exactly that for padding the same
    data to full words before it gets passed down to tg3_nvram_write_block()
    and then to tg3_nvram_write_block_unbuffered().
    
    Moreover, when we get to sending the entire thing back to nvram, we
    go through it word-by-word, doing essentially
    	writel(swab32(le32_to_cpu(word)), ...)
    so if we want them to reach the card in host-independent endianness,
    we'd better really have all that buffer filled with fixed-endian.
    For user-supplied part we obviously do have that (it's an array of
    octets memcpy'd in), ditto for padding of user-supplied part to word
    boundaries (taken care of in tg3_set_eeprom()).  The rest of the
    buffer gets filled by tg3_nvram_write_block_unbuffered() and it would
    damn better be consistent with that (and with tg3_get_eeprom(), while
    we are at it - there we also convert the words read from nvram to
    little-endian before returning the buffer to user).
    
    The bug should get triggered on big-endian boxen when set_eeprom is done
    for less than entire page.  Then the words that should've been unaffected
    at all will actually get byteswapped in place in nvram.
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit b9fc7dc514566e9788c7f064bb08f8b6e2fe6f72
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Mon Dec 17 22:59:57 2007 -0800

    [TG3]: Endianness annotations.
    
    Fixed misannotations, introduced a new helper - tg3_nvram_read_le().
    It gets __le32 * instead of u32 * and puts there the value converted
    to little-endian.  A lot of callers of tg3_nvram_read() were doing
    that; converted them to tg3_nvram_read_le().
    
    At that point the driver is practically endian-clean; the only remaining
    place is an actual bug, AFAICS; will be dealt with in the next patch.
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 458c096ed787b2572303a7087d23bfab06b450be
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Mon Nov 12 21:23:21 2007 -0800

    [TG3]: Update version to 3.86
    
    This patch updates the version number to 3.86
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 3bebab591413929c405925a8fdd98f5b0d660e39
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Mon Nov 12 21:22:40 2007 -0800

    [TG3]: MII => TP
    
    This patch changes the PHY type reported through ethtool for copper
    devices from MII to TP.  The latter is more accurate.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit b5af7126ea7586eb8f030280c027611c42a6a9c7
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Mon Nov 12 21:22:02 2007 -0800

    [TG3]: Add A1 revs
    
    This patch adds the A1 revision of 5784, 5764, and 5761, and applies all
    previous bugfixes.  In places where the list of devices gets too long,
    the patch uses a new TG3_FLG3_5761_5784_AX_FIXES flag instead.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 5f5c51e3d473d8ddc0c32156c2b27e2fe92b9b57
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Mon Nov 12 21:19:37 2007 -0800

    [TG3]: Increase the PCI MRRS
    
    Previous devices hardcoded the PCI Maximum Read Request Size to 4K.  To
    better comply with the PCI spec, the hardware now defaults the MRRS to
    512 bytes.  This will yield poor driver performance if left untouched.
    This patch increases the MRRS to 4K on driver initialization.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit aa6c91fe5913faa2cd2a62de993a3130799412b1
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Mon Nov 12 21:18:04 2007 -0800

    [TG3]: Prescaler fix
    
    Internal hardware timers become inaccurate after link events.  Clock
    frequency switches performed by the CPMU fail to adjust timer
    prescalers.  The fix is to detect core clock frequency changes during
    link events and adjust the timer prescalers accordingly.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 5f60891b80f1a0f0a0015b084f4838ae8b9637c7
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Mon Nov 12 21:17:07 2007 -0800

    [TG3]: Limit 5784 / 5764 to MAC LED mode
    
    Most 5784 / 5764 LED modes do not work as expected because of a hardware
    bug.  This patch forces the LED mode to be in MAC LED mode.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 662f38d242488cfdcda7b3684ac610d3e4d568a7
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Mon Nov 12 21:16:17 2007 -0800

    [TG3]: Disable GPHY autopowerdown
    
    New CPMU devices contend with the GPHY for power management.  The GPHY
    autopowerdown feature is enabled by default in the PHY and thus needs to
    be disabled after every PHY reset.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit e875093c9659d2a9f3923aa9ee1b89ef40cf95b9
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Mon Nov 12 21:11:51 2007 -0800

    [TG3]: CPMU adjustments for loopback tests
    
    This patch adds the LINK_SPEED mode to the list of CPMU modes that can
    cause the loopback tests to fail.  These bugs are planned to be fixed in
    future revisions of the chip, so the patch qualifies the fixes as such.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit a5767dec1980463aef5614b7ad8a800bb4f4c353
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Mon Nov 12 21:10:58 2007 -0800

    [TG3]: Fix nvram selftest failures
    
    Newer devices contain bootcode in the chip's private ROM area.  This
    bootcode is called selfboot.  Selfboot can be patched in the device's
    NVRAM and the patches can have several formats.  In one particular
    format, the checksum calculation needs to be slightly modified.  This
    patch adjusts the NVRAM test code for that case, and add support for the
    missing formats.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 9acb961e7d780291659bf950b3b718ff9e085620
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Mon Nov 12 21:10:06 2007 -0800

    [TG3]: 5784 / 5764 DMA engine lockup fix
    
    5784 and 5764 devices lock up when the link speed is 10Mbps, the CPMU
    link speed mode is enabled, and the MAC clock is running at 1.5Mhz.  The
    fix is to run the MAC clock at faster speeds.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 84af67fdf07c4fce664dbca87a8d5e2802901bff
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Mon Nov 12 21:08:59 2007 -0800

    [TG3]: APE flag fix
    
    This patch corrects a bug where the ENABLE_APE flag was tested against
    the wrong flag variable.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit ce057f01956bfcb3cb8588091000ae546be78e00
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Mon Nov 12 21:08:03 2007 -0800

    [TG3]: 5784 / 5764 GPHY power down fix
    
    5784 and 5764 devices fail to link / pass traffic after one load /
    unload cycle.  This happens because of a hardware bug in the new CPMU.
    During normal operation, the MAC depends on the PHY clock being
    available.  When the PHY is powered down, the clock the MAC depends on
    is disabled.  The fix is to switch the MAC clock to an alternate source
    before powering down the PHY, and to restore the MAC clock to the PHY
    source upon device resume.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit c88864df27590b80fca4a991e0c257d1757cec41
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Mon Nov 12 21:07:01 2007 -0800

    [TG3]: Fix 5761 PXEboot crash
    
    When 5761 devices boot the machine using PXEboot, PXE leaves the device
    active when it terminates.  The tg3 driver has code to detect this
    condition and resets the device during initialization.  On 5761 devices,
    device resets involve sending a driver state update message to the APE
    on the 5761.  However, during this initialization stage, communications
    to the APE registers have not yet been set up.  The driver then
    dereferences a NULL pointer and crashes the machine.  The fix is to move
    the APE register access setup earlier in the initialization code to
    cover this condition.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit ba698ad4b7e466cbb4a8bde6b9da8080ab06808d
Author: David Miller <davem@davemloft.net>
Date:   Thu Oct 25 01:16:30 2007 -0700

    PCI: Add quirk for devices which disable MSI when INTX_DISABLE is set.
    
    A reasonably common problem with some devices is that they will
    disable MSI generation when the INTX_DISABLE bit is set in the
    PCI_COMMAND register.
    
    Quirk this explicitly, guarding the pci_intx() calls in msi.c with
    this quirk indication.
    
    The first entries for this quirk are for 5714 and 5780 Tigon3 chips,
    and thus we can remove the workaround code from the tg3.c driver.
    
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Acked-by: Michael Chan <mchan@broadcom.com>
    Acked-by: Jeff Garzik <jgarzik@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit 33b0c4fe6d0dd19fc7c9b801855f55c5260f2858
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Sun Oct 21 16:22:38 2007 -0700

    [TG3]: Update version to 3.85
    
    This patch updates the version number to 3.85.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 8a6eac90e21633e054e17d21454a2c26824aeb18
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Sun Oct 21 16:17:55 2007 -0700

    [TG3]: PCI command adjustment
    
    This patch changes the way the driver works with the PCI command
    register.  It adjusts the access size from dwords to words.  This patch
    is done both as a PCI configuration space cleanup and as preparatory
    work for PCI error recovery.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 9c8a620e7f85fff050a54697da44bbd1a66e8e0b
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Sun Oct 21 16:16:08 2007 -0700

    [TG3]: Add management FW version to ethtool report
    
    This patch appends the management firmware version to the bootcode
    firmware string reported through ethtool.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 6c7af27c8a2e8b85cb235a2409d3b2093b18f77d
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Sun Oct 21 16:12:02 2007 -0700

    [TG3]: Add 5723 support
    
    This patch adds support for upcoming 5723 devices.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit a52cefc80fc92981592c688d1c8067442afe4cec
Merge: fba956c... 4acad72...
Author: Linus Torvalds <torvalds@woody.linux-foundation.org>
Date:   Mon Oct 15 14:06:58 2007 -0700

    Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
    
    * 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6: (42 commits)
      [IPV6]: Consolidate the ip6_pol_route_(input|output) pair
      [TCP]: Make snd_cwnd_cnt 32-bit
      [TCP]: Update the /proc/net/tcp documentation
      [NETNS]: Don't panic on creating the namespace's loopback
      [NEIGH]: Ensure that pneigh_lookup is protected with RTNL
      [INET]: kmalloc+memset -> kzalloc in frag_alloc_queue
      [ISDN]: Fix compile with CONFIG_ISDN_X25 disabled.
      [IPV6]: Replace sk_buff ** with sk_buff * in input handlers
      [SELINUX]: Update for netfilter ->hook() arg changes.
      [INET]: Consolidate the xxx_put
      [INET]: Small cleanup for xxx_put after evictor consolidation
      [INET]: Consolidate the xxx_evictor
      [INET]: Consolidate the xxx_frag_destroy
      [INET]: Consolidate xxx_the secret_rebuild
      [INET]: Consolidate the xxx_frag_kill
      [INET]: Collect common frag sysctl variables together
      [INET]: Collect frag queues management objects together
      [INET]: Move common fields from frag_queues in one place.
      [TG3]: Fix performance regression on 5705.
      [ISDN]: Remove local copy of device name to make sure renames work.
      ...

commit e9edda697ed7697f1288d0656570e49c47e204ae
Author: Alejandro Martinez Ruiz <alex@flawedcode.org>
Date:   Mon Oct 15 03:37:43 2007 +0200

    netdev: convert non-obvious instances to use ARRAY_SIZE()
    
    This will convert remaining non-obvious or naive calculations of array
    sizes to use ARRAY_SIZE() macro.
    
    Signed-off-by: Alejandro Martinez Ruiz <alex@flawedcode.org>
    Signed-off-by: Jeff Garzik <jeff@garzik.org>

commit 114342f2d38439cb1a54f1f724fa38729b093c48
Author: Michael Chan <mchan@broadcom.com>
Date:   Mon Oct 15 02:12:26 2007 -0700

    [TG3]: Fix performance regression on 5705.
    
    A performance regression was introduced by the following commit:
    
        commit ee6a99b539a50b4e9398938a0a6d37f8bf911550
        Author: Michael Chan <mchan@broadcom.com>
        Date:   Wed Jul 18 21:49:10 2007 -0700
    
        [TG3]: Fix msi issue with kexec/kdump.
    
    In making that change, the PCI latency timer and cache line size
    registers were not restored after chip reset.  On the 5705, the
    latency timer gets reset to 0 during chip reset and this causes
    very poor performance.
    
    Update version to 3.84.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 4fd7ab5949edfdf99be0ceef206c9d0b7f186318
Author: Michael Chan <mchan@broadcom.com>
Date:   Fri Oct 12 01:39:50 2007 -0700

    [TG3]: Refine napi poll loop.
    
    Need to read and store sblk->status_tag before checking for more work.
    The status tag is later written back to the hardware when enabling
    interrupts to acknowledge how much work has been processed.  If the
    order is reversed, we can end up acknowledging work we haven't
    processed.
    
    When we detect tx error, it is more correct to return the rx
    work_done so far instead of 0.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 9ce768ead83216d394175c0a0d72bc527648c7d0
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Thu Oct 11 19:49:11 2007 -0700

    [TG3]: Fix APE induced regression
    
    This patch fixes a bug caused by the recent APE support added for 5761
    devices.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 6f535763165331bb91277d7519b507fed22034e5
Author: David S. Miller <davem@sunset.davemloft.net>
Date:   Thu Oct 11 18:08:29 2007 -0700

    [NET]: Fix NAPI completion handling in some drivers.
    
    In order for the list handling in net_rx_action() to be
    correct, drivers must follow certain rules as stated by
    this comment in net_rx_action():
    
    		/* Drivers must not modify the NAPI state if they
    		 * consume the entire weight.  In such cases this code
    		 * still "owns" the NAPI instance and therefore can
    		 * move the instance around on the list at-will.
    		 */
    
    A few drivers do not do this because they mix the budget checks
    with reading hardware state, resulting in crashes like the one
    reported by takano@axe-inc.co.jp.
    
    BNX2 and TG3 are taken care of here, SKY2 fix is from Stephen
    Hemminger.
    
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 414c66e00e9fb4572e38bd14e6cc570eae8c5a61
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Wed Oct 10 18:03:56 2007 -0700

    [TG3]: Update version to 3.83
    
    Update to version 3.83.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 0527ba358aa7594731e627842d493ae7f009dd57
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Wed Oct 10 18:03:30 2007 -0700

    [TG3]: WOL defaults
    
    This patch enables WOL by default if out-of-box WOL is enabled in the
    NVRAM.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 9936bcf68a7e4d33f080bba9ee03d156c75c91ee
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Wed Oct 10 18:03:07 2007 -0700

    [TG3]: Add 5761 support
    
    This patch adds rest of the miscellaneous code required to support the
    5761.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 0d3031d9e674cddd4c09731123ad252294cdf15f
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Wed Oct 10 18:02:43 2007 -0700

    [TG3]: Add 5761 APE support
    
    This patch adds support for the new APE block, present in 5761 chips.
    APE stands for Application Processing Engine.  The primary function of
    the APE is to process manageability traffic, such as ASF.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 6b91fa02796292c322b20572188c74c1ef5bb02b
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Wed Oct 10 18:01:09 2007 -0700

    [TG3]: Add new 5761 NVRAM decode routines
    
    This patch adds a new 5761-specific NVRAM strapping decode routine.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 405d8e5cbbe5aca20cc745046b70831bfc5e4a8f
Author: Andy Gospodarek <andy@greyhouse.net>
Date:   Mon Oct 8 01:08:47 2007 -0700

    [TG3]: Fix ethtool autonegotiate flags.
    
    I recently noticed that when calling:
    
    # ethtool -s eth0 autoneg on
    
    on a 5722 (though I'm sure it's not specific to that card) that
    subsequent checks of the cards status looked like this:
    
    # ethtool eth0
    Settings for eth0:
            Supported ports: [ MII ]
            Supported link modes:   10baseT/Half 10baseT/Full
                                    100baseT/Half 100baseT/Full
                                    1000baseT/Half 1000baseT/Full
            Supports auto-negotiation: Yes
            Advertised link modes:  10baseT/Half 10baseT/Full
                                    100baseT/Half 100baseT/Full
                                    1000baseT/Half 1000baseT/Full
            Advertised auto-negotiation: No        <---- This seems odd?!?
            Speed: 1000Mb/s
            Duplex: Full
            Port: Twisted Pair
            PHYAD: 1
            Transceiver: internal
            Auto-negotiation: on
            Supports Wake-on: g
            Wake-on: d
            Current message level: 0x000000ff (255)
            Link detected: yes
    
    I noticed that the following commit:
    
    commit 3600d918d870456ea8e7bb9d47f327de5c20f3d6
    Author: Michael Chan <mchan@broadcom.com>
    Date:   Thu Dec 7 00:21:48 2006 -0800
    
        [TG3]: Allow partial speed advertisement.
    
        Honor the advertisement bitmask from ethtool.  We used to always
        advertise the full capability when autoneg was set to on.
    
    changed things around so that ethtool speed settings were strictly
    followed.  Unfortunately ethtool doesn't seem to set ADVERTISED_Autoneg
    in the advertising field (and maybe it shouldn't have to).  I'd vote
    that it should be fixed there, but it should also be added here just in
    case someone using ethtool ioctls in their own application gets what
    they want.
    
    Adding that flag in tg3_set_settings seemed like the most logical place
    since the driver works fine on boot.  This is just an issue when
    re-enabling autonegotiation, so we should probably nip it there.
    
    Signed-off-by: Andy Gospodarek <andy@greyhouse.net>
    Acked-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 182f6ed5188ccb46d1c54c3334943a54110d0118
Author: Michael Chan <mchan@broadcom.com>
Date:   Sun Oct 7 23:29:06 2007 -0700

    [TG3]: Update version to 3.82.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit d30cdd28fba556143a4bb0d1a6097ebcc2891477
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Sun Oct 7 23:28:35 2007 -0700

    [TG3]: Add 5784 and 5764 support.
    
    This patch adds the support for 5784 and 5764 devices.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 795d01c523dd9f22acc70fe86ed30e605e00024d
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Sun Oct 7 23:28:17 2007 -0700

    [TG3]: ASIC decoding and basic CPMU support.
    
    Newer products change the way the ASIC revision is obtained.  This patch
    implements how the driver will extract the revision number.
    
    This patch also adds preliminary CPMU support.  CPMU stands for Central
    Power Management Unit.  The CPMU's role is to put the chip into lower
    power states when the operating conditions allow it.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 9974a356b204833b32173210ca25edfdc24dcdd5
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Sun Oct 7 23:27:28 2007 -0700

    [TG3]: Walk PCI capability lists.
    
    Newer tg3 devices shuffle around the registers in PCI configuration
    space.  This patch changes the way the driver accesses the PCI
    capabilities registers.  Hardcoded register locations are replaced with
    offsets from pci_find_capability() return values.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit b9f2c0440d806e01968c3ed4def930a43be248ad
Author: Jeff Garzik <jeff@garzik.org>
Date:   Wed Oct 3 18:07:32 2007 -0700

    [netdrvr] Stop using legacy hooks ->self_test_count, ->get_stats_count
    
    These have been superceded by the new ->get_sset_count() hook.
    
    Signed-off-by: Jeff Garzik <jeff@garzik.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 88d3aafdae5c5e1d2dd9489a5c8a24e29d335f2e
Author: Jeff Garzik <jeff@garzik.org>
Date:   Sat Sep 15 14:41:06 2007 -0700

    [ETHTOOL] Provide default behaviors for a few ethtool sub-ioctls
    
    For the operations
    	get-tx-csum
    	get-sg
    	get-tso
    	get-ufo
    the default ethtool_op_xxx behavior is fine for all drivers, so we
    permit op==NULL to imply the default behavior.
    
    This provides a more uniform behavior across all drivers, eliminating
    ethtool(8) "ioctl not supported" errors on older drivers that had
    not been updated for the latest sub-ioctls.
    
    The ethtool_op_xxx() functions are left exported, in case anyone
    wishes to call them directly from a driver-private implementation --
    a not-uncommon case.  Should an ethtool_op_xxx() helper remain unused
    for a while, except by net/core/ethtool.c, we can un-export it at a
    later date.
    
    [ Resolved conflicts with set/get value ethtool patch... -DaveM ]
    
    Signed-off-by: Jeff Garzik <jeff@garzik.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 10d024c1b2fd58af8362670d7d6e5ae52fc33353
Author: Ralf Baechle <ralf@linux-mips.org>
Date:   Mon Sep 17 13:11:17 2007 -0700

    [NET]: Nuke SET_MODULE_OWNER macro.
    
    It's been a useless no-op for long enough in 2.6 so I figured it's time to
    remove it.  The number of people that could object because they're
    maintaining unified 2.4 and 2.6 drivers is probably rather small.
    
    [ Handled drivers added by netdev tree and some missed IRDA cases... -DaveM ]
    
    Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
    Signed-off-by: Jeff Garzik <jeff@garzik.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit ab0049b4a2f66074dff6af851b35bba888f53972
Author: Andy Gospodarek <andy@greyhouse.net>
Date:   Thu Sep 6 20:42:14 2007 +0100

    [TG3]: remove sparse warnings
    
    Removed sparse warnings from tg3 driver.  The new logic seems fine (I
    don't immediately see where we are running over values for any of the
    variables that need to be saved).
    
    This patch compiles fine and I'm currently using a tg3 with the patched
    driver to post this patch as a basic proof of concept.
    
    Signed-off-by: Andy Gospodarek <andy@greyhouse.net>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit bea3348eef27e6044b6161fd04c3152215f96411
Author: Stephen Hemminger <shemminger@linux-foundation.org>
Date:   Wed Oct 3 16:41:36 2007 -0700

    [NET]: Make NAPI polling independent of struct net_device objects.
    
    Several devices have multiple independant RX queues per net
    device, and some have a single interrupt doorbell for several
    queues.
    
    In either case, it's easier to support layouts like that if the
    structure representing the poll is independant from the net
    device itself.
    
    The signature of the ->poll() call back goes from:
    
    	int foo_poll(struct net_device *dev, int *budget)
    
    to
    
    	int foo_poll(struct napi_struct *napi, int budget)
    
    The caller is returned the number of RX packets processed (or
    the number of "NAPI credits" consumed if you want to get
    abstract).  The callee no longer messes around bumping
    dev->quota, *budget, etc. because that is all handled in the
    caller upon return.
    
    The napi_struct is to be embedded in the device driver private data
    structures.
    
    Furthermore, it is the driver's responsibility to disable all NAPI
    instances in it's ->stop() device close handler.  Since the
    napi_struct is privatized into the driver's private data structures,
    only the driver knows how to get at all of the napi_struct instances
    it may have per-device.
    
    With lots of help and suggestions from Rusty Russell, Roland Dreier,
    Michael Chan, Jeff Garzik, and Jamal Hadi Salim.
    
    Bug fixes from Thomas Graf, Roland Dreier, Peter Zijlstra,
    Joseph Fannin, Scott Wood, Hans J. Koch, and Michael Chan.
    
    [ Ported to current tree and all drivers converted.  Integrated
      Stephen's follow-on kerneldoc additions, and restored poll_list
      handling to the old style to fix mutual exclusion issues.  -DaveM ]
    
    Signed-off-by: Stephen Hemminger <shemminger@linux-foundation.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 2fbe43f6f631dd7ce19fb1499d6164a5bdb34568
Author: Michael Chan <mchan@broadcom.com>
Date:   Thu Sep 6 12:04:29 2007 +0100

    [TG3]: Workaround MSI bug on 5714/5780.
    
    A hardware bug was revealed after a recent PCI MSI patch was made to
    always disable legacy INTX when enabling MSI.  The 5714/5780 chips
    will not generate MSI when INTX is disabled, causing MSI failure
    messages to be reported, and another patch was made to workaround the
    problem by disabling MSI on ServerWorks HT1000 bridge chips commonly
    found with the 5714.
    
    We workaround this chip bug by enabling INTX after we enable MSI and
    after we resume from suspend.
    
    Update version to 3.81.
    
    This problem was discovered by David Miller.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Acked-by: Andy Gospodarek <andy@greyhouse.net>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 3e0c95fd648c0d3175b9ff2232597d0b02eb7d46
Author: Michael Chan <mchan@broadcom.com>
Date:   Fri Aug 3 20:56:54 2007 -0700

    [TG3]: Fix suspend/resume problem.
    
    Joachim Deguara <joachim.deguara@amd.com> reported that tg3 devices
    would not resume properly if the device was shutdown before the system
    was suspended.  In such scenario where the netif_running state is 0,
    tg3_suspend() would not save the PCI state and so the memory enable bit
    and bus master enable bit would be lost.
    
    We fix this by always saving and restoring the PCI state in
    tg3_suspend() and tg3_resume() regardless of netif_running() state.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 313674afa8fdced2fe79f50f38e1c387b63d8790
Author: Matthew Wilcox <matthew@wil.cx>
Date:   Tue Jul 31 14:00:29 2007 -0700

    [NET]: ethtool_perm_addr only has one implementation
    
    All drivers implement ethtool get_perm_addr the same way -- by calling
    the generic function.  So we can inline the generic function into the
    caller and avoid going through the drivers.
    
    Signed-off-by: Matthew Wilcox <matthew@wil.cx>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit ee6a99b539a50b4e9398938a0a6d37f8bf911550
Author: Michael Chan <mchan@broadcom.com>
Date:   Wed Jul 18 21:49:10 2007 -0700

    [TG3]: Fix msi issue with kexec/kdump.
    
    Tina Yang <tina.yang@oracle.com> discovered an MSI related problem
    when doing kdump.  The problem is that the kexec kernel is booted
    without going through system reset, and as a result, MSI may already
    be enabled when tg3_init_one() is called.  tg3_init_one() calls
    pci_save_state() which will save the stale MSI state.  Later on in
    tg3_open(), we call pci_enable_msi() to reconfigure MSI on the chip
    before we reset the chip.  After chip reset, we call
    pci_restore_state() which will put the stale MSI address/data back
    onto the chip.
    
    This is no longer a problem in the latest kernel because
    pci_restore_state() has been changed to restore MSI state from
    internal data structures which will guarantee restoring the proper
    MSI state.
    
    But I think we should still fix it.  Our save and restore sequence
    can still cause very subtle problems down the road.  The fix is to
    have our own functions save and restore precisely what we need.  We
    also change it to save and restore state inside tg3_chip_reset() in a
    more straight forward way.
    
    Thanks to Tina for helping to test and debug the problem.
    
    [ Bump driver version and release date. -DaveM ]
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 6460d948f3ebf7d5040328a60a0ab7221f69945b
Author: Michael Chan <mchan@broadcom.com>
Date:   Sat Jul 14 19:07:52 2007 -0700

    [NET]: Add ethtool support for NETIF_F_IPV6_CSUM devices.
    
    Add ethtool utility function to set or clear IPV6_CSUM feature flag.
    Modify tg3.c and bnx2.c to use this function when doing ethtool -K
    to change tx checksum.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 21ba0f88ae56da82a3a15fe54d729208b64c4f4b
Merge: dc690d8... 36e2359...
Author: Linus Torvalds <torvalds@woody.linux-foundation.org>
Date:   Thu Jul 12 13:40:57 2007 -0700

    Merge master.kernel.org:/pub/scm/linux/kernel/git/gregkh/pci-2.6
    
    * master.kernel.org:/pub/scm/linux/kernel/git/gregkh/pci-2.6: (34 commits)
      PCI: Only build PCI syscalls on architectures that want them
      PCI: limit pci_get_bus_and_slot to domain 0
      PCI: hotplug: acpiphp: avoid acpiphp "cannot get bridge info" PCI hotplug failure
      PCI: hotplug: acpiphp: remove hot plug parameter write to PCI host bridge
      PCI: hotplug: acpiphp: fix slot poweroff problem on systems without _PS3
      PCI: hotplug: pciehp: wait for 1 second after power off slot
      PCI: pci_set_power_state(): check for PM capabilities earlier
      PCI: cpci_hotplug: Convert to use the kthread API
      PCI: add pci_try_set_mwi
      PCI: pcie: remove SPIN_LOCK_UNLOCKED
      PCI: ROUND_UP macro cleanup in drivers/pci
      PCI: remove pci_dac_dma_... APIs
      PCI: pci-x-pci-express-read-control-interfaces cleanups
      PCI: Fix typo in include/linux/pci.h
      PCI: pci_ids, remove double or more empty lines
      PCI: pci_ids, add atheros and 3com_2 vendors
      PCI: pci_ids, reorder some entries
      PCI: i386: traps, change VENDOR to DEVICE
      PCI: ATM: lanai, change VENDOR to DEVICE
      PCI: Change all drivers to use pci_device->revision
      ...

commit 15028aad00ddf241581fbe74a02ec89cbb28d35d
Author: Michael Chan <mchan@broadcom.com>
Date:   Wed Jul 11 19:49:22 2007 -0700

    [TG3]: Update version to 3.78.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 70b65a2d628d2e66bbf044bb764be64949f3580c
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Wed Jul 11 19:48:50 2007 -0700

    [TG3]: Add missing NVRAM strapping.
    
    This patch adds a missing NVRAM strapping for 5755 devices.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 9ef8ca99749784644602535691f8cf201ee2a225
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Wed Jul 11 19:48:29 2007 -0700

    [TG3]: Enable auto MDI.
    
    This patch adds automatic MDI crossover support when autonegotiation is
    turned off.  Automatic MDI crossover allows link to be established
    without the use of a crossover cable.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit e8f3f6cad7e423253090887bc4afe7bc844162da
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Wed Jul 11 19:47:55 2007 -0700

    [TG3]: Fix the polarity bit.
    
    For most pre-5705 devices, multiple link interrupts were being generated
    for a single physical link change.  The source of the interrupts was
    determined to be unnecessary toggling of the MAC link polarity bit.
    
    This patch changes the way the link polarity bit gets configured.  Where
    possible, code that dynamically configures the bit in response to link
    changes has been replaced by code that configures the bit once during
    initialization time and then leaves the bit alone.
    
    For correctness, this patch also limits the use of the bit to those
    devices where it is defined, namely devices before the 5705.  This patch
    also corrects the link polarity configurations for 5700 devices when
    paired against a bcm5411 phy.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 469665459d26da8d0b46c70d070da1e192e48e46
Author: Michael Chan <mchan@broadcom.com>
Date:   Wed Jul 11 19:47:19 2007 -0700

    [TG3]: Fix irq_sync race condition.
    
    Gagan Arneja <gaagaan@gmail.com> pointed out that tg3_reset_task()
    could potentially race with another thread calling tg3_full_lock()
    such as the ethtool_set_xxx() functions.  This may trigger the
    BUG_ON() in tg3_irq_quiesce() or cause the irq_sync flag to be out-
    of-sync.
    
    I think the easiest way to fix this is to get the tp->lock first
    before setting the irq_sync flag.  This is safe to do because the
    tp->lock is never grabbed by the irq handler.  This change will
    guarantee that the irq_sync flag updates will be serialized.  We also
    have to change one spot to call tg3_netif_start() (which clears the
    irq_sync flag) before releasing the tp->lock.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 44c10138fd4bbc4b6d6bff0873c24902f2a9da65
Author: Auke Kok <auke-jan.h.kok@intel.com>
Date:   Fri Jun 8 15:46:36 2007 -0700

    PCI: Change all drivers to use pci_device->revision
    
    Instead of all drivers reading pci config space to get the revision
    ID, they can now use the pci_device->revision member.
    
    This exposes some issues where drivers where reading a word or a dword
    for the revision number, and adding useless error-handling around the
    read. Some drivers even just read it for no purpose of all.
    
    In devices where the revision ID is being copied over and used in what
    appears to be the equivalent of hotpath, I have left the copy code
    and the cached copy as not to influence the driver's performance.
    
    Compile tested with make all{yes,mod}config on x86_64 and i386.
    
    Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
    Acked-by: Dave Jones <davej@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit d212f87b068c9d72065ef579d85b5ee6b8b59381
Author: Stephen Hemminger <shemminger@linux-foundation.org>
Date:   Wed Jun 27 00:47:37 2007 -0700

    [NET]: IPV6 checksum offloading in network devices
    
    The existing model for checksum offload does not correctly handle
    devices that can offload IPV4 and IPV6 only. The NETIF_F_HW_CSUM flag
    implies device can do any arbitrary protocol.
    
    This patch:
     * adds NETIF_F_IPV6_CSUM for those devices
     * fixes bnx2 and tg3 devices that need it
     * add NETIF_F_IPV6_CSUM to ipv6 output (incl GSO)
     * fixes assumptions about NETIF_F_ALL_CSUM in nat
     * adjusts bridge union of checksumming computation
    
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 007a880d627aee0e854e793099bb33d0c1130678
Author: Michael Chan <mchan@broadcom.com>
Date:   Thu May 31 14:49:51 2007 -0700

    [TG3]: Fix link problem on Dell's onboard 5906.
    
    The bug is caused by code that always set
    (TG3_FLAG_USE_MI_INTERRUPT | TG3_FLAG_USE_LINKCHG_REG) on all Dell's
    onboard devices.  With these 2 flags set, the link status is polled
    by tg3_timer() and will only work when the PHY is set up to interrupt
    the MAC on link changes.  This breaks 5906 because the 5906 PHY does
    not support TG3_FLAG_USE_MI_INTERRUPT the same as other PHYs.
    
    For correctness, only Dell's onboard 5701 needs these 2 flags to be
    set.  This change will fix the 5906 problem and will change other
    Dell devices except 5700 and 5701 to use the more efficient
    interrupt-driven link changes.
    
    Update version to 3.77.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 25805dcf9d83098cf5492117ad2669cd14cc9b24
Author: Stephen Hemminger <shemminger@linux-foundation.org>
Date:   Fri Jun 1 09:44:01 2007 -0700

    network drivers: eliminate unneeded kill_vid code
    
    Many drivers had code that did kill_vid, but they weren't doing vlan
    filtering. With new API the stub is unneeded unless device sets
    NETIF_F_HW_VLAN_FILTER.
    
    Bad habit: I couldn't resist fixing a couple of nearby style things
    in acenic, and forcedeth.
    
    Signed-off-by: Stephen Hemminger <shemminger@linux-foundation.org>
    Signed-off-by: Jeff Garzik <jeff@garzik.org>

commit 28e53bddf814485699a4142bc056fd37d4e11dd4
Author: Oleg Nesterov <oleg@tv-sign.ru>
Date:   Wed May 9 02:34:22 2007 -0700

    unify flush_work/flush_work_keventd and rename it to cancel_work_sync
    
    flush_work(wq, work) doesn't need the first parameter, we can use cwq->wq
    (this was possible from the very beginnig, I missed this).  So we can unify
    flush_work_keventd and flush_work.
    
    Also, rename flush_work() to cancel_work_sync() and fix all callers.
    Perhaps this is not the best name, but "flush_work" is really bad.
    
    (akpm: this is why the earlier patches bypassed maintainers)
    
    Signed-off-by: Oleg Nesterov <oleg@tv-sign.ru>
    Cc: Jeff Garzik <jeff@garzik.org>
    Cc: "David S. Miller" <davem@davemloft.net>
    Cc: Jens Axboe <jens.axboe@oracle.com>
    Cc: Tejun Heo <htejun@gmail.com>
    Cc: Auke Kok <auke-jan.h.kok@intel.com>,
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

commit 2b3cb2e778811a1df99e37fd7c359837501ab103
Author: Andrew Morton <akpm@osdl.org>
Date:   Wed May 9 02:33:57 2007 -0700

    tg3: use flush_work_keventd()
    
    Convert tg3 over to flush_work_keventd().  Remove nasty now-unneeded deadlock
    avoidance logic.
    
    (akpm: bypassed maintainers, sorry.  There are other patches which depend on
    this)
    
    Cc: "Maciej W. Rozycki" <macro@linux-mips.org>
    Cc: David Howells <dhowells@redhat.com>
    Cc: "David S. Miller" <davem@davemloft.net>
    Cc: Michael Chan <mchan@broadcom.com>
    Cc: Jeff Garzik <jeff@garzik.org>
    Cc: Oleg Nesterov <oleg@tv-sign.ru>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

commit 823036ed3291e30f32a905c94db821cd75524b59
Author: Michael Chan <mchan@broadcom.com>
Date:   Mon May 7 00:26:30 2007 -0700

    [TG3]: Update version and reldate.
    
    Update version to 3.76.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit c04cb34725fdcf5fdb4135d8fdfaf6f318f10e99
Author: Michael Chan <mchan@broadcom.com>
Date:   Mon May 7 00:26:15 2007 -0700

    [TG3]: Eliminate spurious interrupts.
    
    Spurious interrupts are often encountered especially on systems
    using the 8259 PIC mode.  This is because the I/O write to deassert
    the interrupt is posted and won't get to the chip immediately.  As
    a result, the IRQ may remain asserted after the IRQ handler exits,
    causing spurious interrupts.
    
    Flush the interrupt mailbox in non-MSI handlers to de-assert the
    IRQ immediately.  This seems to be the most straight forward approach
    after discussion with Jeff Garzik and David Miller.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 8ed5d97e5e0be0fb1aebad16f4c464613a0e472d
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Mon May 7 00:25:49 2007 -0700

    [TG3]: Add ASPM workaround.
    
    This patch adds workaround to fix performance problems caused by slow
    PCIE L1->L0 transitions on ICH8 platforms.
    
    Changed all magic numbers to constants as suggested by Jeff Garzik.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 7544b0972c1fc1a0e6c54baa1f44c81019743daa
Author: Michael Chan <mchan@broadcom.com>
Date:   Sat May 5 13:08:32 2007 -0700

    [TG3]: Add TG3_FLAG_SUPPORT_MSI flag.
    
    And fix up the code to always allow MSI on 5714 A2.
    
    Call tg3_find_peer() earlier because we need that information before
    we can determine whether we can set TG3_FLAG_SUPPORT_MSI or not.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 98efd8a6be79550767f5a9be6f3db8e7e9b747da
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Sat May 5 12:47:25 2007 -0700

    [TG3]: Eliminate the TG3_FLAG_5701_REG_WRITE_BUG flag.
    
    This patch removes the use of the TG3_FLAG_5701_REG_WRITE_BUG flag.
    It's logic is only used to set a function pointer and thus the
    logic can be collapsed and the flag removed.
    
    [ Comment tidy by Christoph Hellwig. -DaveM ]
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>

commit 5cf64b8a7399999439f0d6748babb1ccb6bcad7c
Author: Michael Chan <mchan@broadcom.com>
Date:   Sat May 5 12:11:21 2007 -0700

    [TG3]: Eliminate the TG3_FLAG_GOT_SERDES_FLOWCTL flag.
    
    This flag does not do anything useful.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 986e0aeb9ae09127b401c3baa66f15b7a31f354c
Author: Michael Chan <mchan@broadcom.com>
Date:   Sat May 5 12:10:20 2007 -0700

    [TG3]: Remove reset during MAC address changes.
    
    The reset was added a while back so that ASF could re-init whatever
    MAC address it wanted to use after the MAC address was changed.
    Instead of resetting, we can just keep MAC address 1 unchanged during
    MAC address changes if MAC address 1 is different from MAC address 0.
    
    This fixes 2 problems:
    
    1. Bonding calls set_mac_address in contexts that cannot sleep.
    It no longer sleeps with the chip reset removed.
    
    2. When ASF shares the same MAC address as the NIC, it needs to
    always do that even when the MAC address is changed.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit a85feb8cfc53c08b6f0d770f930ca9cc6885f414
Author: Gary Zambrano <zambrano@broadcom.com>
Date:   Sat May 5 11:52:19 2007 -0700

    [TG3]: WoL fixes.
    
    Change TG3_FLAG_SERDES_WOL_CAP to TG3_FLAG_WOL_CAP to make it easier
    to manage WoL.  This flag is now used consistently during ethtool WoL
    setup and power setting changes.
    
    Signed-off-by: Gary Zambrano <zambrano@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit aaf84465fc994e9a840a8c0c6fa842b54cdb3426
Author: Gary Zambrano <zambrano@broadcom.com>
Date:   Sat May 5 11:51:45 2007 -0700

    [TG3]: Clear GPIO mask before storing.
    
    The GPIO settings may change during reset and so the stored values in
    tp->grc_local_ctrl should be cleared first.
    
    Signed-off-by: Gary Zambrano <zambrano@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 989a9d239c5b9ae6053aed6e3819304930baf27d
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Sat May 5 11:51:05 2007 -0700

    [TG3]: Improve NVRAM sizing.
    
    This patch changes the NVRAM sizing procedure so that the driver can
    take advantage of devices with 1:1 NVRAM strapping configurations.  This
    is useful in cases where the traditional NVRAM sizing method fails.  In
    the event that the flash size cannot be determined, the largest known
    NVRAM size is used.  The patch also removes support for 5755 NVRAM
    devices that are not supported by Broadcom and adds explicit sizing for
    this device.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit c13e3713857d5ea572cd67f3d5749100b1963ad2
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Sat May 5 11:50:04 2007 -0700

    [TG3]: Fix TSO bugs.
    
    1. Remove the check for skb->len greater than MTU when doing TSO.
    When the destination has a smaller MSS than the source, a TSO packet
    may be smaller than the MTU and we still need to process it as a TSO
    packet.
    
    2. On 5705A3 devices with TSO enabled, the DMA engine can hang due to a
    hardware bug.  This patch avoids the hanging condition by reducing the
    DMA burst size.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 0278ef8b484a71917bd4f03a763285cdaac10954
Merge: 15c5403... cd9ad58...
Author: Linus Torvalds <torvalds@woody.linux-foundation.org>
Date:   Fri Apr 27 09:29:04 2007 -0700

    Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6
    
    * master.kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6: (67 commits)
      [SCSI] SUNESP: Complete driver rewrite to version 2.0
      [SPARC64]: Convert PCI over to generic struct iommu/strbuf.
      [SPARC]: device_node name constification fallout
      [SPARC64]: Convert SBUS over to generic iommu/strbuf structs.
      [SPARC64]: Add generic iommu and strbuf structs to iommu.h
      [SPARC64]: Consolidate {sbus,pci}_iommu_arena.
      [SPARC]: Make device_node name and type const
      [SPARC64]: constify some paramaters of OF routines
      [TIGON3]: of_get_property() returns const.
      [SPARC64]: Fix PCI rework to adhere to of_get_property() const return.
      [SPARC64]: Document and fix calculation of pages_avail.
      [SPARC64]: Make sure pbm->prom_node is setup easly enough in psycho.c
      [SPARC64]: Use bootmem_bootmap_pages() in choose_bootmap_pfn().
      [SPARC64]: Add proper header file extern for cmdline_memory_size.
      [SPARC64]: Kill sparc_ultra_dump_{i,d}tlb()
      [SPARC64]: Use DECLARE_BITMAP and BITS_TO_LONGS in mm/init.c
      [SPARC64]: Give move verbose show_mem() output just like i386.
      [SPARC64]: Mark show_mem() printk's with KERN_INFO.
      [SPARC64]: Kill kvaddr_to_phys() and friends.
      [SPARC64]: Privatize sun4u_get_pte() and fix name.
      ...

commit 374d4cac6283469f101282ca83ee008368bd8350
Author: David S. Miller <davem@sunset.davemloft.net>
Date:   Thu Mar 29 01:57:57 2007 -0700

    [TIGON3]: of_get_property() returns const.
    
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 49b6e95ff6d05722bcf7a52b00454566ce0c44eb
Author: David S. Miller <davem@sunset.davemloft.net>
Date:   Thu Mar 29 01:38:42 2007 -0700

    [TG3]: Use pci_device_to_OF_node() on sparc.
    
    And use CONFIG_SPARC instead of CONFIG_SPARC64 as the
    test.
    
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit ccf0dec6fcadb4e1c877b9bafb031a6bdb7112b9
Author: Stephen Rothwell <sfr@canb.auug.org.au>
Date:   Thu Mar 29 00:49:54 2007 -0700

    [SPARC/64] constify of_get_property return: drivers
    
    The only unfortunate bit here is that the name field of struct map_info
    is not const, so for now we put a cast on the assignment of it.
    
    Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit d626f62b11e00c16e81e4308ab93d3f13551812a
Author: Arnaldo Carvalho de Melo <acme@redhat.com>
Date:   Tue Mar 27 18:55:52 2007 -0300

    [SK_BUFF]: Introduce skb_copy_from_linear_data{_offset}
    
    To clearly state the intent of copying from linear sk_buffs, _offset being a
    overly long variant but interesting for the sake of saving some bytes.
    
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

commit aa8223c7bb0b05183e1737881ed21827aa5b9e73
Author: Arnaldo Carvalho de Melo <acme@redhat.com>
Date:   Tue Apr 10 21:04:22 2007 -0700

    [SK_BUFF]: Introduce tcp_hdr(), remove skb->h.th
    
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit ab6a5bb6b28a970104a34f0f6959b73cf61bdc72
Author: Arnaldo Carvalho de Melo <acme@redhat.com>
Date:   Sun Mar 18 17:43:48 2007 -0700

    [TCP]: Introduce tcp_hdrlen() and tcp_optlen()
    
    The ip_hdrlen() buddy, created to reduce the number of skb->h.th-> uses and to
    avoid the longer, open coded equivalent.
    
    Ditched a no-op in bnx2 in the process.
    
    I wonder if we should have a BUG_ON(skb->h.th->doff < 5) in tcp_optlen()...
    
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit eddc9ec53be2ecdbf4efe0efd4a83052594f0ac0
Author: Arnaldo Carvalho de Melo <acme@redhat.com>
Date:   Fri Apr 20 22:47:35 2007 -0700

    [SK_BUFF]: Introduce ip_hdr(), remove skb->nh.iph
    
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit c9bdd4b5257406b0608385d19c40b5511decf4f6
Author: Arnaldo Carvalho de Melo <acme@redhat.com>
Date:   Mon Mar 12 20:09:15 2007 -0300

    [IP]: Introduce ip_hdrlen()
    
    For the common sequence "skb->nh.iph->ihl * 4", removing a good number of open
    coded skb->nh.iph uses, now to go after the rest...
    
    Just out of curiosity, here are the idioms found to get the same result:
    
    skb->nh.iph->ihl << 2
    skb->nh.iph->ihl<<2
    skb->nh.iph->ihl * 4
    skb->nh.iph->ihl*4
    (skb->nh.iph)->ihl * sizeof(u32)
    
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit b8fa2f3a82069304acac1f9e957d491585f4f49a
Author: Michael Chan <mchan@broadcom.com>
Date:   Fri Apr 6 17:35:37 2007 -0700

    [TG3]: Fix crash during tg3_init_one().
    
    The driver will crash when the chip has been initialized by EFI before
    tg3_init_one().  In this case, the driver will call tg3_chip_reset()
    before allocating consistent memory.
    
    The bug is fixed by checking for tp->hw_status before accessing it
    during tg3_chip_reset().
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 20bd7dd4cabfd0d6b6b70b99e88df901480a9841
Author: Michael Chan <mchan@broadcom.com>
Date:   Sat Mar 24 20:58:51 2007 -0700

    [TG3]: Update version and reldate.
    
    Update version to 3.75.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit d18edcb212d7dc864a59e6aa9b6b9826299e0210
Author: Michael Chan <mchan@broadcom.com>
Date:   Sat Mar 24 20:57:11 2007 -0700

    [TG3]: Exit irq handler during chip reset.
    
    On most tg3 chips, the memory enable bit in the PCI command register
    gets cleared during chip reset and must be restored before accessing
    PCI registers using memory cycles.  The chip does not generate
    interrupt during chip reset, but the irq handler can still be called
    because of irq sharing or irqpoll.  Reading a register in the irq
    handler can cause a master abort in this scenario and may result in a
    crash on some architectures.
    
    Use the TG3_FLAG_CHIP_RESETTING flag to tell the irq handler to exit
    without touching any registers.  The checking of the flag is in the
    "slow" path of the irq handler and will not affect normal performance.
    The msi handler is not shared and therefore does not require checking
    the flag.
    
    Thanks to Bernhard Walle <bwalle@suse.de> for reporting the problem.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 1c46ae05d96f77f349ae60c799acb6ac6ddf07a8
Author: Michael Chan <mchan@broadcom.com>
Date:   Sat Mar 24 20:54:37 2007 -0700

    [TG3]: Eliminate the unused TG3_FLAG_SPLIT_MODE flag.
    
    This flag to support multiple PCIX split completions was never used
    because of hardware bugs.  This will make room for a new flag.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 5c15bdec5c38f4ccf73ef2585fc80a6164de9554
Author: Dan Aloni <da-x@monatomic.org>
Date:   Fri Mar 2 20:44:51 2007 -0800

    [VLAN]: Avoid a 4-order allocation.
    
    This patch splits the vlan_group struct into a multi-allocated struct. On
    x86_64, the size of the original struct is a little more than 32KB, causing
    a 4-order allocation, which is prune to problems caused by buddy-system
    external fragmentation conditions.
    
    I couldn't just use vmalloc() because vfree() cannot be called in the
    softirq context of the RCU callback.
    
    Signed-off-by: Dan Aloni <da-x@monatomic.org>
    Acked-by: Jeff Garzik <jeff@garzik.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 7f62ad5d37f4e43c841e92c6f159c93dcf2d2cdd
Author: Michael Chan <mchan@broadcom.com>
Date:   Tue Feb 20 23:25:40 2007 -0800

    [TG3]: TSO workaround fixes.
    
    1.  Add race condition check after netif_stop_queue().  tg3_tx() runs
        without netif_tx_lock and can race with tg3_start_xmit_dma_bug() ->
        tg3_tso_bug().
    
    2.  Firmware TSO in 5703/5704/5705 also have the same TSO limitation,
        i.e. they cannot handle TSO headers bigger than 80 bytes.  Rename
        TG3_FL2_HW_TSO_1_BUG to TG3_FL2_TSO_BUG and set this flag on
        these chips as well.
    
    3.  Update version to 3.74.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 65610fbab35b0570df4a9d0e77e111f85606b312
Author: Michael Chan <mchan@broadcom.com>
Date:   Tue Feb 13 12:18:46 2007 -0800

    [TG3]: Update copyright, version, and reldate.
    
    Update version to 3.73.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit b0408751128edc126eb37798d51891d8d0a41dc6
Author: Michael Chan <mchan@broadcom.com>
Date:   Tue Feb 13 12:18:30 2007 -0800

    [TG3]: Add some tx timeout debug messages.
    
    Print the most useful information during tx timeout to help debug.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 569a5df8597deeaa39867be73c7305fd82522f57
Author: Michael Chan <mchan@broadcom.com>
Date:   Tue Feb 13 12:18:15 2007 -0800

    [TG3]: Use constant for PHY register 0x1e.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 5129724aa5de3a71fc70e71ca49d542ca1a5aa1e
Author: Michael Chan <mchan@broadcom.com>
Date:   Tue Feb 13 12:17:57 2007 -0800

    [TG3]: Power down 5704 serdes transceiver when shutting down.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit d7b0a8573c9ac8923bf6f205f4ce60dd2ac811d5
Author: Michael Chan <mchan@broadcom.com>
Date:   Tue Feb 13 12:17:38 2007 -0800

    [TG3]: 5906 doesn't need to switch to slower clock.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit d4011adaf8b5ea555357a40388ee9aa7ed2daf9f
Author: Michael Chan <mchan@broadcom.com>
Date:   Tue Feb 13 12:17:25 2007 -0800

    [TG3]: 5722/5756 don't need PHY jitter workaround.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 49afdeb65bb917e22cf9116bc31380befe9db890
Author: Michael Chan <mchan@broadcom.com>
Date:   Tue Feb 13 12:17:03 2007 -0800

    [TG3]: Use lower DMA watermark for 5703.
    
    Set DMA read watermark to 4 on 5703 in PCIX mode.  This is needed to
    prevent some tx timeouts.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 436f137975507b0baab0859a253c3c9332c22f62
Author: Michael Chan <mchan@broadcom.com>
Date:   Tue Feb 13 12:16:45 2007 -0800

    [TG3]: Save MSI state before suspend.
    
    This fixes the following problem:
    
    http://bugzilla.kernel.org/show_bug.cgi?id=7969
    
    The MSI state needs to be saved during suspend.  PCI state saved
    during tg3_init_one() does not contain valid MSI state because
    MSI hasn't been enabled.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 6b31a515e3401685cdab2eeb6692f1a0f53f72ca
Author: Eric Dumazet <dada1@cosmosbay.com>
Date:   Tue Feb 6 13:29:21 2007 -0800

    [TG3]: Avoid an expensive divide.
    
    During an oprofile session of linux-2.6.20 on a dual opteron system, I noticed
    an expensive divide was done in tg3_poll().
    
    I am using gcc-4.1.1, so the following comment from drivers/net/tg3.c seems
    over-optimistic :
    
    /* Do not place this n-ring entries value into the tp struct itself,
      * we really want to expose these constants to GCC so that modulo et
      * al.  operations are done with shifts and masks instead of with
      * hw multiply/modulo instructions.  Another solution would be to
      * replace things like '% foo' with '& (foo - 1)'.
      */
    #define TG3_RX_RCB_RING_SIZE(tp)        \
             ((tp->tg3_flags2 & TG3_FLG2_5705_PLUS) ?  512 : 1024)
    
    Assembly code before patch :
    (oprofile results included)
       6434  0.0088 :ffffffff803684b9:       mov    0x6f0(%r15),%eax
        587 8.0e-04 :ffffffff803684c0:       and    $0x40000,%eax
       2170  0.0030 :ffffffff803684c5:       cmp    $0x1,%eax
                    :ffffffff803684c8:       lea    0x1(%r13),%eax
                    :ffffffff803684cc:       sbb    %ecx,%ecx
       2051  0.0028 :ffffffff803684ce:       xor    %edx,%edx
                    :ffffffff803684d0:       and    $0x200,%ecx
         20 2.7e-05 :ffffffff803684d6:       add    $0x200,%ecx
       1986  0.0027 :ffffffff803684dc:       div    %ecx
    103427  0.1410 :ffffffff803684de:       cmp    %edx,0xffffffffffffff7c(%rbp)
    
    Assembly code after the suggested patch :
    
    ffffffff803684b9:           mov    0x6f0(%r15),%eax
    ffffffff803684c0:           and    $0x40000,%eax
    ffffffff803684c5:           cmp    $0x1,%eax
    ffffffff803684c8:           sbb    %eax,%eax
    ffffffff803684ca:           inc    %r13d
    ffffffff803684cd:           and    $0x200,%eax
    ffffffff803684d2:           add    $0x1ff,%eax
    ffffffff803684d7:           and    %eax,%r13d
    ffffffff803684da:           cmp    %r13d,0xffffffffffffff7c(%rbp)
    
    Signed-off-by: Eric Dumazet <dada1@cosmosbay.com>
    Acked-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 1d39ed565cfcc7c4fe586de621aef495c4f94ffb
Author: Arjan van de Ven <arjan@linux.intel.com>
Date:   Tue Dec 12 14:06:23 2006 +0100

    remove NETIF_F_TSO ifdefery
    
    Remove the NETIF_F_TSO #ifdef-ery in drivers/net; this was
    for old-old-2.4 compat (even current 2.4 has NETIF_F_TSO)
    but it's time to get rid of it by now.
    
    Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
    Signed-off-by: Jeff Garzik <jeff@garzik.org>

commit c1d2a1965a00693bddaddf75d57488a0d8e891af
Author: Michael Chan <mchan@broadcom.com>
Date:   Mon Jan 8 19:57:20 2007 -0800

    [TG3]: Add PHY workaround for 5755M.
    
    Some PHY trim values need to be fine-tuned on 5755M to be
    IEEE-compliant.
    
    Update version to 3.72.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 749494bad9ca170e404b8dcebe8422df0d79b3ac
Author: Michael Chan <mchan@broadcom.com>
Date:   Sun Dec 17 17:08:30 2006 -0800

    [TG3]: Update version and reldate.
    
    Update version to 3.71.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 60189ddff03ffce1f0442a7591b2abafdf47e6a3
Author: Michael Chan <mchan@broadcom.com>
Date:   Sun Dec 17 17:08:07 2006 -0800

    [TG3]: Power down/up 5906 PHY correctly.
    
    The 5906 PHY requires a special register bit to power down and up the
    PHY.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit c49a1561ee4b663d2819b5bea3e4684eae217b19
Author: Michael Chan <mchan@broadcom.com>
Date:   Sun Dec 17 17:07:29 2006 -0800

    [TG3]: Fix race condition when calling register_netdev().
    
    Hot-plug scripts can call tg3_open() as soon as register_netdev() is
    called in tg3_init_one().  We need to call pci_set_drvdata() before
    register_netdev(), and netif_carrier_off() needs to be moved to
    tg3_open() to avoid race conditions.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 24fcad6b3ca3bdbbb4614de3edc1ff16f594ba9a
Author: Michael Chan <mchan@broadcom.com>
Date:   Sun Dec 17 17:06:46 2006 -0800

    [TG3]: Assign tp->link_config.orig_* values.
    
    tp->link_config.orig_* values must be assigned during
    tg3_set_settings() because these values will be used to setup the
    link speed during tg3_open().  Without these assignments, the link
    speed settings will be all messed by if tg3_set_settings() is called
    when the device is down.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit bd2b334378530f6dbe03f6325b8c885524e298a3
Author: Yan Burman <burman.yan@gmail.com>
Date:   Thu Dec 14 15:25:00 2006 -0800

    [TG3]: replace kmalloc+memset with kzalloc
    
    Replace kmalloc+memset with kzalloc
    
    Signed-off-by: Yan Burman <burman.yan@gmail.com>
    Acked-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit cbb45d21fb2fcbcafc19ea859350f564252a0878
Author: Michael Chan <mchan@broadcom.com>
Date:   Thu Dec 7 00:24:09 2006 -0800

    [TG3]: Identify Serdes devices more clearly.
    
    Change the message to more clearly identify Serdes devices.
    
    Update version to 3.70.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 9d57f01c1331cb7bfd0a9d4f7723da5b9329394f
Author: Michael Chan <mchan@broadcom.com>
Date:   Thu Dec 7 00:23:25 2006 -0800

    [TG3]: Use msleep.
    
    Change some udelay() in some eeprom functions to msleep().  Eeprom
    related functions are always called from sleepable context.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 9f88f29fc502192824aba092e90af1297a87eb82
Author: Michael Chan <mchan@broadcom.com>
Date:   Thu Dec 7 00:22:54 2006 -0800

    [TG3]: Use netif_msg_*.
    
    Use netif_msg_* to turn on or off some messages.
    
    Based on Stephen Hemminger's initial patch.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 3600d918d870456ea8e7bb9d47f327de5c20f3d6
Author: Michael Chan <mchan@broadcom.com>
Date:   Thu Dec 7 00:21:48 2006 -0800

    [TG3]: Allow partial speed advertisement.
    
    Honor the advertisement bitmask from ethtool.  We used to always
    advertise the full capability when autoneg was set to on.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 9d26e213423923c9e033ccd373705118131827c9
Author: Michael Chan <mchan@broadcom.com>
Date:   Thu Dec 7 00:21:14 2006 -0800

    [TG3]: Add TG3_FLG2_IS_NIC flag.
    
    Add Tg3_FLG2_IS_NIC flag to unambiguously determine whether the
    device is NIC or onboard.  Previously, the EEPROM_WRITE_PROT flag was
    overloaded to also mean onboard.  With the separation, we can
    support some devices that are onboard but do not use eeprom write
    protect.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 676917d488212303ce4a7d033815ce8799201010
Author: Michael Chan <mchan@broadcom.com>
Date:   Thu Dec 7 00:20:22 2006 -0800

    [TG3]: Add 5787F device ID.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 5d64ad34f468278ce66f9eb4d876dd221490e94c
Author: Michael Chan <mchan@broadcom.com>
Date:   Thu Dec 7 00:19:40 2006 -0800

    [TG3]: Fix Phy loopback.
    
    Phy loopback on most 10/100 devices need to be run in 1Gbps mode in
    GMII mode.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit c4028958b6ecad064b1a6303a6a5906d4fe48d73
Author: David Howells <dhowells@redhat.com>
Date:   Wed Nov 22 14:57:56 2006 +0000

    WorkStruct: make allyesconfig
    
    Fix up for make allyesconfig.
    
    Signed-Off-By: David Howells <dhowells@redhat.com>

commit 12862086f24d7382b24379bbcbe0dadf12ca5945
Author: Ira W. Snyder <kernel@irasnyder.com>
Date:   Tue Nov 21 17:44:31 2006 -0800

    [TG3]: Add missing unlock in tg3_open() error path.
    
    Sparse noticed a locking imbalance in tg3_open(). This patch adds an
    unlock to one of the error paths, so that tg3_open() always exits
    without the lock held.
    
    Signed-off-by: Ira W. Snyder <kernel@irasnyder.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit c7835a77c86422d276b0d1a4c70924d933014c13
Author: Michael Chan <mchan@broadcom.com>
Date:   Wed Nov 15 21:14:42 2006 -0800

    [TG3]: Disable TSO on 5906 if CLKREQ is enabled.
    
    Due to hardware errata, TSO must be disabled if the PCI Express clock
    request is enabled on 5906.  The chip may hang when transmitting TSO
    frames if CLKREQ is enabled.
    
    Update version to 3.69.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 0ccead1869444891ae6b41f2c5fc8498521c908e
Author: Gary Zambrano <zambrano@broadcom.com>
Date:   Tue Nov 14 16:34:00 2006 -0800

    [TG3]: Increase 5906 firmware poll time.
    
    Newer 5906 bootcode needs about 7ms to finish resetting so the poll
    firmware loop was changed to maximum 20ms.
    
    Signed-off-by: Gary Zambrano <zambrano@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Acked-by: Jeff Garzik <jeff@garzik.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit af2c6a4aaa2253f1e29df8fb59a3d92174d30a33
Author: Michael Chan <mchan@broadcom.com>
Date:   Tue Nov 7 14:57:51 2006 -0800

    [TG3]: Fix array overrun in tg3_read_partno().
    
    Use proper upper limits for the loops and check for all error
    conditions.
    
    The problem was noticed by Adrian Bunk.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 36da4d869f23bc7d1a70a3185218cb626537845c
Author: Michael Chan <mchan@broadcom.com>
Date:   Fri Nov 3 01:01:03 2006 -0800

    [TG3]: Fix 2nd ifup failure on 5752M.
    
    This fixes a bug reported in:
    
    http://bugzilla.kernel.org/show_bug.cgi?id=7438
    
    tg3_close() turns off the PHY if WoL and ASF are both disabled.  On
    the next tg3_open(), some devices such as the 5752M will not be
    brought up correctly without a PHY reset early in the reset sequence.
    The PHY clock is needed for some internal MAC blocks to function
    correctly.
    
    This problem is fixed by always resetting the PHY early in
    tg3_reset_hw() when it is called from tg3_open() or tg3_resume().
    tg3_setup_phy() can then be called later in the sequence without the
    reset_phy parameter set to 1, since the PHY reset is already done.
    
    Update version to 3.68.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 6ba7511b7c8b71d5148f7516584d0b677acc384a
Author: David S. Miller <davem@sunset.davemloft.net>
Date:   Wed Oct 18 20:56:06 2006 -0700

    [TG3]: Bump driver version and release date.
    
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit bc3a9254a7925b6278f6d882746fe6a0bdf6f610
Author: Michael Chan <mchan@broadcom.com>
Date:   Wed Oct 18 20:55:18 2006 -0700

    [TG3]: Add lower bound checks for tx ring size.
    
    The minimum tx ring size must be greater than MAX_SKB_FRAGS or 3
    times that on some chips with TSO bugs.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 42952231c6a8623117ee3cc89c82d382dc69ca30
Author: Ranjit Manomohan <ranjitm@google.com>
Date:   Wed Oct 18 20:54:26 2006 -0700

    [TG3]: Fix set ring params tx ring size implementation
    
    Fixes the implementation of the ethtool set ring parameters for the
    tg3 transmit ring.  The size of tx_pending is taken into account
    before doing a netif_wake_queue.  This prevents the interface from
    locking up when smaller transmit ring sizes are used.
    
    Signed-off-by: Ranjit Manomohan <ranjitm@google.com>
    Acked-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: Andrew Morton <akpm@osdl.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 7d12e780e003f93433d49ce78cfedf4b4c52adc5
Author: David Howells <dhowells@redhat.com>
Date:   Thu Oct 5 14:55:46 2006 +0100

    IRQ: Maintain regs pointer globally rather than passing to IRQ handlers
    
    Maintain a per-CPU global "struct pt_regs *" variable which can be used instead
    of passing regs around manually through all ~1800 interrupt handlers in the
    Linux kernel.
    
    The regs pointer is used in few places, but it potentially costs both stack
    space and code to pass it around.  On the FRV arch, removing the regs parameter
    from all the genirq function results in a 20% speed up of the IRQ exit path
    (ie: from leaving timer_interrupt() to leaving do_IRQ()).
    
    Where appropriate, an arch may override the generic storage facility and do
    something different with the variable.  On FRV, for instance, the address is
    maintained in GR28 at all times inside the kernel as part of general exception
    handling.
    
    Having looked over the code, it appears that the parameter may be handed down
    through up to twenty or so layers of functions.  Consider a USB character
    device attached to a USB hub, attached to a USB controller that posts its
    interrupts through a cascaded auxiliary interrupt controller.  A character
    device driver may want to pass regs to the sysrq handler through the input
    layer which adds another few layers of parameter passing.
    
    I've build this code with allyesconfig for x86_64 and i386.  I've runtested the
    main part of the code on FRV and i386, though I can't test most of the drivers.
    I've also done partial conversion for powerpc and MIPS - these at least compile
    with minimal configurations.
    
    This will affect all archs.  Mostly the changes should be relatively easy.
    Take do_IRQ(), store the regs pointer at the beginning, saving the old one:
    
    	struct pt_regs *old_regs = set_irq_regs(regs);
    
    And put the old one back at the end:
    
    	set_irq_regs(old_regs);
    
    Don't pass regs through to generic_handle_irq() or __do_IRQ().
    
    In timer_interrupt(), this sort of change will be necessary:
    
    	-	update_process_times(user_mode(regs));
    	-	profile_tick(CPU_PROFILING, regs);
    	+	update_process_times(user_mode(get_irq_regs()));
    	+	profile_tick(CPU_PROFILING);
    
    I'd like to move update_process_times()'s use of get_irq_regs() into itself,
    except that i386, alone of the archs, uses something other than user_mode().
    
    Some notes on the interrupt handling in the drivers:
    
     (*) input_dev() is now gone entirely.  The regs pointer is no longer stored in
         the input_dev struct.
    
     (*) finish_unlinks() in drivers/usb/host/ohci-q.c needs checking.  It does
         something different depending on whether it's been supplied with a regs
         pointer or not.
    
     (*) Various IRQ handler function pointers have been moved to type
         irq_handler_t.
    
    Signed-Off-By: David Howells <dhowells@redhat.com>
    (cherry picked from 1b16e7ac850969f38b375e511e3fa2f474a33867 commit)

commit 1533d382155ee888d9621391c108ffb7a68bb25d
Author: Michael Chan <mchan@broadcom.com>
Date:   Wed Sep 27 16:10:35 2006 -0700

    [TG3]: Update version and reldate.
    
    Update version to 3.66.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit b16250e3d1c55820f08f0296624a423122ea9805
Author: Michael Chan <mchan@broadcom.com>
Date:   Wed Sep 27 16:10:14 2006 -0700

    [TG3]: Add 5709 self-test support.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 715116a12610b67c1d301a9b845ce95f7247dad3
Author: Michael Chan <mchan@broadcom.com>
Date:   Wed Sep 27 16:09:25 2006 -0700

    [TG3]: Add 5709 PHY support.
    
    Add support for the 5709 10/100 PHY.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit b5d3772ccbe0bc5ac8ffbb5356b74ca698aee28c
Author: Michael Chan <mchan@broadcom.com>
Date:   Wed Sep 27 16:06:21 2006 -0700

    [TG3]: Add basic 5906 support.
    
    Add support for the new 5709 device.  This is a new 10/100 Mbps chip.
    The mailbox access and firmware interface are quite different from
    all other tg3 chips.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 7a6f4369449a471a6e5718a87c53ac75a46960ba
Author: Michael Chan <mchan@broadcom.com>
Date:   Wed Sep 27 16:03:31 2006 -0700

    [TG3]: Add tg3_poll_fw().
    
    Put the firmware polling logic into a separate function.  This makes
    the code cleaner.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 126a336822a6594662f5898f1ddf33e6d048fcc7
Author: Michael Chan <mchan@broadcom.com>
Date:   Wed Sep 27 16:03:07 2006 -0700

    [TG3]: Add 5722 and 5756 support.
    
    Add IDs to support 5722 and 5756.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 3f7045c1f28bedd44389b9392b54c6fdb83ee5c6
Author: Michael Chan <mchan@broadcom.com>
Date:   Wed Sep 27 16:02:29 2006 -0700

    [TG3]: PHY fixes.
    
    Some PHY related fixes:
    
    1. Fix Serdes WoL.
    2. Fix loopback test on 10/100 only devices.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 130b8e4d0e4edadcecee9fdff2c32f33d77c4fe9
Author: Michael Chan <mchan@broadcom.com>
Date:   Wed Sep 27 16:00:40 2006 -0700

    [TG3]: Improve ASF heartbeat.
    
    Change to a different ASF heartbeat message code to improve
    reliability.
    
    There were some reports of unintended resets on real time kernels
    where the timer may be slow and cause the heartbeat to be late.
    Netpoll will also have the same problem because the timer irq will
    be unavailable.
    
    Using the new heartbeat code, the ASF firmware will also check the
    ring condition before resetting the chip when the heartbeat is
    expiring.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 3d3ebe741b2c06fe3df67739d09f6ef0e25ee41a
Author: Michael Chan <mchan@broadcom.com>
Date:   Wed Sep 27 15:59:15 2006 -0700

    [TG3]: Improve 5704S autoneg.
    
    Improve 5704S autoneg logic by using a serdes_counter field to keep
    track of the transient states.  This eliminates a 200 msec busy
    loop in the code.  Autoneg will take its course without the driver
    busy waiting for it to finish.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit a319a2773a13bab56a0d0b3744ba8703324313b5
Merge: e18fa70... 1837987...
Author: Linus Torvalds <torvalds@g5.osdl.org>
Date:   Sun Sep 24 10:15:13 2006 -0700

    Merge branch 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6
    
    * 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6: (217 commits)
      net/ieee80211: fix more crypto-related build breakage
      [PATCH] Spidernet: add ethtool -S (show statistics)
      [NET] GT96100: Delete bitrotting ethernet driver
      [PATCH] mv643xx_eth: restrict to 32-bit PPC_MULTIPLATFORM
      [PATCH] Cirrus Logic ep93xx ethernet driver
      r8169: the MMIO region of the 8167 stands behin BAR#1
      e1000, ixgb: Remove pointless wrappers
      [PATCH] Remove powerpc specific parts of 3c509 driver
      [PATCH] s2io: Switch to pci_get_device
      [PATCH] gt96100: move to pci_get_device API
      [PATCH] ehea: bugfix for register access functions
      [PATCH] e1000 disable device on PCI error
      drivers/net/phy/fixed: #if 0 some incomplete code
      drivers/net: const-ify ethtool_ops declarations
      [PATCH] ethtool: allow const ethtool_ops
      [PATCH] sky2: big endian
      [PATCH] sky2: fiber support
      [PATCH] sky2: tx pause bug fix
      drivers/net: Trim trailing whitespace
      [PATCH] ehea: IBM eHEA Ethernet Device Driver
      ...
    
    Manually resolved conflicts in drivers/net/ixgb/ixgb_main.c and
    drivers/net/sky2.c related to CHECKSUM_HW/CHECKSUM_PARTIAL changes by
    commit 84fa7933a33f806bbbaae6775e87459b1ec584c0 that just happened to be
    next to unrelated changes in this update.

commit 131852176c1f5b4350b4af811d1836db387d0c61
Author: Henrik Kretzschmar <henne@nachtwindheim.de>
Date:   Tue Aug 22 00:28:33 2006 -0700

    [TG3]: Convert the pci_device_id table to PCI_DEVICE()
    
    Convert the pci_device_ids to PCI_DEVICE() macro.  Saves 1.5k in the
    sourcefile.
    
    Signed-off-by: Henrik Kretzschmar <henne@nachtwindheim.de>
    Acked-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 50da859d4e566fba90ebda87b843970d902c903e
Author: Andreas Mohr <andi@lisas.de>
Date:   Mon Aug 14 23:54:30 2006 -0700

    [TG3]: Constify firmware structs
    
    Constify largish areas of firmware data in Tigon3 ethernet driver.
    
    non-const:
    
    lsmod:
    tg3                   101404  0
    
    objdump -x:
    .rodata 000003e8
    .data 00004a0c
    
    ls -l:
    -rw-r--r-- 1 root root 114404 2006-08-19 21:36 drivers/net/tg3.ko
    
    const:
    
    lsmod:
    tg3                   101404  0
    
    objdump -x:
    .rodata 000042c8
    .data 00000b4c
    
    ls -l:
    -rw-r--r-- 1 root root 114532 2006-08-19 21:06 drivers/net/tg3.ko
    
    Signed-off-by: Andreas Mohr <andi@lisas.de>
    Signed-off-by: Andrew Morton <akpm@osdl.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 84fa7933a33f806bbbaae6775e87459b1ec584c0
Author: Patrick McHardy <kaber@trash.net>
Date:   Tue Aug 29 16:44:56 2006 -0700

    [NET]: Replace CHECKSUM_HW by CHECKSUM_PARTIAL/CHECKSUM_COMPLETE
    
    Replace CHECKSUM_HW by CHECKSUM_PARTIAL (for outgoing packets, whose
    checksum still needs to be completed) and CHECKSUM_COMPLETE (for
    incoming packets, device supplied full checksum).
    
    Patch originally from Herbert Xu, updated by myself for 2.6.18-rc3.
    
    Signed-off-by: Patrick McHardy <kaber@trash.net>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 7282d491ecaee9883233a0e27283c4c79486279a
Author: Jeff Garzik <jeff@garzik.org>
Date:   Wed Sep 13 14:30:00 2006 -0400

    drivers/net: const-ify ethtool_ops declarations
    
    Signed-off-by: Jeff Garzik <jeff@garzik.org>

commit 6aa20a2235535605db6d6d2bd850298b2fe7f31e
Author: Jeff Garzik <jeff@garzik.org>
Date:   Wed Sep 13 13:24:59 2006 -0400

    drivers/net: Trim trailing whitespace
    
    Signed-off-by: Jeff Garzik <jeff@garzik.org>

commit 299176206b266f204be859adf9e66efd06628ab2
Author: Jeff Garzik <jeff@garzik.org>
Date:   Sat Aug 19 17:48:59 2006 -0400

    drivers/net: Remove deprecated use of pci_module_init()
    
    From: Michal Piotrowski <michal.k.k.piotrowski@gmail.com>
    
    Signed-off-by: Michal Piotrowski <michal.k.k.piotrowski@gmail.com>
    Signed-off-by: Jeff Garzik <jeff@garzik.org>

commit 1b2a720506ccf7c30baaeda5d990c29b31e21726
Author: Michael Chan <mchan@broadcom.com>
Date:   Mon Aug 7 21:46:02 2006 -0700

    [TG3]: Fix tx race condition
    
    Fix a subtle race condition between tg3_start_xmit() and tg3_tx()
    discovered by Herbert Xu <herbert@gondor.apana.org.au>:
    
    CPU0					CPU1
    tg3_start_xmit()
    	if (tx_ring_full) {
    		tx_lock
    					tg3_tx()
    						if (!netif_queue_stopped)
    		netif_stop_queue()
    		if (!tx_ring_full)
    						update_tx_ring
    			netif_wake_queue()
    		tx_unlock
    	}
    
    Even though tx_ring is updated before the if statement in tg3_tx() in
    program order, it can be re-ordered by the CPU as shown above.  This
    scenario can cause the tx queue to be stopped forever if tg3_tx() has
    just freed up the entire tx_ring.  The possibility of this happening
    should be very rare though.
    
    The following changes are made:
    
    1. Add memory barrier to fix the above race condition.
    
    2. Eliminate the private tx_lock altogether and rely solely on
    netif_tx_lock.  This eliminates one spinlock in tg3_start_xmit()
    when the ring is full.
    
    3. Because of 2, use netif_tx_lock in tg3_tx() before calling
    netif_wake_queue().
    
    4. Change TX_BUFFS_AVAIL to an inline function with a memory barrier.
    Herbert and David suggested using the memory barrier instead of
    volatile.
    
    5. Check for the full wake queue condition before getting
    netif_tx_lock in tg3_tx().  This reduces the number of unnecessary
    spinlocks when the tx ring is full in a steady-state condition.
    
    6. Update version to 3.65.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Acked-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit d14cc9a342a8004b0ecfe66f1f12120962b61d8c
Author: Christoph Hellwig <hch@lst.de>
Date:   Mon Aug 7 16:11:48 2006 -0700

    [TG3]: skb->dev assignment is done by netdev_alloc_skb
    
    All caller of netdev_alloc_skb need to assign skb->dev shortly
    afterwards.  Move it into common code.
    
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit a20e9c6291f27cac4a9ab450d124794c012f87d4
Author: David S. Miller <davem@sunset.davemloft.net>
Date:   Mon Jul 31 22:38:16 2006 -0700

    [TG3]: Convert to netdev_alloc_skb
    
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit b6e77a5346d8a739227ed73c2269966a4fd652b4
Author: Michael Chan <mchan@broadcom.com>
Date:   Tue Jul 25 16:39:12 2006 -0700

    [TG3]: Update version and reldate
    
    Update version to 3.63.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 32d8c5724b7b05c7d8f7386c49432104cc222e32
Author: Michael Chan <mchan@broadcom.com>
Date:   Tue Jul 25 16:38:29 2006 -0700

    [TG3]: Handle tg3_init_rings() failures
    
    Handle dev_alloc_skb() failures when initializing the RX rings.
    Without proper handling, the driver will crash when using a partial
    ring.
    
    Thanks to Stephane Doyon <sdoyon@max-t.com> for reporting the bug and
    providing the initial patch.
    
    Howie Xu <howie@vmware.com> also reported the same issue.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit b9ec6c1b917e2e43a058a78198d54aeca3d71c6f
Author: Michael Chan <mchan@broadcom.com>
Date:   Tue Jul 25 16:37:27 2006 -0700

    [TG3]: Add tg3_restart_hw()
    
    Add tg3_restart_hw() to handle failures when re-initializing the
    device.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit c165b0040502ef0d2b5751eef3cd96ea8210ae4c
Author: John W. Linville <linville@tuxdriver.com>
Date:   Sat Jul 8 13:28:53 2006 -0700

    [TG3]: add amd8131 to "write reorder" chipsets
    
    Add the AMD 8131 bridge to the list of chipsets that reorder writes.
    
    Signed-off-by: John W. Linville <linville@tuxdriver.com>
    Acked-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit b0026624f1aa3e38a887cb483de61f104d600b97
Author: Michael Chan <mchan@broadcom.com>
Date:   Mon Jul 3 19:42:14 2006 -0700

    [TG3]: Add ipv6 TSO feature
    
    Enable ipv6 TSO feature on chips that support it.
    
    Update version to 3.61.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 1fb9df5d3069064c037c81c0ab8bf783ffa5e373
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Sat Jul 1 19:29:39 2006 -0700

    [PATCH] irq-flags: drivers/net: Use the new IRQF_ constants
    
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Ingo Molnar <mingo@elte.hu>
    Cc: "David S. Miller" <davem@davemloft.net>
    Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Cc: Jeff Garzik <jeff@garzik.org>
    Signed-off-by: Andrew Morton <akpm@osdl.org>
    Signed-off-by: Linus Torvalds <torvalds@osdl.org>

commit e37a72de84d27ee8bc0e7dbb5c2f1774ed306dbb
Merge: 93fdf10... f83ef8c...
Author: Linus Torvalds <torvalds@g5.osdl.org>
Date:   Fri Jun 30 15:40:17 2006 -0700

    Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
    
    * master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6:
      [IPV6]: Added GSO support for TCPv6
      [NET]: Generalise TSO-specific bits from skb_setup_caps
      [IPV6]: Added GSO support for TCPv6
      [IPV6]: Remove redundant length check on input
      [NETFILTER]: SCTP conntrack: fix crash triggered by packet without chunks
      [TG3]: Update version and reldate
      [TG3]: Add TSO workaround using GSO
      [TG3]: Turn on hw fix for ASF problems
      [TG3]: Add rx BD workaround
      [TG3]: Add tg3_netif_stop() in vlan functions
      [TCP]: Reset gso_segs if packet is dodgy

commit 2c6059bca8cf5e7f722d909f2e5edda0491ac604
Author: Michael Chan <mchan@broadcom.com>
Date:   Thu Jun 29 20:16:28 2006 -0700

    [TG3]: Update version and reldate
    
    Update version to 3.61.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 52c0fd834ea0e7c6ef8616ce0a1f85bac4233ed7
Author: Michael Chan <mchan@broadcom.com>
Date:   Thu Jun 29 20:15:54 2006 -0700

    [TG3]: Add TSO workaround using GSO
    
    Use GSO to workaround a rare TSO bug on some chips.  This hardware
    bug may be triggered when the TSO header size is greater than 80
    bytes.  When this condition is detected in a TSO packet, the driver
    will use GSO to segment the packet to workaround the hardware bug.
    
    Thanks to Juergen Kreileder <jk@blackdown.de> for reporting the
    problem and collecting traces to help debug the problem.
    
    And thanks to Herbert Xu <herbert@gondor.apana.org.au> for providing
    the GSO mechanism that happens to be the perfect workaround for this
    problem.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 1661394e78b3b2cc868cd0e89c1066974302aaca
Author: Michael Chan <mchan@broadcom.com>
Date:   Thu Jun 29 20:15:13 2006 -0700

    [TG3]: Turn on hw fix for ASF problems
    
    Clear a bit to enable a hardware fix for some ASF related problem.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit f92905deb9bc89834dac247ca1a0d905ebcf629b
Author: Michael Chan <mchan@broadcom.com>
Date:   Thu Jun 29 20:14:29 2006 -0700

    [TG3]: Add rx BD workaround
    
    Add workaround to limit the burst size of rx BDs being DMA'ed to the
    chip.  This works around hardware errata on a number of 5750, 5752,
    and 5755 chips.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 29315e8770c20cbfe607ad962d87867115a44555
Author: Michael Chan <mchan@broadcom.com>
Date:   Thu Jun 29 20:12:30 2006 -0700

    [TG3]: Add tg3_netif_stop() in vlan functions
    
    Add tg3_netif_stop() when changing the vlgrp (vlan group) pointer. It
    is necessary to quiesce the device before changing that pointer.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 6ab3d5624e172c553004ecc862bfeac16d9d68b7
Author: Jörn Engel <joern@wohnheim.fh-wedel.de>
Date:   Fri Jun 30 19:25:36 2006 +0200

    Remove obsolete #include <linux/config.h>
    
    Signed-off-by: Jörn Engel <joern@wohnheim.fh-wedel.de>
    Signed-off-by: Adrian Bunk <bunk@stusta.de>

commit de8d28b16f5614aeb12bb69c8f9a38578b8d3ada
Author: David S. Miller <davem@sunset.davemloft.net>
Date:   Thu Jun 22 16:18:54 2006 -0700

    [SPARC64]: Convert sparc64 PCI layer to in-kernel device tree.
    
    One thing this change pointed out was that we really should
    pull the "get 'local-mac-address' property" logic into a helper
    function all the network drivers can call.
    
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 7967168cefdbc63bf332d6b1548eca7cd65ebbcc
Author: Herbert Xu <herbert@gondor.apana.org.au>
Date:   Thu Jun 22 02:40:14 2006 -0700

    [NET]: Merge TSO/UFO fields in sk_buff
    
    Having separate fields in sk_buff for TSO/UFO (tso_size/ufo_size) is not
    going to scale if we add any more segmentation methods (e.g., DCCP).  So
    let's merge them.
    
    They were used to tell the protocol of a packet.  This function has been
    subsumed by the new gso_type field.  This is essentially a set of netdev
    feature bits (shifted by 16 bits) that are required to process a specific
    skb.  As such it's easy to tell whether a given device can process a GSO
    skb: you just have to and the gso_type field and the netdev's features
    field.
    
    I've made gso_type a conjunction.  The idea is that you have a base type
    (e.g., SKB_GSO_TCPV4) that can be modified further to support new features.
    For example, if we add a hardware TSO type that supports ECN, they would
    declare NETIF_F_TSO | NETIF_F_TSO_ECN.  All TSO packets with CWR set would
    have a gso_type of SKB_GSO_TCPV4 | SKB_GSO_TCPV4_ECN while all other TSO
    packets would be SKB_GSO_TCPV4.  This means that only the CWR packets need
    to be emulated in software.
    
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 00b7050426da8e7e58c889c5c80a19920d2d41b3
Author: Michael Chan <mchan@broadcom.com>
Date:   Sat Jun 17 21:58:45 2006 -0700

    [TG3]: Convert to non-LLTX
    
    Herbert Xu pointed out that it is unsafe to call netif_tx_disable()
    from LLTX drivers because it uses dev->xmit_lock to synchronize
    whereas LLTX drivers use private locks.
    
    Convert tg3 to non-LLTX to fix this issue. tg3 is a lockless driver
    where hard_start_xmit and tx completion handling can run concurrently
    under normal conditions. A tx_lock is only needed to prevent
    netif_stop_queue and netif_wake_queue race condtions when the queue
    is full.
    
    So whether we use LLTX or non-LLTX, it makes practically no
    difference.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit c71302d61f844f766a44e1b04258086cc41f624e
Author: Michael Chan <mchan@broadcom.com>
Date:   Sat Jun 17 21:55:55 2006 -0700

    [TG3]: Remove unnecessary tx_lock
    
    Remove tx_lock where it is unnecessary. tg3 runs lockless and so it
    requires interrupts to be disabled and sync'ed, netif_queue and NAPI
    poll to be stopped before the device can be reconfigured. After
    stopping everything, it is no longer necessary to get the tx_lock.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 9cb3528cdbffc513eb9fb8faa45d41e397355830
Author: Michael Chan <mchan@broadcom.com>
Date:   Sat Jun 17 21:28:28 2006 -0700

    [TG3]: update version and reldate
    
    Update version to 3.60.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit df3e6548186f0baa727cd6d3a492891854bd31f2
Author: Michael Chan <mchan@broadcom.com>
Date:   Fri May 26 17:48:07 2006 -0700

    [TG3]: Add recovery logic when MMIOs are re-ordered
    
    Add recovery logic when we suspect that the system is re-ordering
    MMIOs. Re-ordered MMIOs to the send mailbox can cause bogus tx
    completions and hit BUG_ON() in the tx completion path.
    
    tg3 already has logic to handle re-ordered MMIOs by flushing the MMIOs
    that must be strictly ordered (such as the send mailbox).  Determining
    when to enable the flush is currently a manual process of adding known
    chipsets to a list.
    
    The new code replaces the BUG_ON() in the tx completion path with the
    call to tg3_tx_recover(). It will set the TG3_FLAG_MBOX_WRITE_REORDER
    flag and reset the chip later in the workqueue to recover and start
    flushing MMIOs to the mailbox.
    
    A message to report the problem will be printed. We will then decide
    whether or not to add the host bridge to the list of chipsets that do
    re-ordering.
    
    We may add some additional code later to print the host bridge's ID so
    that the user can report it more easily.
    
    The assumption that re-ordering can only happen on x86 systems is also
    removed.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 30b6c28d2aca4669f2e609ad5d77ea2a6cf0dd3a
Author: Michael Chan <mchan@broadcom.com>
Date:   Fri May 26 17:44:45 2006 -0700

    [TG3]: Add 5786 PCI ID
    
    Add PCI ID for BCM5786 which is a variant of 5787.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit f49639e643e69ff233b14966b8d48541d2e17517
Author: David S. Miller <davem@sunset.davemloft.net>
Date:   Fri Jun 9 11:58:36 2006 -0700

    [TG3]: Handle Sun onboard tg3 chips more correctly.
    
    Get rid of all the SUN_570X logic and instead:
    
    1) Make sure MEMARB_ENABLE is set when we probe the SRAM
       for config information.  If that is off we will get
       timeouts.
    
    2) Always try to sync with the firmware, if there is no
       firmware running do not treat it as an error and instead
       just report it the first time we notice this condition.
    
    3) If there is no valid SRAM signature, assume the device
       is onboard by setting TG3_FLAG_EEPROM_WRITE_PROT.
    
    Update driver version and release date.
    
    With help from Michael Chan and Fabio Massimo Di Nitto.
    
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 463d305bc51b8f5d0750a17ec0c9caf5181ec6d4
Author: Michael Chan <mchan@broadcom.com>
Date:   Mon May 22 16:36:27 2006 -0700

    [TG3]: Add some missing rx error counters
    
    Add some missing rx error counters for 5705 and newer chips.
    
    Update version to 3.58.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit ef34814426862c41c061520d4ac833be5914b5ba
Author: Karsten Keil <kkeil@suse.de>
Date:   Fri May 12 12:49:08 2006 -0700

    [TG3]: ethtool always report port is TP.
    
    Even with fiber cards ethtool reports that the connected port is TP,
    the patch fix this.
    
    Signed-off-by: Karsten Keil <kkeil@suse.de>
    Acked-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit a50bb7b9af9a7c39b2aba15678eb686ae428718c
Author: Jesper Juhl <jesper.juhl@gmail.com>
Date:   Tue May 9 23:14:35 2006 -0700

    [TG3]: Fix possible NULL deref in tg3_run_loopback().
    
    tg3_run_loopback doesn't check that dev_alloc_skb() returns anything
    useful.
    
    Even if dev_alloc_skb() fails to return an skb to us we'll happily go
    on and assume it did, so we risk dereferencing a NULL pointer.  Much
    better to fail gracefully by returning -ENOMEM than crashing here.
    
    Signed-off-by: Jesper Juhl <jesper.juhl@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit b276764091cf241cf0b31e8cb76c67dcf9a9c1d8
Author: Michael Chan <mchan@broadcom.com>
Date:   Sat Apr 29 19:01:06 2006 -0700

    [TG3]: Update version and reldate
    
    Update version to 3.57.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit f6d9a2565bc754043f43b8f51b19f77ee0269411
Author: Michael Chan <mchan@broadcom.com>
Date:   Sat Apr 29 19:00:24 2006 -0700

    [TG3]: Fix bug in nvram write
    
    Fix bug in nvram write function. If the starting nvram address offset
    happens to be the last dword of the page, the NVRAM_CMD_LAST bit will
    not get set in the existing code. This patch fixes the bug by changing
    the "else if" to "if" so that the last dword condition always gets
    checked.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 8e7a22e3eb49042c048f24bab40cf5cf8915487d
Author: Gary Zambrano <zambrano@broadcom.com>
Date:   Sat Apr 29 18:59:13 2006 -0700

    [TG3]: Add reset_phy parameter to chip reset functions
    
    Add a reset_phy parameter to tg3_reset_hw() and tg3_init_hw(). With
    the full chip reset during MAC address change, the automatic PHY reset
    during chip reset will cause a link down and bonding will not work
    properly as a result. With this reset_phy parameter, we can do a chip
    reset without link down when changing MAC address or MTU.
    
    Signed-off-by: Gary Zambrano <zambrano@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 58712ef9f2cbaaeac5b32ac11810a4bbd0eeacc5
Author: Michael Chan <mchan@broadcom.com>
Date:   Sat Apr 29 18:58:01 2006 -0700

    [TG3]: Reset chip when changing MAC address
    
    Do the full chip reset when changing MAC address if ASF is enabled.
    
    ASF sometimes uses a different MAC address than the driver. Without
    the reset, the ASF MAC address may be overwritten when the driver's
    MAC address is changed.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit c424cb249dae10fb7f118f89091f1329b62b92f4
Author: Michael Chan <mchan@broadcom.com>
Date:   Sat Apr 29 18:56:34 2006 -0700

    [TG3]: Add phy workaround
    
    Add some PHY workaround code to reduce jitter on some PHYs.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit c8e1e82b6a97ad44517517aa58b7b794ead0bf33
Author: Michael Chan <mchan@broadcom.com>
Date:   Sat Apr 29 18:55:17 2006 -0700

    [TG3]: Call netif_carrier_off() during phy reset
    
    Add netif_carrier_off() call during tg3_phy_reset(). This is needed
    to properly track the netif_carrier state in cases where we do a
    PHY reset with interrupts disabled. The SerDes code will not run
    properly if the netif_carrier state is wrong.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit bbadf503d7c7e6efe0a4cd731f8855ba08276215
Author: Michael Chan <mchan@broadcom.com>
Date:   Thu Apr 6 21:46:34 2006 -0700

    [TG3]: Speed up SRAM access (2nd version)
    
    Speed up SRAM read and write functions if possible by using MMIO
    instead of config. cycles. With this change, the post reset signature
    done at the end of D3 power change must now be moved before the D3
    power change.
    
    IBM reported a problem on powerpc blades during ethtool self test that
    was caused by the memory test taking excessively long. Config.  cycles
    are very slow on powerpc and the memory test can take more than 10
    seconds to complete using config. cycles.
    
    David Miller informed me that an earlier version of the patch caused
    problems on sparc64 systems with built-in tg3 chips. This version
    fixes the problem by excluding all SUN built-in tg3 chips from doing
    MMIO SRAM access.
    
    TG3_FLAG_EEPROM_WRITE_PROT is also set unconditionally when
    TG3_FLG2_SUN_570X is set. This should be sane as all SUN chips are
    built-in and do not require Vaux switching.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit d2d746f83b74022a50d28f7f0f496842c9cde330
Author: Michael Chan <mchan@broadcom.com>
Date:   Thu Apr 6 21:45:39 2006 -0700

    [TG3]: Kill some less useful flags
    
    Kill the TG3_FLAG_NO_{TX|RX}_PSEUDO_CSUM flags because they are not
    very useful. This will free up some bits for new flags.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit ad96b485b4224785bcca478cfba02d06c46ee575
Author: Adrian Bunk <bunk@stusta.de>
Date:   Wed Apr 5 22:21:04 2006 -0700

    [TG3]: Fix a memory leak.
    
    This patch fixes a memory leak (buf wasn't freed) spotted by the
    Coverity checker.
    
    Signed-off-by: Adrian Bunk <bunk@stusta.de>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 63589ed0785ffc715777a54ccb96cdfaea9edbc0
Merge: 24c7cd0... a580290...
Author: Linus Torvalds <torvalds@g5.osdl.org>
Date:   Sun Apr 2 12:58:45 2006 -0700

    Merge git://git.kernel.org/pub/scm/linux/kernel/git/bunk/trivial
    
    * git://git.kernel.org/pub/scm/linux/kernel/git/bunk/trivial: (48 commits)
      Documentation: fix minor kernel-doc warnings
      BUG_ON() Conversion in drivers/net/
      BUG_ON() Conversion in drivers/s390/net/lcs.c
      BUG_ON() Conversion in mm/slab.c
      BUG_ON() Conversion in mm/highmem.c
      BUG_ON() Conversion in kernel/signal.c
      BUG_ON() Conversion in kernel/signal.c
      BUG_ON() Conversion in kernel/ptrace.c
      BUG_ON() Conversion in ipc/shm.c
      BUG_ON() Conversion in fs/freevxfs/
      BUG_ON() Conversion in fs/udf/
      BUG_ON() Conversion in fs/sysv/
      BUG_ON() Conversion in fs/inode.c
      BUG_ON() Conversion in fs/fcntl.c
      BUG_ON() Conversion in fs/dquot.c
      BUG_ON() Conversion in md/raid10.c
      BUG_ON() Conversion in md/raid6main.c
      BUG_ON() Conversion in md/raid5.c
      Fix minor documentation typo
      BFP->BPF in Documentation/networking/tuntap.txt
      ...

commit 5d9428de1a9785f10a4339f80b717be665ba51c7
Author: Eric Sesterhenn <snakebyte@gmx.de>
Date:   Sun Apr 2 13:52:48 2006 +0200

    BUG_ON() Conversion in drivers/net/
    
    this changes if() BUG(); constructs to BUG_ON() which is
    cleaner, contains unlikely() and can better optimized away.
    
    Signed-off-by: Eric Sesterhenn <snakebyte@gmx.de>
    Signed-off-by: Adrian Bunk <bunk@stusta.de>

commit 5c516c10198a8258c0c40f200a5a01a3fa0a0de4
Author: David S. Miller <davem@sunset.davemloft.net>
Date:   Sat Apr 1 00:33:31 2006 -0800

    [TG3]: Update driver version and reldate.
    
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 758a613936223699f99081fc75eff7cf67b208f6
Author: David S. Miller <davem@sunset.davemloft.net>
Date:   Sat Apr 1 00:32:56 2006 -0800

    [TG3]: Revert "Speed up SRAM access"
    
    Undo commit 100c4673307f5806788791b9b886877c806afd96
    
    MMIOs timeout more quickly that PCI config cycles and some
    of these SRAM accesses can take a very long time, triggering
    the MMIO limits on some sparc64 PCI controllers and thus
    resulting in bus timeouts and bus errors.
    
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit e3a05978f18a38ae13bb3f1184abf3c999e06da9
Author: Michael Chan <mchan@broadcom.com>
Date:   Mon Mar 27 23:21:07 2006 -0800

    [TG3]: Update version and reldate
    
    Update version to 3.55.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit f475f163f128a0d9c92dfa90bcb5953fd8f9766f
Author: Michael Chan <mchan@broadcom.com>
Date:   Mon Mar 27 23:20:14 2006 -0800

    [TG3]: Skip timer code during full lock
    
    Skip the main timer code if interrupts are disabled in the full lock
    state.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 100c4673307f5806788791b9b886877c806afd96
Author: Michael Chan <mchan@broadcom.com>
Date:   Mon Mar 27 23:19:00 2006 -0800

    [TG3]: Speed up SRAM access
    
    Speed up SRAM read and write functions if possible by using MMIO
    instead of config. cycles. With this change, the post reset signature
    done at the end of D3 power change must now be moved before the D3
    power change.
    
    IBM reported a problem on powerpc blades during ethtool self test
    that was caused by the memory test taking excessively long. Config.
    cycles are very slow on powerpc and the memory test can take more
    than 10 seconds to complete using config. cycles. As a result, NETDEV
    WATCHDOG can be triggered during self test and the chip can end up in
    a funny state.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit ff18ff023495a4f1ce7c65e7c376c4720eccf4da
Author: Michael Chan <mchan@broadcom.com>
Date:   Mon Mar 27 23:17:27 2006 -0800

    [TG3]: Fix PHY loopback on 5700
    
    Fix PHY loopback failure on some 5700 devices.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 6728a8e2e180b96ac7940dd4d766c52f8e177717
Author: Michael Chan <mchan@broadcom.com>
Date:   Mon Mar 27 23:16:49 2006 -0800

    [TG3]: Fix bug in 40-bit DMA workaround code
    
    Need to check the TG3_FLAG_40BIT_DMA_BUG flag in the workaround code
    path instead of device flags.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 008652b337364ee994a0cd71d88a0fe9f00fc7ca
Author: Michael Chan <mchan@broadcom.com>
Date:   Mon Mar 27 23:14:53 2006 -0800

    [TG3]: Fix probe failure due to invalid MAC address
    
    Some older bootcode in some devices may report 0 MAC address in
    SRAM when booting up from low power state. This patch fixes the
    problem by checking for a valid MAC address in SRAM and falling back
    to NVRAM if necessary.
    
    Thanks to walt <wa1ter@myrealbox.com> for reporting the problem
    and helping to debug it.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 95381c893dd71a534ab56f09b12a4e2118aa0f32
Author: David S. Miller <davem@sunset.davemloft.net>
Date:   Thu Mar 23 01:29:06 2006 -0800

    [TG3]: Update driver version and reldate.
    
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit d3c7b886978bef42f5ea487dec376c482d3cd7e3
Author: Michael Chan <mchan@broadcom.com>
Date:   Thu Mar 23 01:28:25 2006 -0800

    [TG3]: Add 5755 nvram support
    
    Add 5755 nvram support.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit af36e6b6d7f4ad7a5ccfd14dfa71ec941255f93d
Author: Michael Chan <mchan@broadcom.com>
Date:   Thu Mar 23 01:28:06 2006 -0800

    [TG3]: Add 5755 support
    
    Add support for new chip 5755 which is very similar to 5787.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 056755f4d73d49b4adcbb8ecdaf75138cf166bd3
Author: David S. Miller <davem@sunset.davemloft.net>
Date:   Wed Mar 22 01:07:53 2006 -0800

    [TG3]: Bump driver version and reldate.
    
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 15c3b696101992c4d69962325f0e91647164427f
Author: Michael Chan <mchan@broadcom.com>
Date:   Wed Mar 22 01:06:52 2006 -0800

    [TG3]: Skip phy power down on some devices
    
    Some PHYs should not be powered down in tg3_set_power_state() because
    of bugs or other hardware limitations.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit caf636c760b33c72ebf018ff03c1b0d79ea6656a
Author: Michael Chan <mchan@broadcom.com>
Date:   Wed Mar 22 01:05:31 2006 -0800

    [TG3]: Fix SRAM access during tg3_init_one()
    
    5700 and 5701 will not return correct SRAM data when the chip is in
    D3hot power state. tg3_get_eeprom_hw_cfg() must first put the device
    in D0 before reading SRAM.
    
    Thanks to Thomas Chenault at Dell for noticing this problem.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 30ca3e376e82cc44488b1d377adfb10b5818548e
Author: David S. Miller <davem@sunset.davemloft.net>
Date:   Mon Mar 20 23:02:36 2006 -0800

    [TG3]: Don't mark tg3_test_registers() as returning const.
    
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 81789ef5c9a435fbf94224987efe6fbb97ffab09
Author: Adrian Bunk <bunk@stusta.de>
Date:   Mon Mar 20 23:00:14 2006 -0800

    [TG3]: make drivers/net/tg3.c:tg3_request_irq() static
    
    This patch makes the needlessly global function tg3_request_irq()
    static.
    
    Signed-off-by: Adrian Bunk <bunk@stusta.de>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 59f1741e541bf4f6139599389610a70de49c3ad2
Author: Jeff Mahoney <jeffm@suse.com>
Date:   Mon Mar 20 22:39:21 2006 -0800

    [TG3]: netif_carrier_off runs too early; could still be queued when init fails
    
    Move the netif_carrier_off() call from tg3_init_one()->
    tg3_init_link_config() to tg3_open() as is the convention for most other
    network drivers.
    
    I was getting a panic after a tg3 device failed to initialize due to DMA
    failure.  The oops pointed to the link watch queue with spinlock debugging
    enabled.  Without spinlock debugging, the Oops didn't occur.
    
    I suspect that the link event was getting queued but not executed until
    after the DMA test had failed and the device was freed.  The link event was
    then operating on freed memory, which could contain anything.  With this
    patch applied, the Oops no longer occurs.
    
    [ Based upon feedback from Michael Chan, we move netif_carrier_off()
      to the end of tg3_init_one() instead of moving it to tg3_open() -DaveM ]
    
    Signed-off-by: Jeff Mahoney <jeffm@suse.com>
    Signed-off-by: Andrew Morton <akpm@osdl.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit e9e678006ee865b0f7e53069b0e519141a710a6e
Author: Michael Chan <mchan@broadcom.com>
Date:   Mon Mar 20 22:29:52 2006 -0800

    [TG3]: update version and reldate
    
    Update version to 3.52.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit c4e6575c78b83928c470d81b271909084a2efd37
Author: Michael Chan <mchan@broadcom.com>
Date:   Mon Mar 20 22:29:32 2006 -0800

    [TG3]: Add firmware version info
    
    Add fw_version information to ethtool -i.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 1820180b0e59cc48019414018b180518059f50d3
Author: Michael Chan <mchan@broadcom.com>
Date:   Mon Mar 20 22:29:15 2006 -0800

    [TG3]: nvram cleanup
    
    Some nvram related cleanup:
    
    1. Add a tg3_nvram_read_swab() since swabing the data is frequently
    done.
    
    2. Add a function to convert nvram address to physical address
    instead of doing it in 2 separate places.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 79f4d13a15774c2d442b619bad95a4c612eed4f3
Author: Michael Chan <mchan@broadcom.com>
Date:   Mon Mar 20 22:28:57 2006 -0800

    [TG3]: Fixup memory test for 5787
    
    Ethtool memory test on 5787 requires a new memory table.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit fcfa0a32c767219c1bdad621ef4a3aff1904cbbd
Author: Michael Chan <mchan@broadcom.com>
Date:   Mon Mar 20 22:28:41 2006 -0800

    [TG3]: Add new one-shot MSI handler
    
    Support one-shot MSI on 5787.
    
    This one-shot MSI idea is credited to David Miller. In this mode, MSI
    disables itself automatically after it is generated, saving the driver
    a register access to disable it for NAPI.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 9c27dbdf64cba05d0cacc343118a7fd01d4b82f7
Author: Michael Chan <mchan@broadcom.com>
Date:   Mon Mar 20 22:28:27 2006 -0800

    [TG3]: Add ipv6 checksum support
    
    Support ipv6 tx csum on 5787 by setting NETIF_F_HW_CSUM.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 5a6f3074c2ea5a7b4ff5b18f0e1fd9b1257e1a29
Author: Michael Chan <mchan@broadcom.com>
Date:   Mon Mar 20 22:28:05 2006 -0800

    [TG3]: Add new hard_start_xmit
    
    Support 5787 hardware TSO using a new flag TG3_FLG2_HW_TSO_2.
    
    Since the TSO interface is slightly different and these chips have
    finally fixed the 4GB DMA problem and do not have the 40-bit DMA
    problem, a new hard_start_xmit is used for these chips. All previous
    chips will use the old hard_start_xmit that is now renamed
    tg3_start_xmit_dma_bug().
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 1b27777a9b9b2b6d1c06000b7a31262d198b4238
Author: Michael Chan <mchan@broadcom.com>
Date:   Mon Mar 20 22:27:48 2006 -0800

    [TG3]: Add 5787 nvram support
    
    Support additional nvrams and new nvram format for 5787 and 5754.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit d9ab5ad12b0d865bdb1b750d81192d34465541e9
Author: Michael Chan <mchan@broadcom.com>
Date:   Mon Mar 20 22:27:35 2006 -0800

    [TG3]: Add 5787 and 5754 basic support
    
    Add basic support for 2 new chips 5787 and 5754.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 4f81c32b028aecd818634b1ef36aae3b2b3e66ce
Author: Michael Chan <mchan@broadcom.com>
Date:   Mon Mar 20 21:33:42 2006 -0800

    [TG3]: Fix tg3_get_ringparam()
    
    Fix-up tg3_get_ringparam() to return the correct parameters.
    
    Set the jumbo rx ring parameter only if it is supported by the chip
    and currently in use.
    
    Add missing value for tx_max_pending, noticed by Rick Jones.
    
    Update version to 3.51.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit e75f7c900944aa90831f6d343ca40090a68b56dd
Author: Michael Chan <mchan@broadcom.com>
Date:   Mon Mar 20 21:33:26 2006 -0800

    [TG3]: Add some missing netif_running() checks
    
    Add missing netif_running() checks in tg3's dev->set_multicast_list()
    and dev->set_mac_address(). If not netif_running(), these 2 calls can
    simply return 0 after storing the new settings if required.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 2e2e4f5c996d577383c5cb584b153b39f4961155
Author: Michael Chan <mchan@broadcom.com>
Date:   Mon Mar 20 17:48:18 2006 -0800

    [TG3]: Update version and reldate
    
    Update version to 3.50.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit bc1c756741b065cfebf850e4164c0e2aae9d527f
Author: Michael Chan <mchan@broadcom.com>
Date:   Mon Mar 20 17:48:03 2006 -0800

    [TG3]: Support shutdown WoL.
    
    Support WoL during shutdown by calling
    tg3_set_power_state(tp, PCI_D3hot) during tg3_close().
    
    Change the power state parameter to pci_power_t type and use
    constants defined in pci.h.
    
    Certain ethtool operations cannot be performed after tg3_close()
    because the device will go to low power state. Add return -EAGAIN
    in such cases where appropriate.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 4e3a7aaa28db952392814f889dfbd25672266d29
Author: Michael Chan <mchan@broadcom.com>
Date:   Mon Mar 20 17:47:44 2006 -0800

    [TG3]: Enable TSO by default
    
    Enable TSO by default on newer chips that support TSO in hardware.
    Leave TSO off by default on older chips that do firmware TSO because
    performance is slightly lower.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit d4d2c558fd3e1f5e386b153f194aa8f0be496c77
Author: Michael Chan <mchan@broadcom.com>
Date:   Mon Mar 20 17:47:20 2006 -0800

    [TG3]: Add support for 5714S and 5715S
    
    Add support for 5714S and 5715S.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit c4a1745aa09fc110afdefea0e5d025043e348bae
Merge: 88dcb91... ac0eb3e...
Author: Linus Torvalds <torvalds@g5.osdl.org>
Date:   Mon Mar 20 11:57:50 2006 -0800

    Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6
    
    * master.kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6: (230 commits)
      [SPARC64]: Update defconfig.
      [SPARC64]: Fix 2 bugs in huge page support.
      [SPARC64]: CONFIG_BLK_DEV_RAM fix
      [SPARC64]: Optimized TSB table initialization.
      [SPARC64]: Allow CONFIG_MEMORY_HOTPLUG to build.
      [SPARC64]: Use SLAB caches for TSB tables.
      [SPARC64]: Don't kill the page allocator when growing a TSB.
      [SPARC64]: Randomize mm->mmap_base when PF_RANDOMIZE is set.
      [SPARC64]: Increase top of 32-bit process stack.
      [SPARC64]: Top-down address space allocation for 32-bit tasks.
      [SPARC64] bbc_i2c: Fix cpu check and add missing module license.
      [SPARC64]: Fix and re-enable dynamic TSB sizing.
      [SUNSU]: Fix missing spinlock initialization.
      [TG3]: Do not try to access NIC_SRAM_DATA_SIG on Sun parts.
      [SPARC64]: First cut at VIS simulator for Niagara.
      [SPARC64]: Fix system type in /proc/cpuinfo and remove bogus OBP check.
      [SPARC64]: Add SMT scheduling support for Niagara.
      [SPARC64]: Fix 32-bit truncation which broke sparsemem.
      [SPARC64]: Move over to sparsemem.
      [SPARC64]: Fix new context version SMP handling.
      ...

commit d378aca6ec708bfb24df5c47801b1f2399efc481
Merge: abc71c4... 7705a87...
Author: Jeff Garzik <jeff@garzik.org>
Date:   Mon Mar 20 04:38:03 2006 -0500

    Merge branch 'master'

commit 72b845e04e99298e5179b31e8de16afed52a2627
Author: David S. Miller <davem@sunset.davemloft.net>
Date:   Tue Mar 14 14:11:48 2006 -0800

    [TG3]: Do not try to access NIC_SRAM_DATA_SIG on Sun parts.
    
    Sun does't put an SEEPROM behind the tigon3 chip, among other things,
    so accesses to these areas just give bus timeouts.
    
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 4a29cc2e503b33a1e96db4c3f9a94165f153f259
Author: Michael Chan <mchan@broadcom.com>
Date:   Sun Mar 19 13:21:12 2006 -0800

    [TG3]: 40-bit DMA workaround part 2
    
    The 40-bit DMA workaround recently implemented for 5714, 5715, and
    5780 needs to be expanded because there may be other tg3 devices
    behind the EPB Express to PCIX bridge in the 5780 class device.
    
    For example, some 4-port card or mother board designs have 5704 behind
    the 5714.
    
    All devices behind the EPB require the 40-bit DMA workaround.
    
    Thanks to Chris Elmquist again for reporting the problem and testing
    the patch.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit abc71c46dc0a12ab7fddc18cfe4f4aa26808c79b
Merge: 30dcbf2... 232a347...
Author: Jeff Garzik <jeff@garzik.org>
Date:   Thu Mar 16 19:27:08 2006 -0500

    Merge branch 'upstream-fixes'

commit 0ade309be739eceedc4812798da09d698a59867d
Author: Adrian Bunk <bunk@stusta.de>
Date:   Sat Mar 11 18:49:38 2006 -0800

    [TG3] tg3_bus_string(): remove dead code
    
    The Coverity checker spotted this dead code (note that (clock_ctrl == 7)
    is already handled above).
    
    Signed-off-by: Adrian Bunk <bunk@stusta.de>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 749dfc70554f2c9e6624ac843d66571265ed9338
Merge: 74f5ec2... 0992a5d...
Author: Jeff Garzik <jeff@garzik.org>
Date:   Sat Mar 11 13:35:31 2006 -0500

    Merge branch 'upstream-fixes'

commit 72f2afb8a6858edd9335cd158eb21053a0c2c39a
Author: Michael Chan <mchan@broadcom.com>
Date:   Mon Mar 6 19:28:35 2006 -0800

    [TG3]: Add DMA address workaround
    
    Add DMA workaround for chips that do not support full 64-bit DMA
    addresses.
    
    5714, 5715, and 5780 chips only support DMA addresses less than 40
    bits. On 64-bit systems with IOMMU, set the dma_mask to 40-bit so
    that pci_map_xxx() calls will map the DMA address below 40 bits if
    necessary. On 64-bit systems without IOMMU, set the dma_mask to
    64-bit and check for DMA addresses exceeding the limit in
    tg3_start_xmit().
    
    5788 only supports 32-bit DMA so need to set the mask appropriately
    also.
    
    Thanks to Chris Elmquist at SGI for reporting and helping to debug
    the problem on 5714.
    
    Thanks to David Miller for explaining the HIGHMEM and DMA stuff.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit f71e130966ba429dbd24be08ddbcdf263df9a5ad
Author: Arjan van de Ven <arjan@infradead.org>
Date:   Fri Mar 3 21:33:57 2006 -0500

    Massive net driver const-ification.

commit 051d3cbd96909b2fe6b5038e7bbe77f41356db05
Author: David S. Miller <davem@davemloft.net>
Date:   Mon Feb 27 12:51:27 2006 -0800

    [TG3]: Fix Sun tg3 variant detection.
    
    Some Sun parts don't have PCI_VENDOR_ID_SUN in the subsystem
    vendor ID.  So add another fallback test, which is the name
    of the OBP firmware device tree node.  If it's a Sun part we'll
    get "network", else it will be named "ethernet".
    
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 6e2be3ea4fab4d1c02e369719311e8d7ae6cc7c1
Author: David S. Miller <davem@sunset.davemloft.net>
Date:   Thu Feb 2 17:29:59 2006 -0800

    [TG3]: Update driver version and release date.
    
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 7faa006f94fda56a587242b2a22fa19abf840222
Author: Michael Chan <mchan@broadcom.com>
Date:   Thu Feb 2 17:29:28 2006 -0800

    [TG3]: Flush tg3_reset_task()
    
    Make sure tg3_reset_task() is flushed in the close and suspend paths
    as noted by Jeff Garzik.
    
    In the close path, calling flush_scheduled_work() may cause deadlock
    if linkwatch_event() is on the workqueue. linkwatch_event() will try
    to get the rtnl_lock() which is already held by tg3_close(). So
    instead, we set a flag in tg3_reset_task() and tg3_close() polls
    the flag until it is cleared.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit ec41c7dfd525468decb9da9281dbc9ed82d98c98
Author: Michael Chan <mchan@broadcom.com>
Date:   Tue Jan 17 02:40:55 2006 -0800

    [TG3]: Refine nvram locking
    
    Add nvram lock count so that calls to tg3_nvram_lock()/unlock() can
    be nested. Add error checking to all callers of tg3_nvram_lock()
    where appropriate. To prevent nvram lock failures after halting the
    firmware, it is also necessary to release firmware's nvram lock in
    tg3_halt_cpu().
    
    Update version to 3.48.
    
    Based on David Miller's initial patch.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit fd30333d0fab9e870af89e112454996c188655e9
Author: Alexey Dobriyan <adobriyan@gmail.com>
Date:   Tue Jan 3 14:19:25 2006 -0800

    [TG3]: fixup tot_len calculation
    
    Turning struct iphdr::tot_len into __be16 added sparse warning.
    
    Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 14c850212ed8f8cbb5972ad6b8812e08a0bc901c
Author: Arnaldo Carvalho de Melo <acme@mandriva.com>
Date:   Tue Dec 27 02:43:12 2005 -0200

    [INET_SOCK]: Move struct inet_sock & helper functions to net/inet_sock.h
    
    To help in reducing the number of include dependencies, several files were
    touched as they were getting needed headers indirectly for stuff they use.
    
    Thanks also to Alan Menegotto for pointing out that net/dccp/proto.c had
    linux/dccp.h include twice.
    
    Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit a8b554e75b0c14d5e12a11eaea604e536f49da29
Author: David S. Miller <davem@sunset.davemloft.net>
Date:   Wed Dec 28 13:05:41 2005 -0800

    [TG3]: Update driver version and reldate.
    
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 091465d7514893a55dcf63e420698b21159c39a7
Author: Chris Elmquist <chrise@sgi.com>
Date:   Tue Dec 20 13:25:19 2005 -0800

    [TG3]: ethtool -d hangs PCIe systems
    
    Resubmitting after recommendation to use GET_REG32_1() instead of
    GET_REG32_LOOP(..., 1).  Retested.  Problem remains fixed.
    
    Prevent tg3_get_regs() from reading reserved and undocumented registers
    at RX_CPU_BASE and TX_CPU_BASE offsets which caused hostile behavior
    on PCIe platforms.
    
    Acked-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 38690194bc897dd60a61a71b15e861e13b5d8bdd
Author: Michael Chan <mchan@broadcom.com>
Date:   Mon Dec 19 16:27:28 2005 -0800

    [TG3]: Fix ethtool memory test
    
    Skip the memory 0xb50 to 0x1000 during "ethtool -t" memory test.
    Overwriting memory in this region can cause ASF problems.
    
    Update version and release date.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit b401e9e2ec44a5fc1d8053546276bff584b7118e
Author: Michael Chan <mchan@broadcom.com>
Date:   Mon Dec 19 16:27:04 2005 -0800

    [TG3]: Add tw32_wait_f() for some sensitive registers
    
    The tw32_f() function (register write with immediate read flush) can
    hang when used on some registers to switch clock frequencies and
    power. A new tw32_wait_f() is added for such registers with the
    delay before the read and after the read.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit dc56b7d46dd2b303a844166ef931270b882bf08c
Author: Michael Chan <mchan@broadcom.com>
Date:   Mon Dec 19 16:26:28 2005 -0800

    [TG3]: Some low power fixes
    
    Add some missing workarounds in tg3_set_power_state():
    
    1. Workaround to prevent overdrawing current on 5714.
    
    2. Do not power down 5700's PHY because of hw limitation.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 8c2dc7e1e7213c55f1b97eba09de6c0cee9ad12f
Author: Michael Chan <mchan@broadcom.com>
Date:   Mon Dec 19 16:26:02 2005 -0800

    [TG3]: Fix peer device handling
    
    Locate the pdev_peer for dual port 5714 NIC devices in addition to
    5704 devices. The name is also changed to tg3_find_peer() from
    tg3_find_5704_peer(). It is also necessary to call netdev_priv() to
    get to the peer's private tg3 structure.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 6921d201f77e14848df2eaa597e26525f468abea
Author: Michael Chan <mchan@broadcom.com>
Date:   Tue Dec 13 21:15:53 2005 -0800

    [TG3]: Fix low power state
    
    Fix the following bugs in tg3_set_power_state():
    
    1. Both WOL and ASF flags require switching to aux power.
    
    2. Add a missing handshake with firmware to enable WOL.
    
    3. Turn off the PHY if both WOL and ASF are disabled.
    
    4. Add nvram arbitration before halting the firmware.
    
    5. Fix tg3_setup_copper_phy() to switch to 100Mbps when
       changing to low power state.
    
    Update revision and date.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 16fe9d74f14ed74af778c5db7f9129e29916f4a7
Author: Michael Chan <mchan@broadcom.com>
Date:   Tue Dec 13 21:09:54 2005 -0800

    [TG3]: Fix 5704 single-port mode
    
    If the dual-port 5704 is configured as a single-port device with
    only one PCI function, it would trigger a BUG() condition in
    tg3_find_5704_peer(). This fixes the problem by returning its
    own pdev if the peer cannot be found.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 6a9eba15f51c56da637e45ea1316eaa2a848986a
Author: Michael Chan <mchan@broadcom.com>
Date:   Tue Dec 13 21:08:58 2005 -0800

    [TG3]: Fix suspend and resume
    
    Fix tg3_suspend() and tg3_resume() by clearing and setting the
    TG3_FLAG_INIT_COMPLETE flag when appropriate. tg3_set_power_state()
    looks at TG3_FLAG_INIT_COMPLETE on the peer device to determine
    when to appropriately switch to aux power.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 381291b7d3e17ac966498312dc571dcca1b93efc
Author: Michael Chan <mchan@broadcom.com>
Date:   Tue Dec 13 21:08:21 2005 -0800

    [TG3]: Fix nvram arbitration bugs.
    
    The nvram arbitration rules were not strictly followed in a few places
    and this could lead to reading corrupted values from the nvram.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 1f064a87c80c86bd3878e6633de61e8b71aa6788
Author: Stephen Hemminger <shemminger@osdl.org>
Date:   Tue Dec 6 17:36:44 2005 -0800

    [TG3]: remove warning on race
    
    [ Move assosciated code comment to the correct spot, and
      update driver version and release date -DaveM ]
    
    Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit f9a5f7d3f3319aac02a7a36a2fea10bd33c3d16a
Author: Tobias Klauser <tklauser@nuerscht.ch>
Date:   Sat Oct 29 15:09:26 2005 +0200

    [PATCH] drivers/net/tg3: Use the DMA_{32,64}BIT_MASK constants
    
    This one from my DMA_{32,64}BIT_MASK series did not seem to make it
    through to upstream.
    
    Use the DMA_{32,64}BIT_MASK constants from dma-mapping.h when calling
    pci_set_dma_mask() or pci_set_consistent_dma_mask()
    This patch includes dma-mapping.h explicitly because it caused errors
    on some architectures otherwise.
    See http://marc.theaimsgroup.com/?t=108001993000001&r=1&w=2 for details
    
    Signed-off-by: Tobias Klauser <tklauser@nuerscht.ch>
    Signed-off-by: Jeff Garzik <jgarzik@pobox.com>

commit b4558ea93d66a43f7990d26f145fd4c54a01c9bf
Author: Jesper Juhl <jesper.juhl@gmail.com>
Date:   Fri Oct 28 16:53:13 2005 -0400

    drivers/net: Remove pointless checks for NULL prior to calling kfree()

commit 37ff238d68683d42e7363eee3303773906c336d9
Author: Michael Chan <mchan@broadcom.com>
Date:   Wed Oct 26 15:49:51 2005 -0700

    [PATCH] tg3: update version and minor fixes
    
    Update version and reldate and add more sanity checking to
    tg3_set_settings().
    
    Signed-off-by: Gary Zambrano <zambrano@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: Jeff Garzik <jgarzik@pobox.com>

commit 28fbef78a420acdea20570d31f3bdcbfa0cac0d2
Author: Michael Chan <mchan@broadcom.com>
Date:   Wed Oct 26 15:48:35 2005 -0700

    [PATCH] tg3: fix ASF heartbeat
    
    Change the ASF heart beat to 5 seconds for faster detection of system
    crash. The driver sends the heartbeat every 2 seconds and the ASF
    firmware will timeout and reset the device if no heartbeat is received
    after 5 seconds. The old scheme of 2 minutes is ineffective.
    
    tg3_write_mem_fast() is added to speed up the IO to send the heartbeat.
    When no workaround is needed, it will use direct MMIO to memory space
    to write to memory.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: Jeff Garzik <jgarzik@pobox.com>

commit a4e2b347848bf626b822599329933887dc90e50f
Author: Michael Chan <mchan@broadcom.com>
Date:   Wed Oct 26 15:46:52 2005 -0700

    [PATCH] tg3: add 5714/5715 support
    
    Add complete support for 5714/5715. These chips are very similar to
    5780 so the changes are very trivial. A TG3_FLG2_5780_CLASS flag is
    added to identify these chips.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: Jeff Garzik <jgarzik@pobox.com>

commit ed39f731ab2e77e58122232f6e27333331d7793d
Author: David S. Miller <davem@sunset.davemloft.net>
Date:   Mon Oct 3 16:25:23 2005 -0700

    [TG3]: Update driver version and release date.
    
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 399de50bbbb2501a6db43daaa8a2dafbc9bcfe0c
Author: Michael Chan <mchan@broadcom.com>
Date:   Mon Oct 3 14:02:39 2005 -0700

    [TG3]: Refine AMD K8 write-reorder chipset test.
    
    Test for VIA K8T800 north bridge instead of AMD K8 HyperTransport
    bridge based on new information from Andi Kleen. The AMD
    HyperTransport interface is not responsible for PCI transactions
    and so the re-ordering is more likely done by the VIA north bridge.
    This code is subject to change if we get more information from AMD
    or VIA.
    
    PCI Express devices are excluded from doing the read flush since all
    chipsets in the write_reorder list are PCI chipsets.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit c8a6c2963982c68475f409aeee21aa80b923cb9c
Author: David S. Miller <davem@sunset.davemloft.net>
Date:   Tue Sep 27 12:13:38 2005 -0700

    [TG3]: Update driver version and release date.
    
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit f9804ddbeec2ea709255830a8822bfb4e7584f6a
Author: Michael Chan <mchan@broadcom.com>
Date:   Tue Sep 27 12:13:10 2005 -0700

    [TG3]: misc. fixes
    
    Fix interrupt test handler by adding check for IRQ assertion in
    PCI_STATE register in addition to the status block updated bit.
    
    Add test for valid ethernet address in tg3_set_mac_addr().
    
    Add tg3_bus_string() to setup the PCI bus speed/width string for all
    PCI/PCIX/PCI Express devices. This is used to print the bus type
    during init_one().
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit c94e39418ab6eccf863581f4e0d847da0080b2d3
Author: Michael Chan <mchan@broadcom.com>
Date:   Tue Sep 27 12:12:42 2005 -0700

    [TG3]: 5780 PHY fixes
    
    Fix 5780 PHY related problems:
    
    1. MAC_RX_MODE reset must be done before setting up the MAC_MODE
       register on 5705_PLUS chips or the chip will stop receiving after
       a while. The MAC_RX_MODE reset is needed to prevent intermittently
       losing the first receive packet on serdes chips.
    
    2. Skip MAC loopback test on 5780 because of hardware errata. Normal
       traffic including PHY loopback is not affected by the errata.
    
    3. PHY loopback fails intermittently on 5708S and this is fixed by
       putting the PHY in loopback mode first before programming the MAC
       mode register. A MAC_RX_MODE reset is also added.
    
    4. Return -EINVAL in tg3_nway_reset() if device is in TBI mode. Allow
       nway_reset if 5780S is in parallel detect mode.
    
    5. Add missing PHY IDs in KNOWN_PHY_ID() macro.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit c58ec93245a1fb7354f9e331960380827b9f41db
Author: Michael Chan <mchan@broadcom.com>
Date:   Sat Sep 17 00:46:27 2005 -0700

    [TG3]: Fix 4GB boundary tx handling
    
    Fix and simplify the workaround code for the 4GB boundary tx buffer
    hardware bug.
    
    1. Need to unmap the original SKB's dma addresses if a new SKB cannot
       be allocated.
    
    2. Need to pass the base flag to tigon3_4gb_hwbug_workaround() or TSO
       won't work properly.
    
    3. The guilty entry and length parameters for
       tigon3_4gb_hwbug_workaround() are removed as they are not necessary.
    
    4. Remove assumption that only one fragment can hit the 4GB boundary.
       Another fragment can hit 8GB for example.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 22abe310bc4b0c684fd3716af6b6116ff1011707
Author: Peter Hagervall <hager@cs.umu.se>
Date:   Fri Sep 16 17:01:03 2005 -0700

    [TG3]: Sparse fixes for tg3
    
    Change 0 to NULL where appropriate.
    
    Signed-off-by: Peter Hagervall <hager@cs.umu.se>
    Acked-by: Jeff Garzik <jgarzik@pobox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 1cbf07478bbf3e350a2025bc5ea23fedaa95855a
Author: David S. Miller <davem@davemloft.net>
Date:   Fri Sep 16 16:59:20 2005 -0700

    [TG3]: Add AMD K8 to list of write-reorder chipsets.
    
    Thanks to Andy Stewart for the report and testing
    debug patches from Michael Chan.
    
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 2ff436977ed3eeca2d39ae40bbfdb1ce58da8453
Author: John W. Linville <linville@tuxdriver.com>
Date:   Mon Sep 12 14:44:20 2005 -0700

    [TG3]: Add support for ETHTOOL_GPERMADDR.
    
    Signed-off-by: John W. Linville <linville@tuxdriver.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 4f63b877726135b19ae73108acf9e0ebb4323dda
Author: John W. Linville <linville@tuxdriver.com>
Date:   Mon Sep 12 14:43:18 2005 -0700

    [TG3]: Do not count non-error frames dropped by the hardware as rx_errors.
    
    Instead, count them as part of rx_missed_errors.
    
    Signed-off-by: John W. Linville <linville@tuxdriver.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 74da1edf264c5982b465041a5706caff25d7e1ed
Author: David S. Miller <davem@sunset.davemloft.net>
Date:   Mon Sep 5 17:56:11 2005 -0700

    [TG3]: Update driver version and release date.
    
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 38f3843ed6bdbcff9465386c3539523466880320
Author: Michael Chan <mchan@broadcom.com>
Date:   Mon Sep 5 17:53:32 2005 -0700

    [TG3]: Use status tag to check for new events
    
    Use the status tag to determine if there are new events in
    tg3_interrupt_tagged(). We discussed about this a while ago with Grant
    Grundler and DaveM. This scheme makes it unnecessary to clear the
    updated bit in the status block when using tagged mode, and only
    a simple comparison is needed to determine if there are new events.
    
    The tp->lock around netif_rx_complete() and tg3_restart_ints() is also
    removed. It is unnecessary with DaveM's new locking scheme.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 61487480dd79acc5e82b08cd29cbcbd3301645fa
Author: Michael Chan <mchan@broadcom.com>
Date:   Mon Sep 5 17:53:19 2005 -0700

    [TG3]: Remove status block access in tg3_msi() and add prefetches
    
    Remove unnecessary status block accesses in tg3_msi(). Since MSI is
    not shared, it is unnecessary to read the status block to determine if
    there are any new events in the MSI handler. It is also unnecessary to
    clear the updated bit in the status block.
    
    Since the poll list is per-cpu, tg3_poll() will be scheduled to run on
    the same CPU that received the MSI. Prefetches for the status block
    and the next rx descriptors are added in tg3_msi() to improve their
    access times when tg3_poll() runs.
    
    In the non-MSI irq handlers, we need to check the status block because
    interrupts may be shared. Only prefetches for the next rx descriptors
    are added.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 9f40dead25957434937f2b1872e9f4b43605f0ad
Author: Michael Chan <mchan@broadcom.com>
Date:   Mon Sep 5 17:53:06 2005 -0700

    [TG3]: Add PHY loopback test
    
    Improve ethtool loopback self test by adding PHY loopback to the
    existing MAC loopback test.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 4009a93d8e85f685b02794aee28e3272be862e2b
Author: Michael Chan <mchan@broadcom.com>
Date:   Mon Sep 5 17:52:54 2005 -0700

    [TG3]: Add ethtool -p support
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 4c98748763ce25c5394a7edd686d92c70b4fac38
Author: Michael Chan <mchan@broadcom.com>
Date:   Mon Sep 5 17:52:38 2005 -0700

    [TG3]: Minor 5780 and 5752 fixes
    
    Minor SerDes bug fixes for 5780S and nvram bug fixes for 5780 and
    5752.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 75c80c382fbd08acf06fbef9d54c9844e806a8b4
Author: David S. Miller <davem@davemloft.net>
Date:   Thu Sep 1 17:42:23 2005 -0700

    [TG3]: Update driver version and release date.
    
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 51b9146869ab9492da785c5c9321d85f01655ab6
Author: Michael Chan <mchan@broadcom.com>
Date:   Thu Sep 1 17:41:28 2005 -0700

    [TG3]: Minimize locking in TX path.
    
    This is similar to Eric Dumazet's tx_lock patch for tg3 but takes it
    one step further to eliminate the tx_lock in the tx_completion path
    when the tx queue is not stopped.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 087fe256f0aef8d16b19a30c6fb10b899bf1a701
Author: Michael Chan <mchan@broadcom.com>
Date:   Tue Aug 9 20:17:41 2005 -0700

    [TG3]: Fix bug in setting a tg3_flag
    
    Found a bug while reviewing the patches the second time.
    
    The TG3_FLAG_TXD_MBOX_HWBUG flag is set after the register access
    methods have been determined. This patch fixes it by moving it up before
    the various access methods are assigned.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 15f5a585c6b8dac31ed0a55693aacf51934f0f5d
Author: Michael Chan <mchan@broadcom.com>
Date:   Tue Aug 9 20:17:28 2005 -0700

    [TG3]: Eliminate one register write in tg3_restart_ints()
    
    The register write to register 0x68 to restart interrupts is unnecessary
    as the interrupt wasn't masked in that register by the irq handler. This
    will save one register write in the fast path.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 6892914fb7980d844f2bac859f4095df9ebd18da
Author: Michael Chan <mchan@broadcom.com>
Date:   Tue Aug 9 20:17:14 2005 -0700

    [TG3]: Add indirect register method for 5703 behind ICH
    
    This patch adds the new workaround for 5703 A1/A2 if it is behind
    certain ICH bridges. The workaround disables memory and uses config.
    cycles only to access all registers. The 5702/03 chips can mistakenly
    decode the special cycles from the ICH chipsets as memory write cycles,
    causing corruption of register and memory space. Only certain ICH
    bridges will drive special cycles with non-zero data during the address
    phase which can fall within the 5703's address range. This is not an ICH
    bug as the PCI spec allows non-zero address during special cycles.
    However, only these ICH bridges are known to drive non-zero addresses
    during special cycles.
    
    The indirect_lock is also changed to spin_lock_irqsave from spin_lock_bh
    because it is used in irq handler when using the indirect method to
    disable interrupts.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 09ee929cccfd0b56ea3724b3c6299fbbe813df43
Author: Michael Chan <mchan@broadcom.com>
Date:   Tue Aug 9 20:17:00 2005 -0700

    [TG3]: Add mailbox read method
    
    This patch adds the mailbox read method and also adds an inline function
    tw32_mailbox_f() for mailbox writes that require read flush.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 1ee582d8e49a1c9dd43b2599f1cd26507182a8d4
Author: Michael Chan <mchan@broadcom.com>
Date:   Tue Aug 9 20:16:46 2005 -0700

    [TG3]: Add various register methods
    
    This patch adds various dedicated register read/write methods for the
    existing workarounds, including PCIX target workaround, write with read
    flush, etc. The chips that require these workarounds will use these
    dedicated access functions.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 2009493065e01b1fe27c1b98ffbcfab98e185f72
Author: Michael Chan <mchan@broadcom.com>
Date:   Tue Aug 9 20:16:32 2005 -0700

    [TG3]: Add basic register access function pointers
    
    This patch adds the basic function pointers to do register accesses in
    the fast path. This was suggested by David Miller. The idea is that
    various register access methods for different hardware errata can easily
    be implemented with these function pointers and performance will not be
    degraded on chips that use normal register access methods.
    
    The various register read write macros (e.g. tw32, tr32, tw32_mailbox)
    are redefined to call the function pointers.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit d4ef16088913002255eab9958fff4e98b3b507d6
Author: Michael Chan <mchan@broadcom.com>
Date:   Thu Aug 25 15:31:41 2005 -0700

    [TG3]: Fix ethtool loopback test lockup
    
    The tg3_abort_hw() call in tg3_test_loopback() is causing lockups on
    some devices. tg3_abort_hw() disables the memory arbiter, causing
    tg3_reset_hw() to hang when it tries to write the pre-reset signature.
    tg3_abort_hw() should only be called after the pre-reset signature has
    been written. This is all done in tg3_reset_hw() so the tg3_abort_hw()
    call is unnecessary and can be removed.
    
    [ Also bump driver version and release date. -DaveM ]
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 034ea6388a51f571b45ef1f0fa4ed4298691768e
Author: David S. Miller <davem@davemloft.net>
Date:   Fri Aug 19 12:57:31 2005 -0700

    [TG3]: Update driver version and reldate.
    
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit da6b2d01d6bd2e79fd4f7a08acd37dc4e8fcdce8
Author: Michael Chan <mchan@broadcom.com>
Date:   Fri Aug 19 12:54:29 2005 -0700

    [TG3]: Fix SerDes detection
    
    A problem was reported by Grant Grundler on an HP rx8620 using IOX
    Core LAN partno(A7109-6) 5701 copper NIC. The tg3 driver mistakenly
    detects this NIC as having a SerDes PHY and link does not come up as a
    result.
    
    The problem was caused by an incorrectly programmed eeprom that set the
    NIC_SRAM_DATA_CFG_PHY_TYPE_FIBER bit in the NIC_SRAM_DATA_CFG location.
    
    This patch will override the NIC_SRAM_DATA_CFG_PHY_TYPE_FIBER bit if a
    valid PHY ID is read from the MII registers on older 570x chips where
    the MII interface is not used on SerDes chips. On newer chips such as
    the 5780 that use MII for both copper and SerDes, SerDes detection must
    rely on the eeprom.
    
    This patch will make the SerDes detection identical to versions 3.25 and
    older.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Acked-by: Grant Grundler <iod00d@hp.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 7d3f4c97723c4ec4e5d85e6e70084b02e6be8788
Author: David S. Miller <davem@davemloft.net>
Date:   Sat Aug 6 06:35:48 2005 -0700

    [TG3]: Save initial PCI state before registering the netdevice.
    
    Else on SMP systems it is possible for hotplug to execute,
    invoke tg3_open(), and end up loading the uninitialized
    PCI register save area into the card.
    
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit fc87670b6cd63abc6fc4e3a115741984750d1fbc
Author: David S. Miller <davem@davemloft.net>
Date:   Mon Jul 25 12:45:32 2005 -0700

    [TG3]: Update driver version and reldate.
    
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 747e8f8bff56955374521fa4d488e702d4b0c04f
Author: Michael Chan <mchan@broadcom.com>
Date:   Mon Jul 25 12:33:22 2005 -0700

    [TG3]: add 5780 fiber support
    
    Add 5780S support by adding a new tg3_setup_fiber_mii_phy() function and
    a timer function for parallel link detection. 5780S uses standard MII
    registers for 1000BaseX and runs in GMII mode as opposed to TBI mode on
    older serdes chips.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit ef7f5ec0deb2bcdc005f30f6f75f79c65c577cf5
Author: Michael Chan <mchan@broadcom.com>
Date:   Mon Jul 25 12:32:25 2005 -0700

    [TG3]: disallow jumbo TSO on 5780
    
    Disallow jumbo TSO on 5780 due to hardware restrictions.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit fdfec1726b14b4b2121adcfcbba98d4cc1a61751
Author: Michael Chan <mchan@broadcom.com>
Date:   Mon Jul 25 12:31:48 2005 -0700

    [TG3]: consolidate all DMA water mark settings
    
    Consolidate all DMA watermark settings for standard and jumbo frames on
    all chips in tg3_init_bufmgr_config() and add new settings for 5780.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 7e72aad48c3790636bfa006f3b0027852ccad47e
Author: Michael Chan <mchan@broadcom.com>
Date:   Mon Jul 25 12:31:17 2005 -0700

    [TG3]: add variable buffer size for standard ring
    
    Add a new rx_pkt_buf_sz to the tg3 structure to support variable buffer
    sizes on the standard ring.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 0f893dc6ec890058d926224c8aa254d8621e0ea3
Author: Michael Chan <mchan@broadcom.com>
Date:   Mon Jul 25 12:30:38 2005 -0700

    [TG3]: add 5780 basic jumbo frame support
    
    Add basic jumbo frames support for 5780. This chip supports jumbo frames
    on the standard receive ring without the jumbo ring. The
    TG3_FLAG_JUMBO_ENABLE is changed to TG3_FLAG_JUMBO_RING_ENABLE to
    indicate using the jumbo ring on 5704 and older chips. A new
    TG3_FLG2_JUMBO_CAPABLE flag is added to indicate jumbo frames support
    with or without the jumbo ring.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 4cf78e4fb678807e3f8265c9e9031a84f5c601f0
Author: Michael Chan <mchan@broadcom.com>
Date:   Mon Jul 25 12:29:19 2005 -0700

    [TG3]: add 5780 basic support
    
    Add 5780 PCI IDs, chip IDs, and other basic support.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 93e266f600f4048fe7a2e8803abb9f8baff84aa7
Author: David S. Miller <davem@davemloft.net>
Date:   Tue Jul 5 14:43:19 2005 -0700

    [TG3]: Update driver version and reldate.
    
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit d244c892c8e23d6baba88af88f78f7201a224d39
Author: Michael Chan <mchan@broadcom.com>
Date:   Tue Jul 5 14:42:33 2005 -0700

    [TG3]: support for ethtool -C
    
    Add support for ethtool -C with verification of user parameters.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 5f70eaa0d5768775a7492f3e3841fcca94bb0d13
Author: David S. Miller <davem@davemloft.net>
Date:   Fri Jun 24 20:21:01 2005 -0700

    [TG3]: Update driver version and reldate.
    
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit bbe832c09233738c100145fd535b6b8fc97640f6
Author: Michael Chan <mchan@broadcom.com>
Date:   Fri Jun 24 20:20:04 2005 -0700

    [TG3]: Refinements to new locking strategy.
    
    1. Move tp->irq_sync = 0 to before the interrupt mailbox IO in
       tg3_enable_ints() so that the interrupt handler will always see
       irq_sync == 0 when interrupts are enabled.
    
    2. Remove the tg3_enable_ints() call in tg3_reset_hw(). Interrupts are
       always enabled explicitly or through tg3_netif_start(). This is to
       prevent interrupts being enabled while poll is disabled.
    
    3. Update trans_start with jiffies in tg3_netif_stop() to prevent false
       NETDEV WATCHDOG.
    
    4. Pass in the proper irq_sync parameter to tg3_full_lock() depending on
       netif_running() in some of the ethtool set calls.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit f47c11eeccc8820010992eb32dbe7370a08f8bd3
Author: David S. Miller <davem@davemloft.net>
Date:   Fri Jun 24 20:18:35 2005 -0700

    [TG3]: Eliminate all hw IRQ handler spinlocks.
    
    Move all driver spinlocks to be taken at sw IRQ
    context only.
    
    This fixes the skb_copy() we were doing with hw
    IRQs disabled (which is illegal and triggers a
    BUG() with HIGHMEM enabled).  It also simplifies
    the locking all over the driver tremendously.
    
    We accomplish this feat by creating a special
    sequence to synchronize with the hw IRQ handler
    using a binary state and synchronize_irq().
    This idea is from Herbert Xu.
    
    Thanks to Michael Chan for helping to track down
    all of the race conditions in initial versions
    of this code.
    
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit cd024c8baf9756759c57f0a19be639da8d3d4f8c
Author: David S. Miller <davem@davemloft.net>
Date:   Fri Jun 24 20:17:10 2005 -0700

    [TG3]: Fix missing memory barriers and SD_STATUS_UPDATED bit clearing.
    
    There must be a rmb() between reading the status block tag
    and calling tg3_has_work().  This was missing in tg3_mis()
    and tg3_interrupt_tagged().  tg3_poll() got it right.
    
    Also, SD_STATUS_UPDATED must be cleared in the status block
    right before we call tg3_has_work().  Only tg3_poll() got this
    wrong.
    
    Based upon patches and commentary from Grant Grundler and
    Michael Chan.
    
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit ed7fce6c13bdd802817e1988d67047d432e7e30b
Author: David S. Miller <davem@davemloft.net>
Date:   Wed Jun 8 14:15:52 2005 -0700

    [TG3]: Update driver version and release date.
    
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 6d1cfbab4de64f2d0c5b0f81177ade0d75b69288
Author: Michael Chan <mchan@broadcom.com>
Date:   Wed Jun 8 14:13:14 2005 -0700

    [TG3]: Fix 5700/5701 DMA corruption on Apple G4.
    
    Fix 5700/5701 DMA write corruption on Apple G4 by detecting the Apple
    UniNorth PCI 1.5 chipset and adjusting the DMA write boundary to 16. DMA
    test fails to detect the problem with this chipset.
    
    Thanks to Manuel Perez Ayala for reporting the problem and helping to
    debug it.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 15def7bfb6902aa2b2bc67059f26d696fb27c235
Author: David S. Miller <davem@davemloft.net>
Date:   Mon Jun 6 15:22:56 2005 -0700

    [TG3]: Update driver version and release date.
    
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 9ba27794197a18168b99ccecfb7b799f18b64426
Author: Michael Chan <mchan@broadcom.com>
Date:   Mon Jun 6 15:16:20 2005 -0700

    [TG3] Fix link failure in 5701
    
    On some 5701 devices with older bootcode, the LED configuration bits in
    SRAM may be invalid with value zero. The fix is to check for invalid
    bits (0) and default to PHY 1 mode. Incorrect LED mode will lead to
    error in programming the PHY.
    
    Thanks to Grant Grundler for debugging the problem.
    
    >From Grant:
    | In May, 2004,  tg3 v3.4 changed how MAC_LED_CTRL (0x40c) was getting
    | programmed and how to determine what to program into LED_CTRL. The new
    | code trusted NIC_SRAM_DATA_CFG (0x00000b58) to indicate what to write
    | to LED_CTRL and MII EXT_CTRL registers. On "IOX Core Lan", SRAM was
    | saying MODE_MAC (0x0) and that doesn't work.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 49cabf49abd7676d026a61baabf5aae9337a82be
Author: Michael Chan <mchan@broadcom.com>
Date:   Mon Jun 6 15:15:17 2005 -0700

    [TG3]: Add TSO firmware license
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 1b62815193f6c20c60958e5347751155833e3d35
Author: Michael Chan <mchan@broadcom.com>
Date:   Sun May 29 14:59:49 2005 -0700

    [TG3]: Fix bug in tg3_load_firmware_cpu
    
    Add tg3_nvram_lock() and tg3_nvram_unlock() calls around tg3_halt_cpu().
    It is possible that the bootcode may be loading code from nvram during
    this call and stopping the cpu without getting the lock may cause
    uncompleted nvram data to be left in the nvram data register. Subsequent
    calls to read/write nvram data will fail.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit d4bc3927d284784b3f0bff05b4eed2242cc3e226
Author: Michael Chan <mchan@broadcom.com>
Date:   Sun May 29 14:59:20 2005 -0700

    [TG3]: Add interrupt test
    
    This test uses the previously added tg3_test_interrupt() to perform the
    test.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit c76949a6826fc11efcd6bb1abdca1ae02761071d
Author: Michael Chan <mchan@broadcom.com>
Date:   Sun May 29 14:58:59 2005 -0700

    [TG3]: Add loopback test
    
    The test will loopback one packet in MAC loopback mode and verify the
    packet data.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 7942e1dbd7252b480ed238096dca617189d293df
Author: Michael Chan <mchan@broadcom.com>
Date:   Sun May 29 14:58:36 2005 -0700

    [TG3]: Add memory test
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit a71116d1f3b85a69fe3a3acec9223fefb4b1fc66
Author: Michael Chan <mchan@broadcom.com>
Date:   Sun May 29 14:58:11 2005 -0700

    [TG3]: Add register test
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 944d980ecaabe44616a9e2d50101ce774f517bb6
Author: Michael Chan <mchan@broadcom.com>
Date:   Sun May 29 14:57:48 2005 -0700

    [TG3]: Add parameter to tg3_halt
    
    Add a reset kind parameter to tg3_halt() so that the RESET_KIND_SUSPEND
    parameter can be passed to tg3_halt() before doing offline tests.
    
    All other calls to tg3_halt() will use the RESET_KIND_SHUTDOWN
    parameter.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit ca43007a92662621e5819912fc31c346e3a2eed8
Author: Michael Chan <mchan@broadcom.com>
Date:   Sun May 29 14:57:23 2005 -0700

    [TG3]: Add link test
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 566f86adb336637d03900f53b886d879aa5f5d56
Author: Michael Chan <mchan@broadcom.com>
Date:   Sun May 29 14:56:58 2005 -0700

    [TG3]: Add nvram test
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 4cafd3f533475c976879d85773735c004f09f576
Author: Michael Chan <mchan@broadcom.com>
Date:   Sun May 29 14:56:34 2005 -0700

    [TG3]: Add basic selftest infrastructure
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit d1faeaeb95a05275cf0c5b51b88f2fa833434625
Author: David S. Miller <davem@davemloft.net>
Date:   Mon May 23 14:00:44 2005 -0700

    [TG3]: Update driver version.
    
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit ded7340d9d9142807a1ef94ab9c51d13ab76a1c9
Author: David S. Miller <davem@davemloft.net>
Date:   Mon May 23 13:59:47 2005 -0700

    [TG3]: Increase TEST_BUFFER_SIZE to 8K.
    
    This makes the DMA bug workaround test more likely
    to find the problem on some systems.
    
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 413f5431a5a27e44c6610de640e507e1e3c885f4
Author: David S. Miller <davem@davemloft.net>
Date:   Mon May 23 13:13:15 2005 -0700

    [TG3]: Update driver version and reldate.
    
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit d8659255c599ba497bcfb8b4abc187d9e0951d99
Author: Xose Vazquez Perez <xose.vazquez@gmail.com>
Date:   Mon May 23 12:54:51 2005 -0700

    [TG3]: Add 5752M device ID.
    
    Add 0x1601 as 5752M, it's a 5752 but for mobile PCs.
    Stolen from Broadcom bcm5700-8.1.55 driver.
    
    Someone forgot to add it to tg3 ;-)
    
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit f7383c22246cfccbe912541dd83103009ed2b537
Author: David S. Miller <davem@davemloft.net>
Date:   Wed May 18 22:50:53 2005 -0700

    [TG3]: In tg3_poll(), resample status_tag after doing work.
    
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 59e6b4343299373bc10dd131ab5142f53ddd838a
Author: David S. Miller <davem@davemloft.net>
Date:   Wed May 18 22:50:10 2005 -0700

    [TG3]: Refine DMA boundary setting.
    
    Extract DMA boundary bit selection into a seperate
    function, tg3_calc_dma_bndry().  Call this from
    tg3_test_dma().
    
    Make DMA test more reliable by using no DMA boundry
    setting during the test.  If the test passes, then
    use the setting we selected before the test.
    
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Michael Chan <mchan@broadcom.com>

commit 15f9850d3c2d46f5851a424d2990a18b5bb5ebfd
Author: David S. Miller <davem@davemloft.net>
Date:   Wed May 18 22:49:26 2005 -0700

    [TG3]: Set minimal hw interrupt mitigation.
    
    Even though we do software interrupt mitigation
    via NAPI, it still helps to have some minimal
    hw assisted mitigation.
    
    This helps, particularly, on systems where register
    I/O overhead is much greater than the CPU horsepower.
    
    For example, it helps on NUMA systems.  In such cases
    the PIO overhead to disable interrupts for NAPI accounts
    for the majority of the packet processing cost.  The
    CPU is fast enough such that only a single packet is
    processed by each NAPI poll call.
    
    Thanks to Michael Chan for reviewing this patch.
    
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit fac9b83ea79aa3112ed245d9a4fc2a5c3ec2b7ec
Author: David S. Miller <davem@davemloft.net>
Date:   Wed May 18 22:46:34 2005 -0700

    [TG3]: Add tagged status support.
    
    When supported, use the TAGGED interrupt processing support
    the chip provides.  In this mode, instead of a "on/off" binary
    semaphore, an incrementing tag scheme is used to ACK interrupts.
    
    All MSI supporting chips support TAGGED mode, so the tg3_msi()
    interrupt handler uses it unconditionally.  This invariant is
    verified when MSI support is tested.
    
    Since we can invoke tg3_poll() multiple times per interrupt under
    high packet load, we fetch a new copy of the tag value in the
    status block right before we actually do the work.
    
    Also, because the tagged status tells the chip exactly which
    work we have processed, we can make two optimizations:
    
    1) tg3_restart_ints() need not check tg3_has_work()
    2) the tg3_timer() need not poke the chip 10 times per
       second to keep from losing interrupt events
    
    Based upon valuable feedback from Michael Chan <mchan@broadcom.com>
    
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit b6d31e80f0d6a722bf85b3a7090df473fc545980
Author: David S. Miller <davem@davemloft.net>
Date:   Thu May 5 14:46:21 2005 -0700

    [TG3]: Update driver version and reldate.
    
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit e6de8ad1fae8385eca4bf288e7a6ea2664ce0458
Author: Michael Chan <mchan@broadcom.com>
Date:   Thu May 5 14:42:41 2005 -0700

    [TG3]: Ignore tg3_stop_block() errors.
    
    tg3_stop_block() errors can be safely ignored since tg3_chip_reset()
    always follows tg3_stop_block() calls.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit b3b7d6be54f919556148946adb4ece91820ad210
Author: David S. Miller <davem@davemloft.net>
Date:   Thu May 5 14:40:20 2005 -0700

    [TG3]: Elide tg3_stop_block messages when such events are normal.
    
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit f4d0ee983ec01e59a77e157ab702246f397b2a2b
Author: David S. Miller <davem@sunset.davemloft.net>
Date:   Thu Apr 28 11:33:20 2005 -0700

    [TG3]: Set SA_SAMPLE_RANDOM in request_irq() calls.
    
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 04237dddd14375fce1df4bfb1be92a35aa1c247f
Author: Michael Chan <mchan@broadcom.com>
Date:   Mon Apr 25 15:17:17 2005 -0700

    [TG3]: Fix tg3_restart_ints()
    
    tg3_restart_ints() is called to re-enable interrupts after tg3_poll()
    has finished all the work. It calls tg3_cond_int() to force an interrupt
    if the status block updated bit is set. The updated bit will be set if
    there is a new status block update sometime during tg3_poll() and it can
    be very often. The worst part is that even if all the work has been
    processed, the updated bit remains set and an interrupt will be forced
    unnecessarily.
    
    The fix is to call tg3_has_work() instead to determine if new work is
    posted before forcing an interrupt. The way to force an interrupt is
    also changed to use "coalesce_now" instead of "SETINT". The former is
    generally a safer way to force the interrupt.
    
    Also deleted the first parameter to tg3_has_work() which is unused.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 52f6d697dc0f2c039e8413e780b0f45ddf8161fc
Author: Michael Chan <mchan@broadcom.com>
Date:   Mon Apr 25 15:14:32 2005 -0700

    [TG3]: Refresh hw index in tg3_rx()
    
    This patch refreshes the hw rx producer in tg3_rx() so that additional
    work posted by the hardware can be processed.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 483ba50bd41d14d5325d6cd9935de86a982d08a2
Author: Michael Chan <mchan@broadcom.com>
Date:   Mon Apr 25 15:14:03 2005 -0700

    [TG3]: Fix bug in tg3_rx()
    
    This patch fixes a bug that causes tg3_has_work() to always return 1.
    
    rx work is determined by comparing tp->rx_rcb_ptr with the current hw
    producer index. The hw producer index is modulo the ring size, but tp-
    >rx_rcb_ptr is a free running counter that goes up beyond the ring size.
    After the ring wraps around once, tg3_has_work() will always return 1.
    
    The fix is to always do modulo arithmetic on tp->rx_rcb_ptr.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit ac6910e189471e6b46ecea59e7620b083329ad4f
Author: David S. Miller <davem@davemloft.net>
Date:   Sun Apr 24 20:06:16 2005 -0700

    [TG3]: Update driver version and release date.
    
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 7938109fff944e0117976a39946d99d2b0b0250d
Author: Michael Chan <mchan@broadcom.com>
Date:   Thu Apr 21 17:13:59 2005 -0700

    [TG3]: Add msi test
    
    Add MSI test for chips that support MSI. If MSI test fails, it will
    switch back to INTx mode and will print a message asking the user to
    report the failure.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 88b06bc26b87cf0490b0e3faea7fefc7549dd75d
Author: Michael Chan <mchan@broadcom.com>
Date:   Thu Apr 21 17:13:25 2005 -0700

    [TG3]: Add msi support
    
    Add MSI support for 5751 C0 and 5752.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 1c8594b48b00a98d12477355e944e165a5f64cd5
Author: Michael Chan <mchan@broadcom.com>
Date:   Thu Apr 21 17:12:46 2005 -0700

    [TG3]: Fix bug in tg3_set_eeprom()
    
    Fix a bug in tg3_set_eeprom() when the length is less than 4 and the
    offset is not 4-byte aligned.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit e6af301be3c129adbc8a7c8ffb76e62533ad9575
Author: Michael Chan <mchan@broadcom.com>
Date:   Thu Apr 21 17:12:05 2005 -0700

    [TG3]: Add nvram lock-out support for 5752 TPM
    
    Add support for the NVRAM lock-out feature for TPM in 5752. If lock-out
    is enabled, certain NVRAM registers cannot be written to.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 361b4ac29bc651c7612d4bf21434ae6fe06b78e4
Author: Michael Chan <mchan@broadcom.com>
Date:   Thu Apr 21 17:11:21 2005 -0700

    [TG3]: Add nvram detection for 5752
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 3e7d83bc96d59013792e5546e7832668d3adbce7
Author: Michael Chan <mchan@broadcom.com>
Date:   Thu Apr 21 17:10:36 2005 -0700

    [TG3]: Add GPIO3 for 5752
    
    Add bit definitions for the new GPIO3 in 5752. GPIO3 must be driven as
    output when it is unused.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit ff645bec523819fa4d28d7e0de7d998e3edb0c57
Author: Michael Chan <mchan@broadcom.com>
Date:   Thu Apr 21 17:09:53 2005 -0700

    [TG3]: Workaround 5752 A0 chip ID
    
    The 5752 A0 chip ID is wrong in hardware. The simplest way to workaround
    it is to change it to the correct value in tp->pci_chip_rev_id. This
    way, it is easier to check for the ASIC_REV_5752 in the rest of the
    driver.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 8c6bda1a89c148f3a28edc09a76dac9bff57d8ee
Author: Michael Chan <mchan@broadcom.com>
Date:   Thu Apr 21 17:09:08 2005 -0700

    [TG3]: Fix tg3_set_power_state()
    
    Fix tg3_set_power_state to drive GPIOs properly based on the
    TG3_FLAG_EEPROM_WRITE_PROTECT flag. Some delays are also added after D0
    and D3 power state changes.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 314fba348e1f64a30b53d3cff5d96872424e8498
Author: Michael Chan <mchan@broadcom.com>
Date:   Thu Apr 21 17:07:04 2005 -0700

    [TG3]: Setup proper GPIO settings
    
    Setup proper GPIO settings in tp->grc_local_ctrl before calling
    tg3_set_power() state in tg3_get_invariants() and after chip reset.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 7d0c41ef89dad9008edf1c3c0022721ebad39999
Author: Michael Chan <mchan@broadcom.com>
Date:   Thu Apr 21 17:06:20 2005 -0700

    [TG3]: Split tg3_phy_probe into 2 functions
    
    Split the 1st half of tg3_phy_probe() into tg3_get_eeprom_hw_cfg() so
    that the TG3_FLAG_EEPROM_WRITE_PROT can be determined before calling
    tg3_set_power_state() in tg3_get_invariants(). This will allow
    tg3_set_power_state() to drive the GPIOs correctly based on the config.
    information in eeprom.
    
    On the 5752, there are no pull-up resistors on the GPIO pins and it is
    necessary to drive the unused GPIOs as output.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 85e94cedc44d1c2c1663b5b18f703ca5e7316e59
Author: Michael Chan <mchan@broadcom.com>
Date:   Thu Apr 21 17:05:28 2005 -0700

    [TG3]: Minor 5752 fixes
    
    Some minor 5752 fixes mostly for correctness and add 5752 PHY ID.
    
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 053d78000be4906fac6446ad517ca3897dc6cd84
Author: John W. Linville <linville@tuxdriver.com>
Date:   Thu Apr 21 17:03:52 2005 -0700

    [TG3]: add support for bcm5752 rev a1
    
    Replace existing ASIC_REV_5752 definition with ASIC_REV_5752_A0,
    and add definition for ASIC_REV_5752_A1. Then, add ASIC_REV_5752_A1
    to check for setting TG3_FLG2_5750_PLUS in tg3_get_invariants.
    
    Signed-off-by: John W. Linville <linville@tuxdriver.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 1b440c568e28186956ef765c69ab124401088663
Author: John W. Linville <linville@tuxdriver.com>
Date:   Thu Apr 21 17:03:18 2005 -0700

    [TG3]: check TG3_FLG2_5750_PLUS flag to set TG3_FLG2_5705_PLUS flag
    
    Use check of TG3_FLG2_5750_PLUS in tg3_get_invariants to set
    TG3_FLG2_5705_PLUS flag.
    
    Signed-off-by: John W. Linville <linville@tuxdriver.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit bb7064dc09ff90015ddc7d818dd8fefb8ca5b936
Author: John W. Linville <linville@tuxdriver.com>
Date:   Thu Apr 21 17:02:41 2005 -0700

    [TG3]: use TG3_FLG2_57{05,50}_PLUS flags in tg3_get_invariants
    
    Rewrite checks in tg3_get_invariants to use TG3_FLG2_5705_PLUS and
    TG3_FLG2_5750_PLUS flags.
    
    Signed-off-by: John W. Linville <linville@tuxdriver.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 863925f59e5425e4af6996b9c50857c766940176
Author: John W. Linville <linville@tuxdriver.com>
Date:   Thu Apr 21 17:02:04 2005 -0700

    [TG3]: more use of TG3_FLG2_5705_PLUS flag
    
    Rewrite of a couple of troublesome multi-way if statements to use
    TG3_FLG2_5705_PLUS flag.
    
    Signed-off-by: John W. Linville <linville@tuxdriver.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit cbf46853c8db75f98bd005dc545aca0703063d4b
Author: John W. Linville <linville@tuxdriver.com>
Date:   Thu Apr 21 17:01:29 2005 -0700

    [TG3]: use new TG3_FLG2_5750_PLUS flag
    
    Replace a number of two-way if statements checking for 5750, and/or
    5752 to reference the newly-defined TG3_FLG2_5750_PLUS flag instead.
    
    Signed-off-by: John W. Linville <linville@tuxdriver.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 6708e5cc103ba045fca035b4d8df236ca31fb8bc
Author: John W. Linville <linville@tuxdriver.com>
Date:   Thu Apr 21 17:00:52 2005 -0700

    [TG3]: define TG3_FLG2_5750_PLUS flag
    
    Define TG3_FLG2_5750_PLUS flag and set it in tg3_get_invariants for
    ASIC_REV_5750 or ASIC_REV_5752.
    
    Signed-off-by: John W. Linville <linville@tuxdriver.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit fcf026936c613fc6ca4685677a461100d87eec81
Author: John W. Linville <linville@tuxdriver.com>
Date:   Thu Apr 21 17:00:02 2005 -0700

    [TG3]: use TG3_FLG2_5705_PLUS instead of multi-way if's
    
    Replace a number of three-way if statements checking for 5705, 5750,
    and 5752 to reference the equivalent TG3_FLG2_5705_PLUS flag instead.
    
    Signed-off-by: John W. Linville <linville@tuxdriver.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 6e9017a7d9b949aea638eeba67d34affaa145f14
Author: John W. Linville <linville@tuxdriver.com>
Date:   Thu Apr 21 16:58:56 2005 -0700

    [TG3]: add bcm5752 entry to pci_ids.h
    
    Add proper entry for bcm5752 PCI ID to pci_ids.h, and use it in tg3.
    I did this separately in case patches like this (i.e. new PCI IDs)
    need to come from more "official" sources.
    
    Signed-off-by: John W. Linville <linville@tuxdriver.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit af2bcd97b570f39da94103f80f67433dab515049
Author: John W. Linville <linville@tuxdriver.com>
Date:   Thu Apr 21 16:57:50 2005 -0700

    [TG3]: add bcm5752 to tg3_pci_tbl
    
    Add hard-coded definition of bcm5752 PCI ID to tg3_pci_tbl.
    Next patch will change entry to use pci_ids.h-based definition.
    
    Signed-off-by: John W. Linville <linville@tuxdriver.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 2052da946096590035438626afbc7f329d2549d8
Author: John W. Linville <linville@tuxdriver.com>
Date:   Thu Apr 21 16:56:08 2005 -0700

    [TG3]: add basic bcm5752 support
    
    Add ASIC_REV_5752 definition.
    
    Track-down all references to ASIC_REV_5750 and mirror them with
    references to the newly defined ASIC_REV_5752.
    
    Signed-off-by: John W. Linville <linville@tuxdriver.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2
Author: Linus Torvalds <torvalds@ppc970.osdl.org>
Date:   Sat Apr 16 15:20:36 2005 -0700

    Linux-2.6.12-rc2
    
    Initial git repository build. I'm not bothering with the full history,
    even though we have it. We can create a separate "historical" git
    archive of that later if we want to, and in the meantime it's about
    3.2GB when imported into git - space that would just make the early
    git days unnecessarily complicated, when we don't have a lot of good
    infrastructure for it.
    
    Let it rip!
