10 Feb, 2008

1 commit

  • gcc-3.4.4 on powerpc:

    drivers/net/starfire.c:219: error: version causes a section type conflict

    Cc: Jeff Garzik
    Cc: Sam Ravnborg
    Signed-off-by: Andrew Morton
    Signed-off-by: David S. Miller

    Andrew Morton
     

15 Dec, 2007

1 commit

  • Recognized VLAN ids are set via writew(), should go in host-endian.
    That's a long-standing bug, BTW - see http://lkml.org/lkml/2004/2/27/180
    for example. What happens is that card gets VLAN id table populated by
    byteswapped values on little-endian boxen (so 257 works as expected, 256
    and 258 do not, etc.). Bug is easily reproduced, patch fixes it.

    Signed-off-by: Al Viro
    Signed-off-by: Jeff Garzik

    Al Viro
     

11 Oct, 2007

4 commits

  • Note: we still have several fishy areas - mcast filter
    and vlan handling.

    Signed-off-by: Al Viro
    Signed-off-by: Jeff Garzik

    Al Viro
     
  • This is nicer than the MAC_FMT stuff.

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

    Joe Perches
     
  • 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
     

13 Jul, 2007

1 commit

  • * master.kernel.org:/pub/scm/linux/kernel/git/gregkh/pci-2.6: (34 commits)
    PCI: Only build PCI syscalls on architectures that want them
    PCI: limit pci_get_bus_and_slot to domain 0
    PCI: hotplug: acpiphp: avoid acpiphp "cannot get bridge info" PCI hotplug failure
    PCI: hotplug: acpiphp: remove hot plug parameter write to PCI host bridge
    PCI: hotplug: acpiphp: fix slot poweroff problem on systems without _PS3
    PCI: hotplug: pciehp: wait for 1 second after power off slot
    PCI: pci_set_power_state(): check for PM capabilities earlier
    PCI: cpci_hotplug: Convert to use the kthread API
    PCI: add pci_try_set_mwi
    PCI: pcie: remove SPIN_LOCK_UNLOCKED
    PCI: ROUND_UP macro cleanup in drivers/pci
    PCI: remove pci_dac_dma_... APIs
    PCI: pci-x-pci-express-read-control-interfaces cleanups
    PCI: Fix typo in include/linux/pci.h
    PCI: pci_ids, remove double or more empty lines
    PCI: pci_ids, add atheros and 3com_2 vendors
    PCI: pci_ids, reorder some entries
    PCI: i386: traps, change VENDOR to DEVICE
    PCI: ATM: lanai, change VENDOR to DEVICE
    PCI: Change all drivers to use pci_device->revision
    ...

    Linus Torvalds
     

12 Jul, 2007

1 commit

  • As suggested by Andrew, add pci_try_set_mwi(), which does not require
    return-value checking.

    - add pci_try_set_mwi() without __must_check
    - make it return 0 on success, errno if the "try" failed or error
    - review callers

    Signed-off-by: Randy Dunlap
    Cc: Alan Cox
    Signed-off-by: Andrew Morton
    Signed-off-by: Greg Kroah-Hartman

    Randy Dunlap
     

11 Jul, 2007

1 commit


02 Jul, 2007

1 commit


26 Apr, 2007

1 commit


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
     

04 Dec, 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
     

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


20 Aug, 2006

1 commit


06 Jul, 2006

2 commits

  • - fealnx: convert #define to enum
    - fealnx, sundance: mark chip info table __devinitdata
    - fealnx: use dev_printk() during probe
    - fealnx: formatting cleanups
    - starfire: remove obsolete comment
    - sundance, via-rhine: add some whitespace where useful, in tables
    - sundance: prefer "{ }" table terminator
    - via-rhine: mark PCI probe table const

    Signed-off-by: Jeff Garzik

    Jeff Garzik
     
  • When in-kernel net drivers branched from Donald Becker's vanilla driver
    set, in the days before BitKeeper and git, a driver changelog was
    maintained in the driver source code. These days, the kernel's
    changelog is far superior and much more accurate, so the in-driver
    changelogs are removed.

    Another relic of the Becker/kernel split was version numbering, using
    "foo-LKx.y.z" notation, resulting in weird version numbers like
    "1.17b-LK1.1.9". These drivers are for older hardware, and see few
    changes these days, so the version numbers were all bumped to something
    more simple.

    Finally, in xircom_tulip_cb specifically, an additional cleanup removes
    the always-enabled CARDBUS cpp macro.

    Signed-off-by: Jeff Garzik

    Jeff Garzik
     

