1. 28 6月, 2005 6 次提交
  2. 27 6月, 2005 19 次提交
  3. 26 6月, 2005 2 次提交
  4. 25 6月, 2005 4 次提交
    • D
      [TG3]: Update driver version and reldate. · 5f70eaa0
      David S. Miller 提交于
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      5f70eaa0
    • M
      [TG3]: Refinements to new locking strategy. · bbe832c0
      Michael Chan 提交于
      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: NMichael Chan <mchan@broadcom.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      bbe832c0
    • D
      [TG3]: Eliminate all hw IRQ handler spinlocks. · f47c11ee
      David S. Miller 提交于
      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: NDavid S. Miller <davem@davemloft.net>
      f47c11ee
    • D
      [TG3]: Fix missing memory barriers and SD_STATUS_UPDATED bit clearing. · cd024c8b
      David S. Miller 提交于
      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: NDavid S. Miller <davem@davemloft.net>
      cd024c8b
  5. 24 6月, 2005 2 次提交
  6. 23 6月, 2005 2 次提交
  7. 22 6月, 2005 2 次提交
  8. 21 6月, 2005 1 次提交
  9. 14 6月, 2005 1 次提交
  10. 13 6月, 2005 1 次提交