12 Oct, 2007

1 commit


11 Oct, 2007

4 commits

  • Use the PCI layer config access functions. The driver was using the
    memory mapped window in device, to workaround issues accessing the
    advanced error reporting registers.

    Signed-off-by: Stephen Hemminger
    Signed-off-by: Jeff Garzik
    Signed-off-by: David S. Miller

    Stephen Hemminger
     
  • Use the kernel interfaces for advanced error reporting.
    This should be cleaner and clear up errors on boot.

    For those systems with busted BIOS's that don't correctly
    support mmconfig, advanced error reporting will be disabled.
    The PCI registers for advanced error reporting start at 0x100 which
    is too large to be accessed by legacy functions.

    Signed-off-by: Stephen Hemminger
    Signed-off-by: Jeff Garzik

    Stephen Hemminger
     
  • Add documentation of GPHY_CTRL register bits even if driver
    is not using them (yet).

    Signed-off-by: Stephen Hemminger
    Signed-off-by: Jeff Garzik

    Stephen Hemminger
     
  • Several devices have multiple independant RX queues per net
    device, and some have a single interrupt doorbell for several
    queues.

    In either case, it's easier to support layouts like that if the
    structure representing the poll is independant from the net
    device itself.

    The signature of the ->poll() call back goes from:

    int foo_poll(struct net_device *dev, int *budget)

    to

    int foo_poll(struct napi_struct *napi, int budget)

    The caller is returned the number of RX packets processed (or
    the number of "NAPI credits" consumed if you want to get
    abstract). The callee no longer messes around bumping
    dev->quota, *budget, etc. because that is all handled in the
    caller upon return.

    The napi_struct is to be embedded in the device driver private data
    structures.

    Furthermore, it is the driver's responsibility to disable all NAPI
    instances in it's ->stop() device close handler. Since the
    napi_struct is privatized into the driver's private data structures,
    only the driver knows how to get at all of the napi_struct instances
    it may have per-device.

    With lots of help and suggestions from Rusty Russell, Roland Dreier,
    Michael Chan, Jeff Garzik, and Jamal Hadi Salim.

    Bug fixes from Thomas Graf, Roland Dreier, Peter Zijlstra,
    Joseph Fannin, Scott Wood, Hans J. Koch, and Michael Chan.

    [ Ported to current tree and all drivers converted. Integrated
    Stephen's follow-on kerneldoc additions, and restored poll_list
    handling to the old style to fix mutual exclusion issues. -DaveM ]

    Signed-off-by: Stephen Hemminger
    Signed-off-by: David S. Miller

    Stephen Hemminger
     

25 Sep, 2007

1 commit


21 Sep, 2007

4 commits

  • A driver writer from another operating system hinted that
    the versions of Yukon 2 chip with rambuffer (EC and XL) have
    a hardware bug that if the FIFO ever gets completely full it
    will hang. Sounds like a classic ring full vs ring empty wrap around
    bug.

    As a workaround, use the existing watchdog timer to check for
    ring full lockup.

    Signed-off-by: Stephen Hemminger
    Signed-off-by: Jeff Garzik

    Stephen Hemminger
     
  • Add support for newest Marvell chips.
    The Yukon FE plus chip is found in some not yet released laptops.
    Tested on hardware evaluation boards.

    This version of the patch is for 2.6.23. It supersedes
    the two previous patches that are sitting in netdev-2.6 (upstream branch).

    Signed-off-by: Stephen Hemminger
    Signed-off-by: Jeff Garzik

    Stephen Hemminger
     
  • This patch should cause no functional changes in driver behaviour.
    There are (too) many revisions of the Yukon 2 chip now. Instead of
    adding more conditionals based on chip revision; rerganize into a
    set of feature flags so adding new versions is less problematic.

    Signed-off-by: Stephen Hemminger
    Signed-off-by: Jeff Garzik

    Stephen Hemminger
     
  • The length check for truncated frames was not correctly handling
    the case where VLAN acceleration had already read the tag.
    Also, the Yukon EX has some features that use high bit of status
    as security tag.

    Signed-off-by: Pierre-Yves Ritschard
    Signed-off-by: Stephen Hemminger
    Signed-off-by: Jeff Garzik

    Stephen Hemminger
     

