23 Jul, 2008

1 commit


18 Jul, 2008

2 commits

  • Conflicts:

    Documentation/powerpc/booting-without-of.txt
    drivers/atm/Makefile
    drivers/net/fs_enet/fs_enet-main.c
    drivers/pci/pci-acpi.c
    net/8021q/vlan.c
    net/iucv/iucv.c

    David S. Miller
     
  • alloc_netdev_mq() now allocates an array of netdev_queue
    structures for TX, based upon the queue_count argument.

    Furthermore, all accesses to the TX queues are now vectored
    through the netdev_get_tx_queue() and netdev_for_each_tx_queue()
    interfaces. This makes it easy to grep the tree for all
    things that want to get to a TX queue of a net device.

    Problem spots which are not really multiqueue aware yet, and
    only work with one queue, can easily be spotted by grepping
    for all netdev_get_tx_queue() calls that pass in a zero index.

    Signed-off-by: David S. Miller

    David S. Miller
     

15 Jul, 2008

6 commits


09 Jul, 2008

2 commits

  • Accesses are mostly structured such that when there are multiple TX
    queues the code transformations will be a little bit simpler.

    Signed-off-by: David S. Miller

    David S. Miller
     
  • - vlan_dev_reorder_header() is only called on the receive path after
    calling skb_share_check(). This means we can use skb_cow() since
    all we need is a writable header.

    - vlan_dev_hard_header() includes a work-around for some apparently
    broken out of tree MPLS code. The hard_header functions can expect
    to always have a headroom of at least there own hard_header_len
    available, so the reallocation check is unnecessary.

    - __vlan_put_tag() can use skb_cow_head() to avoid the skb_unshare()
    copy when the header is writable.

    Signed-off-by: Patrick McHardy
    Signed-off-by: David S. Miller

    Patrick McHardy
     

08 Jul, 2008

6 commits

  • The VLAN code contains multiple spots that use tag, id and tci as
    identifiers for arguments and variables incorrectly and they actually
    contain or are expected to contain something different. Additionally
    types are used inconsistently (unsigned short vs u16) and identifiers
    are sometimes capitalized.

    - consistently use u16 for storing TCI, ID or QoS values
    - consistently use vlan_id and vlan_tci for storing the respective values
    - remove capitalization
    - add kdoc comment to netif_hwaccel_{rx,receive_skb}

    Signed-off-by: Patrick McHardy
    Signed-off-by: David S. Miller

    Patrick McHardy
     
  • Hide struct vlan_dev_info from drivers to prevent them from growing
    more creative ways to use it. Provide accessors for the two drivers
    that currently use it.

    Signed-off-by: Patrick McHardy
    Signed-off-by: David S. Miller

    Patrick McHardy
     
  • The function is huge and included at least once in every VLAN acceleration
    capable driver. Uninline it; to avoid having drivers depend on the VLAN
    module, the function is always built in statically when VLAN is enabled.

    With all VLAN acceleration capable drivers that build on x86_64 enabled,
    this results in:

    text data bss dec hex filename
    6515227 854044 343968 7713239 75b1d7 vmlinux.inlined
    6505637 854044 343968 7703649 758c61 vmlinux.uninlined
    ----------------------------------------------------------
    -9590

    Signed-off-by: Patrick McHardy
    Signed-off-by: David S. Miller

    Patrick McHardy
     
  • Add ethtool support for querying the device for offload settings.

    Signed-off-by: Patrick McHardy
    Signed-off-by: David S. Miller

    Patrick McHardy
     
  • Use simplified is_vlan_dev function.

    Signed-off-by: Joonwoo Park
    Signed-off-by: Patrick McHardy
    Signed-off-by: David S. Miller

    Joonwoo Park
     
  • Lennert Buytenhek points out that the VLAN code incorrectly adjusts
    skb->network_header to point in the middle of the VLAN header and
    additionally tries to adjust skb->mac_header without checking for
    validity.

    The network_header should not be touched at all since we're only
    adding headers in front of it, mac_header adjustments are not
    necessary at all.

    Based on patch by Lennert Buytenhek .

    Signed-off-by: Patrick McHardy
    Signed-off-by: David S. Miller

    Patrick McHardy
     

