16 Oct, 2007

3 commits


11 Oct, 2007

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

19 Jul, 2007

1 commit

  • The TSEC/eTSEC can detect the interface to the PHY automatically,
    but it isn't able to detect whether the RGMII connection needs internal
    delay. So we need to detect that change in the device tree, propagate
    it to the platform data, and then check it if we're in RGMII. This fixes
    a bug on the 8641D HPCN board where the Vitesse PHY doesn't use the delay
    for RGMII.

    Signed-off-by: Andy Fleming

    Andy Fleming
     

09 Jul, 2007

1 commit

  • Add code for initialising and configuring TBI interface and
    programming it for connecting to on-chip SERDES (Lynx PHY)
    in case of SGMII mode selected through HRCW at reset.

    also add defines for TBI register configuration. TBI
    interface is programmed towards the SERDES.

    refactored mdio read/write functions to differentiate
    programming local interface MII regs (e.g., for TBI) from
    always programming the mdio master (TSEC1, for programming
    the PHYs).

    Signed-off-by: Kapil Juneja
    Signed-off-by: Andy Fleming
    Signed-off-by: Kim Phillips
    Signed-off-by: Jeff Garzik

    Kapil Juneja
     

29 Jun, 2007

1 commit

  • In commit 4bedb45203eab92a87b4c863fe2d0cded633427f both the udp and tcp
    cases where changed to use udp_hdr() instead of leaving the tcp case
    alone and fixing with tcp_hdr().

    This ended up causing random behavior with TCP connections because
    of looking for tcp_hdr()->check in the wrong place.

    Signed-off-by: Kumar Gala

    Kumar Gala
     

03 Jun, 2007

1 commit

  • Many drivers had code that did kill_vid, but they weren't doing vlan
    filtering. With new API the stub is unneeded unless device sets
    NETIF_F_HW_VLAN_FILTER.

    Bad habit: I couldn't resist fixing a couple of nearby style things
    in acenic, and forcedeth.

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

    Stephen Hemminger
     

18 May, 2007

1 commit

  • The hardware must not see that is given ownership of a buffer until it is
    completely written, and when the driver receives ownership of a buffer,
    it must ensure that any other reads to the buffer reflect its final
    state. Thus, I/O barriers are added where required.

    Without this patch, I have observed GCC reordering the setting of
    bdp->length and bdp->status in gfar_new_skb. Hardware reordering
    was also theoretically possible.

    Signed-off-by: Scott Wood
    Signed-off-by: Jeff Garzik

    Scott Wood
     

26 Apr, 2007

5 commits


06 Mar, 2007

1 commit

  • I recognized a compile error in latest git:

    /here/workdir/git/drivers/net/gianfar.c: In function `gfar_vlan_rx_kill_vid':
    /here/workdir/git/drivers/net/gianfar.c:1135: error: structure has no member named `vgrp'

    This error was introduced in commit:

    commit 6d04e3b04b6ab569cabeb5ca28ad1be11777e895
    ...
    [VLAN]: Avoid a 4-order allocation.

    Signed-off-by: Jan Altenberg
    Signed-off-by: David S. Miller

    Jan Altenberg
     

03 Mar, 2007

1 commit

  • This patch splits the vlan_group struct into a multi-allocated struct. On
    x86_64, the size of the original struct is a little more than 32KB, causing
    a 4-order allocation, which is prune to problems caused by buddy-system
    external fragmentation conditions.

    I couldn't just use vmalloc() because vfree() cannot be called in the
    softirq context of the RCU callback.

    Signed-off-by: Dan Aloni
    Acked-by: Jeff Garzik
    Signed-off-by: David S. Miller

    Dan Aloni
     

18 Feb, 2007

1 commit

  • It was hardly necessary to repeat most of the code from gfar_error() in
    gfar_interrupt(), especially having some inconsistencies between the two.
    So, make the gfar_interrupt() just call gfar_error(), and not acknowledge
    the interrupts itself as gfar_{receive/transmit/error}() do it anyway.
    While at it, also clarify/cleanup debug messages in gfar_error()...

    Signed-off-by: Sergei Shtylyov
    Signed-off-by: Jeff Garzik

    Sergei Shtylyov
     

15 Feb, 2007

