07 Oct, 2010

8 commits


06 Oct, 2010

13 commits

  • As suggested by Stephen Hemminger:
    1) Made functions and data structures static wherever possible.
    2) Removed unused code.

    Signed-off-by: Debashis Dutt
    Signed-off-by: Rasesh Mody
    Signed-off-by: David S. Miller

    Rasesh Mody
     
  • This fix handles the case when IRQ handler is called (for shared IRQs)
    even before the driver is ready to handle interrupts.

    Signed-off-by: Debashis Dutt
    Signed-off-by: Rasesh Mody
    Signed-off-by: David S. Miller

    Rasesh Mody
     
  • fib_lookup() converted to be called in RCU protected context, no
    reference taken and released on a contended cache line (fib_clntref)

    fib_table_lookup() and fib_semantic_match() get an additional parameter.

    struct fib_info gets an rcu_head field, and is freed after an rcu grace
    period.

    Stress test :
    (Sending 160.000.000 UDP frames on same neighbour,
    IP route cache disabled, dual E5540 @2.53GHz,
    32bit kernel, FIB_HASH) (about same results for FIB_TRIE)

    Before patch :

    real 1m31.199s
    user 0m13.761s
    sys 23m24.780s

    After patch:

    real 1m5.375s
    user 0m14.997s
    sys 15m50.115s

    Before patch Profile :

    13044.00 15.4% __ip_route_output_key vmlinux
    8438.00 10.0% dst_destroy vmlinux
    5983.00 7.1% fib_semantic_match vmlinux
    5410.00 6.4% fib_rules_lookup vmlinux
    4803.00 5.7% neigh_lookup vmlinux
    4420.00 5.2% _raw_spin_lock vmlinux
    3883.00 4.6% rt_set_nexthop vmlinux
    3261.00 3.9% _raw_read_lock vmlinux
    2794.00 3.3% fib_table_lookup vmlinux
    2374.00 2.8% neigh_resolve_output vmlinux
    2153.00 2.5% dst_alloc vmlinux
    1502.00 1.8% _raw_read_lock_bh vmlinux
    1484.00 1.8% kmem_cache_alloc vmlinux
    1407.00 1.7% eth_header vmlinux
    1406.00 1.7% ipv4_dst_destroy vmlinux
    1298.00 1.5% __copy_from_user_ll vmlinux
    1174.00 1.4% dev_queue_xmit vmlinux
    1000.00 1.2% ip_output vmlinux

    After patch Profile :

    13712.00 15.8% dst_destroy vmlinux
    8548.00 9.9% __ip_route_output_key vmlinux
    7017.00 8.1% neigh_lookup vmlinux
    4554.00 5.3% fib_semantic_match vmlinux
    4067.00 4.7% _raw_read_lock vmlinux
    3491.00 4.0% dst_alloc vmlinux
    3186.00 3.7% neigh_resolve_output vmlinux
    3103.00 3.6% fib_table_lookup vmlinux
    2098.00 2.4% _raw_read_lock_bh vmlinux
    2081.00 2.4% kmem_cache_alloc vmlinux
    2013.00 2.3% _raw_spin_lock vmlinux
    1763.00 2.0% __copy_from_user_ll vmlinux
    1763.00 2.0% ip_output vmlinux
    1761.00 2.0% ipv4_dst_destroy vmlinux
    1631.00 1.9% eth_header vmlinux
    1440.00 1.7% _raw_read_unlock_bh vmlinux

    Reference results, if IP route cache is enabled :

    real 0m29.718s
    user 0m10.845s
    sys 7m37.341s

    25213.00 29.5% __ip_route_output_key vmlinux
    9011.00 10.5% dst_release vmlinux
    4817.00 5.6% ip_push_pending_frames vmlinux
    4232.00 5.0% ip_finish_output vmlinux
    3940.00 4.6% udp_sendmsg vmlinux
    3730.00 4.4% __copy_from_user_ll vmlinux
    3716.00 4.4% ip_route_output_flow vmlinux
    2451.00 2.9% __xfrm_lookup vmlinux
    2221.00 2.6% ip_append_data vmlinux
    1718.00 2.0% _raw_spin_lock_bh vmlinux
    1655.00 1.9% __alloc_skb vmlinux
    1572.00 1.8% sock_wfree vmlinux
    1345.00 1.6% kfree vmlinux

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

    Eric Dumazet
     
  • Allow sysadmins to configure the number of multicast
    membership report sent on a link failure event.

    Signed-off-by: Flavio Leitner
    Signed-off-by: David S. Miller

    Flavio Leitner
     
  • The IGMP specs states that if the system receives a
    membership report, it shouldn't send another for the
    next minute. However, if a link failure happens right
    after that, the backup slave and the switch connected
    to this slave will not know about the multicast and
    the traffic will hang for about a minute.

    This patch fixes it to rejoin multicast groups immediately
    after a failover restoring the multicast traffic.

    Signed-off-by: Flavio Leitner
    Signed-off-by: David S. Miller

    Flavio Leitner
     
  • During a failover, the IGMP membership is sent to update
    the switch restoring the traffic, but it misses groups added
    to VLAN devices running on top of bonding devices.

    This patch changes it to iterate over all VLAN devices
    on top of it sending IGMP memberships too.

    Signed-off-by: Flavio Leitner
    Signed-off-by: David S. Miller

    Flavio Leitner
     
  • Removing the msleep() call in check_sqs() function, and replacing by a wait queue.

    Signed-off-by: Breno Leitao
    Signed-off-by: David S. Miller

    Breno Leitao
     
  • This patch just remove a msleep loop and change to wait queue,
    making the code cleaner.

    Signed-off-by: Breno Leitao
    Acked-by: David Howells
    Signed-off-by: David S. Miller

    Breno Leitao
     
  • Following patch fixes warnings reported by `make namespacecheck`

    Reported by Stephen Hemminger

    CC: Stephen Hemminger
    Signed-off-by: Emil Tantilov
    Acked-by: Greg Rose
    Tested-by: Jeff Pieper
    Signed-off-by: Jeff Kirsher
    Signed-off-by: David S. Miller

    Emil Tantilov
     
  • Userspace applications can already request to receive timestamps with:
    setsockopt(sockfd, SOL_SOCKET, SO_TIMESTAMP, ...)

    Although setsockopt() returns zero (success), timestamps are not added to the
    ancillary data. This patch fixes that on SOCK_DGRAM and SOCK_SEQPACKET Unix
    sockets.

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

    Alban Crequy
     
  • David

    This is the first step for RCU conversion of neigh code.

    Next patches will convert hash_buckets[] and "struct neighbour" to RCU
    protected objects.

    Thanks

    [PATCH net-next] net neigh: RCU conversion of neigh hash table

    Instead of storing hash_buckets, hash_mask and hash_rnd in "struct
    neigh_table", a new structure is defined :

    struct neigh_hash_table {
    struct neighbour **hash_buckets;
    unsigned int hash_mask;
    __u32 hash_rnd;
    struct rcu_head rcu;
    };

    And "struct neigh_table" has an RCU protected pointer to such a
    neigh_hash_table.

    This means the signature of (*hash)() function changed: We need to add a
    third parameter with the actual hash_rnd value, since this is not
    anymore a neigh_table field.

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

    Eric Dumazet
     
  • neigh_delete() and neigh_add() dont need to touch device refcount,
    we hold RTNL when calling them, so device cannot disappear under us.

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

    Eric Dumazet
     
  • In various situations, a device provides a packet to our stack and we
    drop it before it enters protocol stack :
    - softnet backlog full (accounted in /proc/net/softnet_stat)
    - bad vlan tag (not accounted)
    - unknown/unregistered protocol (not accounted)

    We can handle a per-device counter of such dropped frames at core level,
    and automatically adds it to the device provided stats (rx_dropped), so
    that standard tools can be used (ifconfig, ip link, cat /proc/net/dev)

    This is a generalization of commit 8990f468a (net: rx_dropped
    accounting), thus reverting it.

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

    Eric Dumazet
     

