14 Nov, 2011

1 commit

  • This patch introduces new network device called team. It supposes to be
    very fast, simple, userspace-driven alternative to existing bonding
    driver.

    Userspace library called libteam with couple of demo apps is available
    here:
    https://github.com/jpirko/libteam
    Note it's still in its dipers atm.

    teamlibteam use generic netlink for communication. That and rtnl
    suppose to be the only way to configure team device, no sysfs etc.

    Python binding of libteam was recently introduced.
    Daemon providing arpmon/miimon active-backup functionality will be
    introduced shortly. All what's necessary is already implemented in
    kernel team driver.

    v7->v8:
    - check ndo_ndo_vlan_rx_[add/kill]_vid functions before calling
    them.
    - use dev_kfree_skb_any() instead of dev_kfree_skb()

    v6->v7:
    - transmit and receive functions are not checked in hot paths.
    That also resolves memory leak on transmit when no port is
    present

    v5->v6:
    - changed couple of _rcu calls to non _rcu ones in non-readers

    v4->v5:
    - team_change_mtu() uses team->lock while travesing though port
    list
    - mac address changes are moved completely to jurisdiction of
    userspace daemon. This way the daemon can do FOM1, FOM2 and
    possibly other weird things with mac addresses.
    Only round-robin mode sets up all ports to bond's address then
    enslaved.
    - Extended Kconfig text

    v3->v4:
    - remove redundant synchronize_rcu from __team_change_mode()
    - revert "set and clear of mode_ops happens per pointer, not per
    byte"
    - extend comment of function __team_change_mode()

    v2->v3:
    - team_change_mtu() uses rcu version of list traversal to unwind
    - set and clear of mode_ops happens per pointer, not per byte
    - port hashlist changed to be embedded into team structure
    - error branch in team_port_enter() does cleanup now
    - fixed rtln->rtnl

    v1->v2:
    - modes are made as modules. Makes team more modular and
    extendable.
    - several commenters' nitpicks found on v1 were fixed
    - several other bugs were fixed.
    - note I ignored Eric's comment about roundrobin port selector
    as Eric's way may be easily implemented as another mode (mode
    "random") in future.

    Signed-off-by: Jiri Pirko
    Signed-off-by: David S. Miller

    Jiri Pirko
     

18 Aug, 2011

1 commit

  • Use IFF_UNICAST_FTL to find out if driver handles unicast address
    filtering. In case it does not, promisc mode is entered.

    Patch also fixes following drivers:
    stmmac, niu: support uc filtering and yet it propagated
    ndo_set_multicast_list
    bna, benet, pxa168_eth, ks8851, ks8851_mll, ksz884x : has set
    ndo_set_rx_mode but do not support uc filtering

    Signed-off-by: Jiri Pirko
    Signed-off-by: David S. Miller

    Jiri Pirko
     

28 Jul, 2011

1 commit

  • Pktgen attempts to transmit shared skbs to net devices, which can't be used by
    some drivers as they keep state information in skbs. This patch adds a flag
    marking drivers as being able to handle shared skbs in their tx path. Drivers
    are defaulted to being unable to do so, but calling ether_setup enables this
    flag, as 90% of the drivers calling ether_setup touch real hardware and can
    handle shared skbs. A subsequent patch will audit drivers to ensure that the
    flag is set properly

    Signed-off-by: Neil Horman
    Reported-by: Jiri Pirko
    CC: Robert Olsson
    CC: Eric Dumazet
    CC: Alexey Dobriyan
    CC: David S. Miller
    Signed-off-by: David S. Miller

    Neil Horman
     

28 Feb, 2011

1 commit

  • V4: rebase to net-next-2.6

    This patch removes the flag IFF_IN_NETPOLL, we don't need it any more since
    we have netpoll_tx_running() now.

    Signed-off-by: WANG Cong
    Acked-by: Neil Horman
    Cc: Herbert Xu
    Signed-off-by: David S. Miller

    Amerigo Wang
     

30 Aug, 2010

1 commit


24 Aug, 2010

1 commit

  • IFF_OVS_DATAPATH is a place-holder for the Open vSwitch datapath
    which I am preparing to submit for merging.

    As all 16 bits of priv_flags are already assigned flags, also increase
    the size of priv_flags to 32 bits.

    Unfortunately, by my calculations this increases the size of
    struct net_device by 4 bytes on 32bit architectures and
    8 bytes on 64 bit architectures. I couldn't see an obvious
    way to avoid that.

    Cc: Jesse Gross
    Signed-off-by: Simon Horman
    Signed-off-by: David S. Miller

    Simon Horman
     