1 commit

  • After Al Viro (finally) succeeded in removing the sched.h #include in module.h
    recently, it makes sense again to remove other superfluous sched.h includes.
    There are quite a lot of files which include it but don't actually need
    anything defined in there. Presumably these includes were once needed for
    macros that used to live in sched.h, but moved to other header files in the
    course of cleaning it up.

    To ease the pain, this time I did not fiddle with any header files and only
    removed #includes from .c-files, which tend to cause less trouble.

    Compile tested against 2.6.20-rc2 and 2.6.20-rc2-mm2 (with offsets) on alpha,
    arm, i386, ia64, mips, powerpc, and x86_64 with allnoconfig, defconfig,
    allmodconfig, and allyesconfig as well as a few randconfigs on x86_64 and all
    configs in arch/arm/configs on arm. I also checked that no new warnings were
    introduced by the patch (actually, some warnings are removed that were emitted
    by unnecessarily included header files).

    Signed-off-by: Tim Schmielau
    Acked-by: Russell King
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Tim Schmielau
     

02 Dec, 2006

2 commits

  • Most PHYs connect to an ethernet controller over a GMII or MII
    interface. However, a growing number are connected over
    different interfaces, such as RGMII or SGMII.

    The ethernet driver will tell the PHY what type of connection it
    is by setting it manually, or passing it in through phy_connect
    (or phy_attach).

    Changes include:
    * Updates to documentation
    * Updates to PHY Lib consumers
    * Changes to PHY Lib to add interface support
    * Some minor changes to whitespace in phy.h
    * gianfar driver now detects interface and passes appropriate
    value to PHY Lib
    Signed-off-by: Andrew Fleming
    Signed-off-by: Jeff Garzik

    Andy Fleming
     
  • The patch inlined below adds NET_POLL_CONTROLLER support for gianfar network driver, slightly modified wrt the comments from Andy Fleming.

    drivers/net/gianfar.c | 33 +++++++++++++++++++++++++++++++++
    1 file changed, 33 insertions(+)

    Signed-off-by: Vitaly Wool
    Signed-off-by: Jeff Garzik

    Vitaly Wool
     

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
     

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

1 commit


14 Sep, 2006

2 commits


12 Sep, 2006

1 commit

  • As I promised last week, here is the first pass at removing all
    unnecessary printk's that exist in network device drivers currently in
    promiscuous mode. The duplicate messages are not needed so they have
    been removed. Some of these drivers are quite old and might not need an
    update, but I did them all anyway.

    I am currently auditing the remaining conditional printk's and will send
    out a patch for those soon.

    Signed-off-by: Andy Gospodarek
    Signed-off-by: Jeff Garzik

    Andy Gospodarek
     

01 Jul, 2006

1 commit


21 Apr, 2006

1 commit

  • This patch fixes several bugs in the gianfar driver, including a major one
    where spinlocks were horribly broken:

    * Split gianfar locks into two types: TX and RX
    * Made it so gfar_start() now clears RHALT
    * Fixed a bug where calling gfar_start_xmit() with interrupts off would
    corrupt the interrupt state
    * Fixed a bug where a frame could potentially arrive, and never be handled
    (if no more frames arrived
    * Fixed a bug where the rx_work_limit would never be observed by the rx
    completion code
    * Fixed a bug where the interrupt handlers were not actually protected by
    their spinlocks

    Signed-off-by: Andy Fleming
    Signed-off-by: Jeff Garzik

    Andy Fleming
     

21 Mar, 2006

1 commit


07 Feb, 2006

1 commit


13 Jan, 2006

2 commits


19 Nov, 2005

1 commit

  • This seems to have gotten lost, so I'll resend.

    Signed-off-by: Andy Fleming

    * Added sysfs support to gianfar for modifying FIFO and stashing parameters
    * Updated driver to support 10 Mbit, full duplex operation
    * Improved comments throughout
    * Cleaned up and optimized offloading code
    * Fixed a bug where rx buffers were being improperly mapped and unmapped
    * (only manifested if cache-coherency was off)
    * Added support for using the eTSEC exact-match MAC registers
    * Bumped the version to 1.3
    * Added support for distinguishing between reduced 100 and 10 Mbit modes
    * Modified default coalescing values to lower latency
    * Added documentation
    Signed-off-by: Jeff Garzik

    Andy Fleming
     

14 Nov, 2005

1 commit


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