11 Oct, 2007

3 commits

  • This is nicer than the MAC_FMT stuff.

    Signed-off-by: Joe Perches
    Signed-off-by: David S. Miller

    Joe Perches
     
  • 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
     
  • It's been a useless no-op for long enough in 2.6 so I figured it's time to
    remove it. The number of people that could object because they're
    maintaining unified 2.4 and 2.6 drivers is probably rather small.

    [ Handled drivers added by netdev tree and some missed IRDA cases... -DaveM ]

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

    Ralf Baechle
     

25 Aug, 2007

1 commit

  • When transferring data at full speed, the DM9000 network interface
    sometimes stops sending/receiving data. Worse, ksoftirqd consumes
    100% cpu and the net tx watchdog never triggers.
    Fix by spin_lock_irqsave() in dm9000_start_xmit() to prevent the
    interrupt handler from interfering.

    Signed-off-by: Florian Westphal
    Signed-off-by: Jeff Garzik

    Florian Westphal
     

12 Jul, 2007

1 commit


08 May, 2007

2 commits


26 Apr, 2007

1 commit


09 Oct, 2006

1 commit


05 Oct, 2006

1 commit

  • Maintain a per-CPU global "struct pt_regs *" variable which can be used instead
    of passing regs around manually through all ~1800 interrupt handlers in the
    Linux kernel.

    The regs pointer is used in few places, but it potentially costs both stack
    space and code to pass it around. On the FRV arch, removing the regs parameter
    from all the genirq function results in a 20% speed up of the IRQ exit path
    (ie: from leaving timer_interrupt() to leaving do_IRQ()).

    Where appropriate, an arch may override the generic storage facility and do
    something different with the variable. On FRV, for instance, the address is
    maintained in GR28 at all times inside the kernel as part of general exception
    handling.

    Having looked over the code, it appears that the parameter may be handed down
    through up to twenty or so layers of functions. Consider a USB character
    device attached to a USB hub, attached to a USB controller that posts its
    interrupts through a cascaded auxiliary interrupt controller. A character
    device driver may want to pass regs to the sysrq handler through the input
    layer which adds another few layers of parameter passing.

    I've build this code with allyesconfig for x86_64 and i386. I've runtested the
    main part of the code on FRV and i386, though I can't test most of the drivers.
    I've also done partial conversion for powerpc and MIPS - these at least compile
    with minimal configurations.

    This will affect all archs. Mostly the changes should be relatively easy.
    Take do_IRQ(), store the regs pointer at the beginning, saving the old one:

    struct pt_regs *old_regs = set_irq_regs(regs);

    And put the old one back at the end:

    set_irq_regs(old_regs);

    Don't pass regs through to generic_handle_irq() or __do_IRQ().

    In timer_interrupt(), this sort of change will be necessary:

    - update_process_times(user_mode(regs));
    - profile_tick(CPU_PROFILING, regs);
    + update_process_times(user_mode(get_irq_regs()));
    + profile_tick(CPU_PROFILING);

    I'd like to move update_process_times()'s use of get_irq_regs() into itself,
    except that i386, alone of the archs, uses something other than user_mode().

    Some notes on the interrupt handling in the drivers:

    (*) input_dev() is now gone entirely. The regs pointer is no longer stored in
    the input_dev struct.

    (*) finish_unlinks() in drivers/usb/host/ohci-q.c needs checking. It does
    something different depending on whether it's been supplied with a regs
    pointer or not.

    (*) Various IRQ handler function pointers have been moved to type
    irq_handler_t.

    Signed-Off-By: David Howells
    (cherry picked from 1b16e7ac850969f38b375e511e3fa2f474a33867 commit)

    David Howells
     

11 Sep, 2006

