29 Sep, 2006

9 commits


25 Sep, 2006

1 commit

  • * '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.

    Linus Torvalds
     

23 Sep, 2006

3 commits

  • Convert the pci_device_ids to PCI_DEVICE() macro. Saves 1.5k in the
    sourcefile.

    Signed-off-by: Henrik Kretzschmar
    Acked-by: Michael Chan
    Signed-off-by: David S. Miller

    Henrik Kretzschmar
     
  • 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
    Signed-off-by: Andrew Morton
    Signed-off-by: David S. Miller

    Andreas Mohr
     
  • 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
    Signed-off-by: David S. Miller

    Patrick McHardy
     

14 Sep, 2006

2 commits


20 Aug, 2006

1 commit


08 Aug, 2006

2 commits

  • Fix a subtle race condition between tg3_start_xmit() and tg3_tx()
    discovered by Herbert Xu :

    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
    Acked-by: Herbert Xu
    Signed-off-by: David S. Miller

    Michael Chan
     
  • All caller of netdev_alloc_skb need to assign skb->dev shortly
    afterwards. Move it into common code.

    Signed-off-by: Christoph Hellwig
    Signed-off-by: David S. Miller

    Christoph Hellwig
     

03 Aug, 2006

1 commit


26 Jul, 2006

3 commits


09 Jul, 2006

1 commit


04 Jul, 2006

1 commit


03 Jul, 2006

1 commit


01 Jul, 2006

7 commits

  • * 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

    Linus Torvalds
     
  • Update version to 3.61.

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

    Michael Chan
     
  • 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 for reporting the
    problem and collecting traces to help debug the problem.

    And thanks to Herbert Xu for providing
    the GSO mechanism that happens to be the perfect workaround for this
    problem.

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

    Michael Chan
     
  • Clear a bit to enable a hardware fix for some ASF related problem.

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

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

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

    Michael Chan
     
  • Signed-off-by: Jörn Engel
    Signed-off-by: Adrian Bunk

    Jörn Engel
     

24 Jun, 2006

1 commit


23 Jun, 2006

1 commit

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

    Herbert Xu
     

18 Jun, 2006

5 commits

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

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

    Michael Chan
     
  • Update version to 3.60.

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

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

    Michael Chan
     
  • Add PCI ID for BCM5786 which is a variant of 5787.

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

    Michael Chan
     

10 Jun, 2006

1 commit

  • 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

    David S. Miller