03 Jul, 2006

1 commit


01 Jul, 2006

1 commit


23 Jun, 2006

1 commit

  • First of all it is unnecessary to allocate a new skb in skb_pad since
    the existing one is not shared. More importantly, our hard_start_xmit
    interface does not allow a new skb to be allocated since that breaks
    requeueing.

    This patch uses pskb_expand_head to expand the existing skb and linearize
    it if needed. Actually, someone should sift through every instance of
    skb_pad on a non-linear skb as they do not fit the reasons why this was
    originally created.

    Incidentally, this fixes a minor bug when the skb is cloned (tcpdump,
    TCP, etc.). As it is skb_pad will simply write over a cloned skb. Because
    of the position of the write it is unlikely to cause problems but still
    it's best if we don't do it.

    Signed-off-by: Herbert Xu
    Signed-off-by: David S. Miller

    Herbert Xu
     

13 Apr, 2006

1 commit

  • If CONFIG_HOTPLUG=n, gcc doesn't like some __initdata to be const (rodata)
    and other __initdata not const, so make the non-const __initdata const.

    gcc errors:
    drivers/net/bnx2.c:66: error: version causes a section type conflict
    drivers/net/starfire.c:338: error: version causes a section type conflict
    drivers/net/typhoon.c:137: error: version causes a section type conflict
    drivers/net/natsemi.c:241: error: version causes a section type conflict

    Signed-off-by: Randy Dunlap
    Signed-off-by: Andrew Morton
    Signed-off-by: Jeff Garzik

    Randy Dunlap
     

02 Apr, 2006

1 commit


04 Mar, 2006

2 commits


18 Jan, 2006

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
     

29 Oct, 2005

1 commit


04 Oct, 2005

1 commit

  • Unfortunately, [your patch] might address the crash but doesn't address
    the real problem. It turns out that the problem is one of padding
    (the firmware cksum engine works only on 32-bit chunks, yuck), so
    the special casing for length == 1 wasn't sufficient anyway.

    This patch addresses the issue, as well the other issue of i386 +
    CONFIG_HIGHMEM being broken. It is pretty much the same workaround
    that Adaptec themselves used in their Windows driver. I have yet to
    check if it fixes the problem when the skb is non-linear, but this
    patch _will_ solve the problem for 99% of the users out there (those
    not using sendfile).

    Signed-off-by: Ion Badulescu
    Signed-off-by: Jeff Garzik

    Ion Badulescu
     

29 Jun, 2005

1 commit

  • Many drivers use skb->tail unnecessarily.

    In these situations, the code roughly looks like:

    dev = dev_alloc_skb(...);

    [optional] skb_reserve(skb, ...);

    ... skb->tail ...

    But even if the skb_reserve() happens, skb->data equals
    skb->tail. So it doesn't make any sense to use anything
    other than skb->data in these cases.

    Another case was the s2io.c driver directly mucking with
    the skb->data and skb->tail pointers. It really just wanted
    to do an skb_reserve(), so that's what the code was changed
    to do instead.

    Another reason I'm making this change as it allows some SKB
    cleanups I have planned simpler to merge. In those cleanups,
    skb->head, skb->tail, and skb->end pointers are removed, and
    replaced with skb->head_room and skb->tail_room integers.

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

    David S. Miller
     

13 May, 2005

1 commit


17 Apr, 2005

1 commit

  • Initial git repository build. I'm not bothering with the full history,
    even though we have it. We can create a separate "historical" git
    archive of that later if we want to, and in the meantime it's about
    3.2GB when imported into git - space that would just make the early
    git days unnecessarily complicated, when we don't have a lot of good
    infrastructure for it.

    Let it rip!

    Linus Torvalds