05 Oct, 2010

19 commits

  • Qemu supports up to UIO_MAXIOV s/g so we have to match that because guest
    drivers may rely on this.

    Allocate indirect and log arrays dynamically to avoid using too much contigious
    memory and make the length of hdr array to match the header length since each
    iovec entry has a least one byte.

    Test with copying large files w/ and w/o migration in both linux and windows
    guests.

    Signed-off-by: Jason Wang
    Signed-off-by: Michael S. Tsirkin

    Jason Wang
     
  • Do this instead of subverting fields in skb proper.

    The macros that could very easily match variable or function
    names were also just asking for trouble.

    Signed-off-by: David S. Miller

    David S. Miller
     
  • Another exported symbol only used in one file

    Signed-off-by: Stephen Hemminger
    Acked-by: Eric Dumazet
    Signed-off-by: David S. Miller

    stephen hemminger
     
  • fib_rules_cleanup_ups is only defined and used in one place.

    Signed-off-by: Stephen Hemminger
    Acked-by: Eric Dumazet
    Signed-off-by: David S. Miller

    stephen hemminger
     
  • Code style cleanups before upcoming functional changes.
    C99 initializer for fib_props array.

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

    Eric Dumazet
     
  • Make wimax variables and functions local if possible.
    Compile tested only.

    This also removes a couple of unused EXPORT_SYMBOL.
    If this breaks some out of tree code, please fix that
    by putting the code in the kernel tree.

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

    stephen hemminger
     
  • This driver has several pieces of dead code (found by running
    make namespacecheck). This patch removes them.

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

    stephen hemminger
     
  • Remove duplicated include.

    Signed-off-by: Nicolas Kaiser
    Acked-by: Sjur Braendeland
    Signed-off-by: David S. Miller

    Nicolas Kaiser
     
  • The kernel doesn't have a symbol called BCM63XX. There is a symbol
    BCM63XX_ENET (introduced in 9b1fc55a0500, 6 weeks after 09bb9aa0ed that
    introduced BCM63XX_PHY), but the driver compiles without that, too.

    Cc: Maxime Bizon
    Cc: Florian Fainelli
    Cc: David S. Miller
    Cc: Ralf Baechle
    Signed-off-by: Uwe Kleine-König
    Signed-off-by: David S. Miller

    Uwe Kleine-König
     
  • MODULE_DEVICE_TABLE only expands to something if it's compiled
    for a module. So when building-in support for the phys, the
    mdio_device_id tables are unused. Marking them with __maybe_unused
    fixes the following warnings:

    drivers/net/phy/bcm63xx.c:134: warning: 'bcm63xx_tbl' defined but not used
    drivers/net/phy/broadcom.c:933: warning: 'broadcom_tbl' defined but not used
    drivers/net/phy/cicada.c:162: warning: 'cicada_tbl' defined but not used
    drivers/net/phy/davicom.c:222: warning: 'davicom_tbl' defined but not used
    drivers/net/phy/et1011c.c:114: warning: 'et1011c_tbl' defined but not used
    drivers/net/phy/icplus.c:137: warning: 'icplus_tbl' defined but not used
    drivers/net/phy/lxt.c:226: warning: 'lxt_tbl' defined but not used
    drivers/net/phy/marvell.c:724: warning: 'marvell_tbl' defined but not used
    drivers/net/phy/micrel.c:234: warning: 'micrel_tbl' defined but not used
    drivers/net/phy/national.c:154: warning: 'ns_tbl' defined but not used
    drivers/net/phy/qsemi.c:141: warning: 'qs6612_tbl' defined but not used
    drivers/net/phy/realtek.c:82: warning: 'realtek_tbl' defined but not used
    drivers/net/phy/smsc.c:257: warning: 'smsc_tbl' defined but not used
    drivers/net/phy/ste10Xp.c:135: warning: 'ste10Xp_tbl' defined but not used
    drivers/net/phy/vitesse.c:195: warning: 'vitesse_tbl' defined but not used

    Signed-off-by: Uwe Kleine-König
    Signed-off-by: David S. Miller

    Uwe Kleine-König
     
  • rtnl_dereference() is used in contexts where RTNL is held, to fetch an
    RCU protected pointer.

    Updates to this pointer are prevented by RTNL, so we dont need
    smp_read_barrier_depends() and the ACCESS_ONCE() provided in
    rcu_dereference_check().

    rtnl_dereference() is mainly a macro to document the locking invariant.

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

    David S. Miller
     
  • Signed-off-by: David S. Miller
    Acked-by: Simon Horman

    David S. Miller
     
  • ingress being not used very much, and net_device->ingress_queue being
    quite a big object (128 or 256 bytes), use a dynamic allocation if
    needed (tc qdisc add dev eth0 ingress ...)

    dev_ingress_queue(dev) helper should be used only with RTNL taken.

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

    Eric Dumazet
     
  • Setting mtu < 68 is not supported.

    Signed-off-by: Sritej Velaga
    Signed-off-by: Amit Kumar Salecha
    Signed-off-by: David S. Miller

    Sritej Velaga
     
  • Port mode setting is not required for Qlogic CNA adapters.

    Signed-off-by: Sritej Velaga
    Signed-off-by: Amit Kumar Salecha
    Signed-off-by: David S. Miller

    Sritej Velaga
     
  • Signed-off-by: Sucheta Chakraborty
    Signed-off-by: Amit Kumar Salecha
    Signed-off-by: David S. Miller

    Sucheta Chakraborty
     
  • o desc->vlan_tci is in __le16 format. Doing htons and
    cpu_to_le64 again on vlan_tci, result in invalid value on ppc.

    Signed-off-by: Sucheta Chakraborty
    Signed-off-by: Amit Kumar Salecha
    Signed-off-by: David S. Miller

    Sucheta Chakraborty
     
  • ipaddress in ifa->ifa_address field are in big endian format.
    Also device requires ip address in big endian only.

    Signed-off-by: Sucheta Chakraborty
    Signed-off-by: Amit Kumar Salecha
    Signed-off-by: David S. Miller

    Sucheta Chakraborty
     
  • regs_buff[i] and diag_registers[j] array should use different index
    variable.

    Signed-off-by: Amit Kumar Salecha
    Signed-off-by: David S. Miller

    Amit Kumar Salecha