26 Dec, 2008

1 commit

  • commit 656299f706e52e0409733d704c2761f1b12d6954
    (vlan: convert to net_device_ops) added a net_device_ops
    with a NULL ndo_start_xmit field.

    This gives a crash in dev_hard_start_xmit()

    Fix it using two net_device_ops structures, one for hwaccel vlan,
    one for non hwaccel vlan.

    Signed-off-by: Eric Dumazet
    Signed-off-by: David S. Miller

    Eric Dumazet
     

20 Nov, 2008

1 commit


12 Nov, 2008

1 commit


11 Nov, 2008

1 commit


07 Nov, 2008

1 commit


05 Nov, 2008

1 commit

  • The changes to deliver hardware accelerated VLAN packets to packet
    sockets (commit bc1d0411) caused a warning for non-NAPI drivers.
    The __vlan_hwaccel_rx() function is called directly from the drivers
    RX function, for non-NAPI drivers that means its still in RX IRQ
    context:

    [ 27.779463] ------------[ cut here ]------------
    [ 27.779509] WARNING: at kernel/softirq.c:136 local_bh_enable+0x37/0x81()
    ...
    [ 27.782520] [] netif_nit_deliver+0x5b/0x75
    [ 27.782590] [] __vlan_hwaccel_rx+0x79/0x162
    [ 27.782664] [] atl1_intr+0x9a9/0xa7c [atl1]
    [ 27.782738] [] handle_IRQ_event+0x23/0x51
    [ 27.782808] [] handle_edge_irq+0xc2/0x102
    [ 27.782878] [] do_IRQ+0x4d/0x64

    Split hardware accelerated VLAN reception into two parts to fix this:

    - __vlan_hwaccel_rx just stores the VLAN TCI and performs the VLAN
    device lookup, then calls netif_receive_skb()/netif_rx()

    - vlan_hwaccel_do_receive(), which is invoked by netif_receive_skb()
    in softirq context, performs the real reception and delivery to
    packet sockets.

    Reported-and-tested-by: Ramon Casellas
    Signed-off-by: Patrick McHardy
    Signed-off-by: David S. Miller

    Patrick McHardy
     

04 Nov, 2008

1 commit


29 Oct, 2008

1 commit

  • This enables more ethtool information. The speed and settings of the
    underlying device are propagated up. This makes services like SNMP that
    use ethtool to get speed setting, work when managing a vlan, without adding
    silly heurtistics into SNMP daemon.

    For the driver info, just use existing driver strings.

    Signed-off-by: Stephen Hemminger
    Signed-off-by: David S. Miller

    Stephen Hemminger
     

21 Sep, 2008

1 commit


12 Sep, 2008

1 commit

  • The vlan devices are not reading the gso max size of the parent device. As
    a result devices that do not support 64K max gso size are currently
    failing.

    This issue is seen on 2.6.26 kernels as well and the same patch should be
    able to be applied without any issues.

    Signed-off-by: Alexander Duyck
    Signed-off-by: Jeff Kirsher
    Signed-off-by: David S. Miller

    Alexander Duyck
     

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

4 commits