1. 16 Sep, 2005 2 commits
  2. 12 Sep, 2005 2 commits
  3. 05 Sep, 2005 6 commits
  4. 01 Sep, 2005 2 commits
  5. 29 Aug, 2005 6 commits
  6. 25 Aug, 2005 1 commit
    • Michael Chan's avatar
      [TG3]: Fix ethtool loopback test lockup · d4ef1608
      Michael Chan authored
      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: default avatarMichael Chan <mchan@broadcom.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
  7. 19 Aug, 2005 2 commits
    • David S. Miller's avatar
    • Michael Chan's avatar
      [TG3]: Fix SerDes detection · da6b2d01
      Michael Chan authored
      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
      The problem was caused by an incorrectly programmed eeprom that set the
      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
      Signed-off-by: default avatarMichael Chan <mchan@broadcom.com>
      Acked-by: default avatarGrant Grundler <iod00d@hp.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
  8. 06 Aug, 2005 1 commit
  9. 25 Jul, 2005 7 commits
  10. 05 Jul, 2005 2 commits
  11. 24 Jun, 2005 4 commits
    • David S. Miller's avatar
    • Michael Chan's avatar
      [TG3]: Refinements to new locking strategy. · bbe832c0
      Michael Chan authored
      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
      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: default avatarMichael Chan <mchan@broadcom.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    • David S. Miller's avatar
      [TG3]: Eliminate all hw IRQ handler spinlocks. · f47c11ee
      David S. Miller authored
      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: default avatarDavid S. Miller <davem@davemloft.net>
    • David S. Miller's avatar
      [TG3]: Fix missing memory barriers and SD_STATUS_UPDATED bit clearing. · cd024c8b
      David S. Miller authored
      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
      Based upon patches and commentary from Grant Grundler and
      Michael Chan.
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
  12. 08 Jun, 2005 2 commits
  13. 06 Jun, 2005 3 commits