16 Jun, 2010

2 commits


06 May, 2010

1 commit

  • This whole patchset is for adding netpoll support to bridge and bonding
    devices. I already tested it for bridge, bonding, bridge over bonding,
    and bonding over bridge. It looks fine now.

    To make bridge and bonding support netpoll, we need to adjust
    some netpoll generic code. This patch does the following things:

    1) introduce two new priv_flags for struct net_device:
    IFF_IN_NETPOLL which identifies we are processing a netpoll;
    IFF_DISABLE_NETPOLL is used to disable netpoll support for a device
    at run-time;

    2) introduce one new method for netdev_ops:
    ->ndo_netpoll_cleanup() is used to clean up netpoll when a device is
    removed.

    3) introduce netpoll_poll_dev() which takes a struct net_device * parameter;
    export netpoll_send_skb() and netpoll_poll_dev() which will be used later;

    4) hide a pointer to struct netpoll in struct netpoll_info, ditto.

    5) introduce ->real_dev for struct netpoll.

    6) introduce a new status NETDEV_BONDING_DESLAE, which is used to disable
    netconsole before releasing a slave, to avoid deadlocks.

    Cc: David Miller
    Cc: Neil Horman
    Signed-off-by: WANG Cong
    Signed-off-by: David S. Miller

    WANG Cong
     

20 Nov, 2009

1 commit

  • A number of people have tried to add a wireless interface
    (in managed mode) to a bridge and then complained that it
    doesn't work. It cannot work, however, because in 802.11
    networks all packets need to be acknowledged and as such
    need to be sent to the right address. Promiscuous doesn't
    help here. The wireless address format used for these
    links has only space for three addresses, the
    * transmitter, which must be equal to the sender (origin)
    * receiver (on the wireless medium), which is the AP in
    the case of managed mode
    * the recipient (destination), which is on the APs local
    network segment

    In an IBSS, it is similar, but the receiver and recipient
    must match and the third address is used as the BSSID.

    To avoid such mistakes in the future, disallow adding a
    wireless interface to a bridge.

    Felix has recently added a four-address mode to the AP
    and client side that can be used (after negotiating that
    it is possible, which must happen out-of-band by setting
    up both sides) for bridging, so allow that case.

    Signed-off-by: Johannes Berg
    Acked-by: Stephen Hemminger
    Signed-off-by: John W. Linville

    Johannes Berg
     

05 Nov, 2009