1 commit

  • dm9000_release_board calls release_resource with the platform resource
    instead of the requested resource:

    db->addr_res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
    db->addr_req = request_mem_region(db->addr_res->start, i, pdev->name);

    dm9000_release_board:

    if (db->addr_res != NULL) {
    release_resource(db->addr_res);
    kfree(db->addr_req);

    With this behavior the kernel will crash on the second removal. The
    attached patch fix this problem.

    Signed-off-by: Dirk Opfer
    Signed-off-by: Jeff Garzik

    Dirk Opfer
     

20 Aug, 2006

1 commit


03 Jul, 2006

1 commit


27 Jun, 2006

4 commits

  • Ensure the driver's module owner field is
    initialised for when this is being built and
    loaded as a module.

    Also change make the dm9000_tx_done function
    static, as it is not exported elsewhere.

    Signed-off-by: Ben Dooks
    Signed-off-by: Jeff Garzik

    Ben Dooks
     
  • The DM9000 initialisation sequence for the
    hardware re-initialise the board spin-lock,
    which is in my view wrong.

    This patch removes the extra spin lock
    initialisation

    Signed-off-by: Ben Dooks
    Signed-off-by: Jeff Garzik

    Ben Dooks
     
  • The DM9000 driver does not deal with the case
    where there is no serial EEPROM to store the
    configuration, and the bootloader has placed
    an MAC address into the device already.

    If there is no valid MAC in the EEPROM, read
    the one already in the chip and check to see
    if that one is valid.

    Signed-off-by: Ben Dooks
    Signed-off-by: Jeff Garzik

    Ben Dooks
     
  • The current DM9000 driver cannot cope if it
    is given more than 3 resources (for example, if
    it is being passed an wake-up irq that it is
    not using yet).

    Check that we have been given at-least one IRQ
    resource.

    Also fix the minor type-casting for the case
    of 2 resources.

    Signed-off-by: Ben Dooks
    Signed-off-by: Jeff Garzik

    Ben Dooks
     

12 Nov, 2005

1 commit


10 Nov, 2005

1 commit


09 Nov, 2005

1 commit

  • This patch removes almost all inclusions of linux/version.h. The 3
    #defines are unused in most of the touched files.

    A few drivers use the simple KERNEL_VERSION(a,b,c) macro, which is
    unfortunatly in linux/version.h.

    There are also lots of #ifdef for long obsolete kernels, this was not
    touched. In a few places, the linux/version.h include was move to where
    the LINUX_VERSION_CODE was used.

    quilt vi `find * -type f -name "*.[ch]"|xargs grep -El '(UTS_RELEASE|LINUX_VERSION_CODE|KERNEL_VERSION|linux/version.h)'|grep -Ev '(/(boot|coda|drm)/|~$)'`

    search pattern:
    /UTS_RELEASE\|LINUX_VERSION_CODE\|KERNEL_VERSION\|linux\/\(utsname\|version\).h

    Signed-off-by: Olaf Hering
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Olaf Hering
     

30 Oct, 2005

1 commit


29 Oct, 2005

1 commit

  • In PM v1, all devices were called at SUSPEND_DISABLE level. Then
    all devices were called at SUSPEND_SAVE_STATE level, and finally
    SUSPEND_POWER_DOWN level. However, with PM v2, to maintain
    compatibility for platform devices, I arranged for the PM v2
    suspend/resume callbacks to call the old PM v1 suspend/resume
    callbacks three times with each level in order so that existing
    drivers continued to work.

    Since this is obsolete infrastructure which is no longer necessary,
    we can remove it. Here's an (untested) patch to do exactly that.

    Signed-off-by: Russell King
    Signed-off-by: Greg Kroah-Hartman

    Russell King
     

07 Sep, 2005

1 commit


19 Aug, 2005

2 commits

  • The DM9000 driver is responding to ioctl() calls it should not be. This
    can cause problems with the wireless tools incorrectly indentifying the
    device as wireless capable, and crashing under certain operations.

    This patch also moves the version printk() to the init call, so that
    you only get it once for multiple devices, and to show it is loaded
    if there are no defined dm9000s

    Signed-off-by: Ben Dooks
    Signed-off-by: Jeff Garzik

    Ben Dooks
     
  • Fix DM9000 driver usage of spinlocks, which mainly came to light
    when running a kernel with spinlock debugging. These come down to:

    1) Un-initialised spin lock

    2) Several cases of using spin_xxx(lock) and not spin_xxx(&lock)

    3) move the locking around the phy reg for read/write to only
    keep the lock when actually reading or writing to the phy.

    Signed-off-by: Ben Dooks
    Signed-off-by: Jeff Garzik

    Ben Dooks
     

27 Jun, 2005

1 commit

  • This patch fixes two bugs in the dm9000 network driver:

    - Don't read one byte too much in 8bit mode.
    - release correct resource

    Signed-off-by: Jochen Karrer
    Signed-off-by: Sascha Hauer
    Cc: Jeff Garzik
    Signed-off-by: Andrew Morton

    Sascha Hauer
     

16 May, 2005

1 commit

  • This patch adds support for the davicom dm9000 network driver. The dm9000
    is found on some embedded arm boards such as the pimx1 or the scb9328.

    Signed-off-by: Sascha Hauer
    Signed-off-by: Ben Dooks
    Signed-off-by: Andrew Morton

    diff -puN /dev/null drivers/net/dm9000.c

    Sascha Hauer