07 Aug, 2008

2 commits


29 Jan, 2008

1 commit


10 Nov, 2007

1 commit

  • The link state machine requires access to some resources that
    are shared with the iSCSI function on the chip. (See iSCSI
    driver at drivers/scsi/qla4xxx) If the interface is being
    up/downed at a rapid pace this driver may need to sleep
    waiting to get access to the common resources. For this we
    are moving the state machine to run as a work thread.

    Signed-off-by: Ron Mercer
    Signed-off-by: Jeff Garzik

    Ron Mercer
     

11 Oct, 2007

3 commits

  • Also, hopefully, change the file permissions to 0644.

    Signed-off-by: Jeff Garzik

    Jeff Garzik
     
  • We now have struct net_device_stats embedded in struct net_device,
    and the default ->get_stats() hook does the obvious thing for us.

    Run through drivers/net/* and remove the driver-local storage of
    statistics, and driver-local ->get_stats() hook where applicable.

    This was just the low-hanging fruit in drivers/net; plenty more drivers
    remain to be updated.

    [ Resolved conflicts with napi_struct changes and fix sunqe build
    regression... -DaveM ]

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

    Jeff Garzik
     
  • 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
     

28 Apr, 2007

1 commit


28 Mar, 2007

1 commit

  • Fixed rx checksum bits. Turn on TCP processing for rx checksum.
    Fixed max frame length register write. It wasn't getting set
    in multi-port system. Set rx buffer queue length properly
    for jumbo frames.

    Signed-off-by: Ron Mercer
    Signed-off-by: Jeff Garzik

    Ron Mercer
     

27 Feb, 2007

3 commits

  • To reproduce this panic consistently, we run an intensive network
    application like 'netperf'. After waiting for a couple of seconds,
    you will see a stack trace and a kernel panic where we are calling
    pci_unmap_single() in ql_poll().

    Changes:
    1) Check the flags on the Response MAC IO Control block to check for
    errors
    2) Ensure that if we are on the 4022 we only use one segment
    3) Before, we were reading the memory mapped producer index register
    everytime we iterated in the loop when clearing the queue. We should
    only be iterating to a known point, not as the producer index
    is being updated.

    Signed-off-by: Benjamin Li
    Signed-off-by: Ron Mercer
    Signed-off-by: Jeff Garzik

    Benjamin Li
     
  • The scatter/gather lists were not being build correctly. When
    large frames spanned several buffers the chip would panic.

    Signed-off-by: Ron Mercer
    Signed-off-by: Jeff Garzik

    Ron Mercer
     
  • This change removes use of constants for rx buffer queue size
    and instead calculates the queue length based on what he MTU
    is set to.

    Signed-off-by: Ron Mercer
    Signed-off-by: Jeff Garzik

    Ron Mercer
     

06 Feb, 2007

1 commit


22 Nov, 2006

1 commit


25 Sep, 2006

1 commit


29 Jul, 2006

1 commit

  • This is a complementary network driver for our ISP4XXX parts.

    There is a concurrent effort underway to get the iSCSI driver (qla4xxx)
    integrated upstream as well.

    I have been through several iterations with the linux-netdev list and have had
    much response from Stephen Hemminger.

    - Built and tested using kernel 2.6.17-rc4.

    - The chip supports two ethernet and two iSCSI functions.

    - The functions ql_sem_lock, ql_sem_spinlock, ql_sem_unlock, and
    ql_wait_for_drvr_lock are used to protect resources that are shared across
    the network and iSCSI functions. This protection is mostly during chip
    initialization and resets, but also include link management.

    - The PHY/MII are not exported through ethtool due to the fact that the
    iSCSI function will control the common link at least 50% of the time.

    This driver has been through several iterations on the netdev list and we feel
    this driver is ready for inclusion in the upstream kernel.

    It has been built and tested on x86 and PPC64 platforms.

    Cc: Jeff Garzik
    Cc: Stephen Hemminger
    Signed-off-by: Ron Mercer
    Signed-off-by: Andrew Morton
    Signed-off-by: Jeff Garzik

    Ron Mercer