1 commit

  • This cleanup patch puts struct/union/enum opening braces,
    in first line to ease grep games.

    struct something
    {

    becomes :

    struct something {

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

    Eric Dumazet
     

19 May, 2009

1 commit

  • One point of contention in high network loads is the dst_release() performed
    when a transmited skb is freed. This is because NIC tx completion calls
    dev_kree_skb() long after original call to dev_queue_xmit(skb).

    CPU cache is cold and the atomic op in dst_release() stalls. On SMP, this is
    quite visible if one CPU is 100% handling softirqs for a network device,
    since dst_clone() is done by other cpus, involving cache line ping pongs.

    It seems right place to release dst is in dev_hard_start_xmit(), for most
    devices but ones that are virtual, and some exceptions.

    David Miller suggested to define a new device flag, set in alloc_netdev_mq()
    (so that most devices set it at init time), and carefuly unset in devices
    which dont want a NULL skb->dst in their ndo_start_xmit().

    List of devices that must clear this flag is :

    - loopback device, because it calls netif_rx() and quoting Patrick :
    "ip_route_input() doesn't accept loopback addresses, so loopback packets
    already need to have a dst_entry attached."
    - appletalk/ipddp.c : needs skb->dst in its xmit function

    - And all devices that call again dev_queue_xmit() from their xmit function
    (as some classifiers need skb->dst) : bonding, vlan, macvlan, eql, ifb, hdlc_fr

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

    Eric Dumazet
     

22 Jan, 2009

1 commit


04 Nov, 2008

1 commit

  • The only user of the net_device->last_rx field is bonding.
    This patch adds a conditional update of last_rx to the bonding special
    logic in skb_bond_should_drop, causing last_rx to only be updated when
    the ARP monitor is running.

    This frees network device drivers from the necessity of
    updating last_rx, which can have cache line thrash issues.

    Signed-off-by: Jay Vosburgh
    Signed-off-by: David S. Miller

    Jay Vosburgh
     

23 Sep, 2008

1 commit

  • This patch add support for keeping an additional character alias
    associated with an network interface. This is useful for maintaining
    the SNMP ifAlias value which is a user defined value. Routers use this
    to hold information like which circuit or line it is connected to. It
    is just an arbitrary text label on the network device.

    There are two exposed interfaces with this patch, the value can be
    read/written either via netlink or sysfs.

    This could be maintained just by the snmp daemon, but it is more
    generally useful for other management tools, and the kernel is good
    place to act as an agreed upon interface to store it.

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

    Stephen Hemminger
     

29 Jan, 2008

2 commits

  • This patch includes support for the Intra-Site Automatic Tunnel
    Addressing Protocol (ISATAP) per RFC4214. It uses the SIT
    module, and is configured using extensions to the "iproute2"
    utility. The diffs are specific to the Linux 2.6.24-rc2 kernel
    distribution.

    This version includes the diff for ./include/linux/if.h which was
    missing in the v2.4 submission and is needed to make the
    patch compile. The patch has been installed, compiled and
    tested in a clean 2.6.24-rc2 kernel build area.

    Signed-off-by: Fred L. Templin
    Signed-off-by: YOSHIFUJI Hideaki
    Signed-off-by: Herbert Xu
    Signed-off-by: David S. Miller

    Fred L. Templin
     
  • This patch adds a protocol/address family number, ARP hardware type,
    ethernet packet type, and a line discipline number for the SocketCAN
    implementation.

    Signed-off-by: Oliver Hartkopp
    Signed-off-by: Urs Thuermann
    Signed-off-by: David S. Miller

    Oliver Hartkopp
     

29 Sep, 2006

1 commit


26 Sep, 2006

2 commits

  • Add logic to check ARP request / reply packets used for ARP
    monitor link integrity checking.

    The current method simply examines the slave device to see if it
    has sent and received traffic; this can be fooled by extraneous traffic.
    For example, if multiple hosts running bonding are behind a common
    switch, the probe traffic from the multiple instances of bonding will
    update the tx/rx times on each other's slave devices.

    Signed-off-by: Jay Vosburgh
    Signed-off-by: Jeff Garzik

    Jay Vosburgh
     
  • Add priv_flag to specifically identify bonding-involved devices. Needed
    because IFF_MASTER is an unreliable identifier (vlan interfaces above bonding
    will inherit IFF_MASTER). Misidentification of devices would cause
    notifier events for other devices to be erroneously processed by bonding,
    causing various havoc.

    Bug discovered by Martin Papik ; this patch is
    modified from his original.

    Signed-off-by: Martin Papik
    Signed-off-by: Jay Vosburgh
    Signed-off-by: Jeff Garzik

    Jay Vosburgh
     

23 Sep, 2006

1 commit


21 Mar, 2006

1 commit

  • this patch adds a dormant flag to network devices, RFC2863 operstate derived
    from these flags and possibility for userspace interaction. It allows drivers
    to signal that a device is unusable for user traffic without disabling
    queueing (and therefore the possibility for protocol establishment traffic to
    flow) and a userspace supplicant (WPA, 802.1X) to mark a device unusable
    without changes to the driver.

    It is the result of our long discussion. However I must admit that it
    represents what Jamal and I agreed on with compromises towards Krzysztof, but
    Thomas and Krzysztof still disagree with some parts. Anyway I think it should
    be applied.

    Signed-off-by: Stefan Rompf
    Signed-off-by: David S. Miller

    Stefan Rompf
     

04 Mar, 2006

1 commit

  • Originally submitted by Kenzo Iwami; his original description is:

    The current bonding driver receives duplicate packets when broadcast/
    multicast packets are sent by other devices or packets are flooded by the
    switch. In this patch, new flags are added in priv_flags of net_device
    structure to let the bonding driver discard duplicate packets in
    dev.c:skb_bond().

    Modified by Jay Vosburgh to change a define name, update some
    comments, rearrange the new skb_bond() for clarity, clear all bonding
    priv_flags on slave release, and update the driver version.

    Signed-off-by: Kenzo Iwami
    Signed-off-by: Jay Vosburgh
    Signed-off-by: Jeff Garzik

    Jay Vosburgh
     

13 May, 2005

1 commit


06 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