06 Jul, 2008

3 commits

  • Add GVRP support for dynamically registering VLANs with switches.

    By default GVRP is disabled because we only support the applicant-only
    participant model, which means it should not be enabled on vlans that
    are members of a bridge. Since there is currently no way to cleanly
    determine that, the user is responsible for enabling it.

    The code is pretty small and low impact, its wrapped in a config
    option though because it depends on the GARP implementation and
    the STP core.

    Signed-off-by: Patrick McHardy
    Signed-off-by: David S. Miller

    Patrick McHardy
     
  • Move the unregister_netdevice() call for the VLAN device before cleanup
    for the lower device. This is needed by GVRP so it can send a leave
    message before the applicant on the lower device is cleaned up.

    Signed-off-by: Patrick McHardy
    Signed-off-by: David S. Miller

    Patrick McHardy
     
  • Change vlan_dev_set_vlan_flag() to handle multiple flags at once and
    rename to vlan_dev_change_flags(). This allows to to use it from the
    netlink interface, which in turn allows to handle necessary adjustments
    when changing flags centrally.

    Signed-off-by: Patrick McHardy
    Signed-off-by: David S. Miller

    Patrick McHardy
     

16 Jun, 2008

1 commit


23 May, 2008

1 commit


21 May, 2008

2 commits


19 May, 2008

1 commit

  • Move rcu-protected lists from list.h into a new header file rculist.h.

    This is done because list are a very used primitive structure all over the
    kernel and it's currently impossible to include other header files in this
    list.h without creating some circular dependencies.

    For example, list.h implements rcu-protected list and uses rcu_dereference()
    without including rcupdate.h. It actually compiles because users of
    rcu_dereference() are macros. Others RCU functions could be used too but
    aren't probably because of this.

    Therefore this patch creates rculist.h which includes rcupdates without to
    many changes/troubles.

    Signed-off-by: Franck Bui-Huu
    Acked-by: Paul E. McKenney
    Acked-by: Josh Triplett
    Signed-off-by: Andrew Morton
    Signed-off-by: Ingo Molnar

    Franck Bui-Huu
     

02 May, 2008

1 commit


16 Apr, 2008

8 commits


14 Apr, 2008

1 commit


05 Apr, 2008

1 commit

  • These entries are allocated in vlan_dev_set_egress_priority,
    but are never released and leaks on vlan device removal.

    Drop these in vlan's ->uninit callback - after the device is
    brought down and everyone is notified about it is going to
    be unregistered.

    Found during testing vlan netnsization patchset.

    Signed-off-by: Pavel Emelyanov
    Acked-by: Patrick McHardy
    Signed-off-by: David S. Miller

    Pavel Emelyanov
     

03 Apr, 2008

1 commit


02 Apr, 2008

1 commit


28 Mar, 2008

1 commit


27 Mar, 2008

1 commit

  • Currently each vlan_groupd contains 8 pointers on arrays with 512
    pointers on struct net_device each :) Such a construction "in many
    cases ... wastes memory".

    My proposal is to allow for some of these arrays pointers be NULL,
    meaning that there are no devices in it. When a new device is added
    to the vlan_group, the appropriate array is allocated.

    The check in vlan_group_get_device's is safe, since the pointer
    vg->vlan_devices_arrays[x] can only switch from NULL to not-NULL.
    The vlan_group_prealloc_vid() is guarded with rtnl lock and is
    also safe.

    I've checked (I hope that) all the places, that use these arrays
    and found, that the register_vlan_dev is the only place, that can
    put a vlan device on an empty vlan_group.

    Rough calculations shows, that after the patch a setup with a
    single vlan dev (or up to 512 vlans with sequential vids) will
    occupy approximately 8 times less memory.

    The question I have is - does this patch makes sense, or a totally
    new structures are required to store the vlan_devs?

    Signed-off-by: Pavel Emelyanov
    Signed-off-by: Patrick McHardy

    Pavel Emelyanov