25 Aug, 2007

1 commit


11 Jul, 2007

1 commit

  • Add an optional debug interface for displaying state of transmit/receive
    rings. Creates a file debugfs/sky2/ethX for each device that is up.

    Signed-off-by: Stephen Hemminger
    Signed-off-by: Jeff Garzik

    Stephen Hemminger
     

09 Jul, 2007

4 commits


30 May, 2007

2 commits


20 Apr, 2007

2 commits

  • The Yukon EC Ultra chips have transmit settings for store and
    forward and PCI buffering. By setting these appropriately, normal
    performance goes from 750Mbytes/sec to 940Mbytes/sec (non-jumbo).

    It is also possible to do Jumbo mode, but it means turning off
    TSO and checksum offload so the performance gets worse. There isn't
    enough buffering for checksum offload to work.

    Signed-off-by: Stephen Hemminger
    Signed-off-by: Jeff Garzik

    Stephen Hemminger
     
  • There should never be descriptor error unless hardware or driver is buggy.
    But if an error occurs, print useful information, clear irq, and recover.

    Signed-off-by: Stephen Hemminger
    Signed-off-by: Jeff Garzik

    Stephen Hemminger
     

18 Feb, 2007

2 commits

  • The transmit timeout code could hang, and it would not clear out
    problems if the hardware was stuck. Change the code to effectively do
    a device down/up similar to the suspend/resume code.

    Signed-off-by: Stephen Hemminger
    Signed-off-by: Jeff Garzik

    Stephen Hemminger
     
  • Don't mark pause frames as errors. This problem caused transmitter not
    to pause and would effectively take out a gigabit switch because the
    it can't handle overrun.

    Signed-off-by: Stephen Hemminger
    Signed-off-by: Jeff Garzik

    Stephen Hemminger
     

08 Feb, 2007

2 commits


06 Feb, 2007

1 commit


07 Dec, 2006

2 commits


02 Dec, 2006

2 commits


18 Oct, 2006

3 commits


11 Oct, 2006

1 commit

  • The pci express error handling extensions don't work unless PCI access is via
    mmconfig. Otherwise, all accesses to pci config registers greater than 256 fail.
    Since the sky2 driver has other ways of getting to PCI config space, it works
    around this short coming, but the pci_find_ext_capablity doesn't work.

    This backs out commit 91aeb3edbcf4e6ed72d138ac8c22fd68e6d717c3
    Go back to hardcoding, since we know where the error registers are anyway.
    Fixes http://bugzilla.kernel.org/show_bug.cgi?id=7222

    Signed-off-by: Stephen Hemminger
    Signed-off-by: Jeff Garzik

    Stephen Hemminger
     

28 Sep, 2006

4 commits


14 Sep, 2006

3 commits

  • Fix support for big endian platforms like PPC.
    Still not sure about VLAN acceleration (does it need swapping)?

    Signed-off-by: Stephen Hemminger
    Signed-off-by: Jeff Garzik

    Stephen Hemminger
     
  • Fix the support for fiber connected gigabit boards.
    Allow half duplex gigabit to be configured.

    Signed-off-by: Stephen Hemminger
    Signed-off-by: Jeff Garzik

    Stephen Hemminger
     
  • Fix problems with transmit pause frames. The driver was telling the
    GMAC to flush (not process) pause frames. Manually disabling pause wasn't
    working because of problems in the setup.

    This maybe the cause of the lockup under load.
    http://bugzilla.kernel.org/show_bug.cgi?id=6839

    Patch against netdev-2.6 git tree

    Signed-off-by: Stephen Hemminger
    Signed-off-by: Jeff Garzik

    Stephen Hemminger