1. 30 8月, 2005 2 次提交
    • M
      [BNX2]: speedup serdes linkup · cd339a0e
      Michael Chan 提交于
      This speeds up link-up time on 5706 SerDes if the link partner does
      not autoneg, a rather common scenario in blade servers. Some blade
      servers use IPMI for keyboard input and it's important to minimize
      link disruptions.
      
      The speedup is achieved by shortening the timer to (HZ / 3) during
      the transient period right after initiating a SerDes autoneg. If
      autoneg does not complete, parallel detect can be done sooner. After
      the transient period is over, the timer goes back to its normal HZ
      interval.
      
      As suggested by Jeff Garzik, the timer initialization is moved to
      bnx2_init_board() from bnx2_open().
      
      An eeprom bit is also added to allow default forced SerDes speed for
      even faster link-up time.
      Signed-off-by: NMichael Chan <mchan@broadcom.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      cd339a0e
    • M
      [BNX2]: Fix rtnl deadlock in bnx2_close · afdc08b9
      Michael Chan 提交于
      This fixes an rtnl deadlock problem when flush_scheduled_work() is
      called from bnx2_close(). In rare cases, linkwatch_event() may be on
      the workqueue from a previous close of a different device and it will
      try to get the rtnl lock which is already held by dev_close().
      
      The fix is to set a flag if we are in the reset task which is run
      from the workqueue. bnx2_close() will loop until the flag is cleared.
      As suggested by Jeff Garzik, the loop is changed to call msleep(1)
      instead of yield() in the original patch.
      
      flush_scheduled_work() is also moved to bnx2_remove_one() before the
      netdev is freed.
      Signed-off-by: NMichael Chan <mchan@broadcom.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      afdc08b9
  2. 27 5月, 2005 1 次提交