29 Oct, 2005

1 commit


13 Sep, 2005

1 commit


09 Sep, 2005

1 commit

  • Fix bug in bnx2_interrupt() that caused an unnecessary register read.
    The BNX2_PCICFG_MISC_STATUS should only be read when the status tag
    has not changed.

    Add prefetch of the status block in bnx2_msi() similar to tg3_msi().
    The status block is not touched in bnx2_msi() and prefetching it will
    speed up bnx2_poll() that will run on the same CPU that received the
    MSI.

    Update version.

    Signed-off-by: Michael Chan
    Signed-off-by: David S. Miller

    Michael Chan
     

05 Sep, 2005

1 commit


30 Aug, 2005

6 commits

  • Update version and add 4 minor fixes, the last 2 were suggested by
    Jeff Garzik:

    1. check for a valid ethernet address before setting it
    2. zero out bp->regview if init_one encounters an error and unmaps
    the IO address. This prevents remove_one from unmapping again.
    3. use netif_rx_schedule() instead of hand coding the same.
    4. use IRQ_HANDLED and IRQ_NONE.

    Signed-off-by: Michael Chan
    Signed-off-by: David S. Miller

    Michael Chan
     
  • Change all locks from spin_lock_irqsave() to spin_lock_bh(). All
    places that require spinlocks are in BH context.

    Signed-off-by: Michael Chan
    Signed-off-by: David S. Miller

    Michael Chan
     
  • Remove atomic operations in the fast tx path. Expensive atomic
    operations were used to keep track of the number of available tx
    descriptors. The new code uses the difference between the consumer
    and producer index to determine the number of free tx descriptors.

    As suggested by Jeff Garzik, the name of the inline function is
    changed to all lower case.

    Signed-off-by: Michael Chan
    Signed-off-by: David S. Miller

    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: Michael Chan
    Signed-off-by: David S. Miller

    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: Michael Chan
    Signed-off-by: David S. Miller

    Michael Chan
     
  • This patch contains the following possible cleanups/fixes:

    - use C99 struct initializers
    - make a few arrays and structs static
    - remove a few uses of literal 0 as NULL pointer
    - use convenience function instead of cast+dereference in bnx2_ioctl()
    - remove superfluous casts to u8 * in calls to readl/writel

    Signed-off-by: Peter Hagervall
    Acked-by: Michael Chan
    Signed-off-by: David S. Miller

    Peter Hagervall
     

27 May, 2005

1 commit

  • A new driver bnx2 for Broadcom bcm5706 is available.

    The patch also includes new 1000BASE-X advertisement bit definitions in
    mii.h

    Thanks to David Miller and Jeff Garzik for reviewing and their valuable
    feedback.

    Signed-off-by: Michael Chan
    Signed-off-by: David S. Miller

    Michael Chan