1. 05 2月, 2014 1 次提交
  2. 15 1月, 2014 1 次提交
  3. 10 1月, 2014 1 次提交
  4. 07 1月, 2014 14 次提交
  5. 05 1月, 2014 1 次提交
  6. 18 12月, 2013 2 次提交
    • T
      net: Add utility functions to clear rxhash · 7539fadc
      Tom Herbert 提交于
      In several places 'skb->rxhash = 0' is being done to clear the
      rxhash value in an skb.  This does not clear l4_rxhash which could
      still be set so that the rxhash wouldn't be recalculated on subsequent
      call to skb_get_rxhash.  This patch adds an explict function to clear
      all the rxhash related information in the skb properly.
      
      skb_clear_hash_if_not_l4 clears the rxhash only if it is not marked as
      l4_rxhash.
      
      Fixed up places where 'skb->rxhash = 0' was being called.
      Signed-off-by: NTom Herbert <therbert@google.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      7539fadc
    • F
      net: ovs: use CRC32 accelerated flow hash if available · 500f8087
      Francesco Fusco 提交于
      Currently OVS uses jhash2() for calculating flow hashes in its
      internal flow_hash() function. The performance of the flow_hash()
      function is critical, as the input data can be hundreds of bytes
      long.
      
      OVS is largely deployed in x86_64 based datacenters.  Therefore,
      we argue that the performance critical fast path of OVS should
      exploit underlying CPU features in order to reduce the per packet
      processing costs. We replace jhash2 with the hash implementation
      provided by the kernel hash lib, which exploits the crc32l
      instruction to achieve high performance
      
      Our patch greatly reduces the hash footprint from ~200 cycles of
      jhash2() to around ~90 cycles in case of ovs_flow_hash_crc()
      (measured with rdtsc over maximum length flow keys on an i7 Intel
      CPU).
      
      Additionally, we wrote a microbenchmark to stress the flow table
      performance. The benchmark inserts random flows into the flow
      hash and then performs lookups. Our hash deployed on a CRC32
      capable CPU reduces the lookup for 1000 flows, 100 masks from
      ~10,100us to ~6,700us, for example.
      
      Thus, simply use the newly introduced arch_fast_hash2() as a
      drop-in replacement.
      Signed-off-by: NFrancesco Fusco <ffusco@redhat.com>
      Signed-off-by: NDaniel Borkmann <dborkman@redhat.com>
      Signed-off-by: NThomas Graf <tgraf@redhat.com>
      Acked-by: NJesse Gross <jesse@nicira.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      500f8087
  7. 20 11月, 2013 4 次提交
  8. 15 11月, 2013 1 次提交
  9. 06 11月, 2013 1 次提交
    • J
      net: Explicitly initialize u64_stats_sync structures for lockdep · 827da44c
      John Stultz 提交于
      In order to enable lockdep on seqcount/seqlock structures, we
      must explicitly initialize any locks.
      
      The u64_stats_sync structure, uses a seqcount, and thus we need
      to introduce a u64_stats_init() function and use it to initialize
      the structure.
      
      This unfortunately adds a lot of fairly trivial initialization code
      to a number of drivers. But the benefit of ensuring correctness makes
      this worth while.
      
      Because these changes are required for lockdep to be enabled, and the
      changes are quite trivial, I've not yet split this patch out into 30-some
      separate patches, as I figured it would be better to get the various
      maintainers thoughts on how to best merge this change along with
      the seqcount lockdep enablement.
      
      Feedback would be appreciated!
      Signed-off-by: NJohn Stultz <john.stultz@linaro.org>
      Acked-by: NJulian Anastasov <ja@ssi.bg>
      Signed-off-by: NPeter Zijlstra <peterz@infradead.org>
      Cc: Alexey Kuznetsov <kuznet@ms2.inr.ac.ru>
      Cc: "David S. Miller" <davem@davemloft.net>
      Cc: Eric Dumazet <eric.dumazet@gmail.com>
      Cc: Hideaki YOSHIFUJI <yoshfuji@linux-ipv6.org>
      Cc: James Morris <jmorris@namei.org>
      Cc: Jesse Gross <jesse@nicira.com>
      Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
      Cc: "Michael S. Tsirkin" <mst@redhat.com>
      Cc: Mirko Lindner <mlindner@marvell.com>
      Cc: Patrick McHardy <kaber@trash.net>
      Cc: Roger Luethi <rl@hellgate.ch>
      Cc: Rusty Russell <rusty@rustcorp.com.au>
      Cc: Simon Horman <horms@verge.net.au>
      Cc: Stephen Hemminger <stephen@networkplumber.org>
      Cc: Steven Rostedt <rostedt@goodmis.org>
      Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
      Cc: Wensong Zhang <wensong@linux-vs.org>
      Cc: netdev@vger.kernel.org
      Link: http://lkml.kernel.org/r/1381186321-4906-2-git-send-email-john.stultz@linaro.orgSigned-off-by: NIngo Molnar <mingo@kernel.org>
      827da44c
  10. 02 11月, 2013 4 次提交
  11. 23 10月, 2013 1 次提交
  12. 17 10月, 2013 1 次提交
    • A
      openvswitch: fix vport-netdev unregister · b07c2651
      Alexei Starovoitov 提交于
      The combination of two commits:
      commit 8e4e1713
      ("openvswitch: Simplify datapath locking.")
      commit 2537b4dd
      ("openvswitch:: link upper device for port devices")
      
      introduced a bug where upper_dev wasn't unlinked upon
      netdev_unregister notification
      
      The following steps:
      
        modprobe openvswitch
        ovs-dpctl add-dp test
        ip tuntap add dev tap1 mode tap
        ovs-dpctl add-if test tap1
        ip tuntap del dev tap1 mode tap
      
      are causing multiple warnings:
      
      [   62.747557] gre: GRE over IPv4 demultiplexor driver
      [   62.749579] openvswitch: Open vSwitch switching datapath
      [   62.755087] device test entered promiscuous mode
      [   62.765911] device tap1 entered promiscuous mode
      [   62.766033] IPv6: ADDRCONF(NETDEV_UP): tap1: link is not ready
      [   62.769017] ------------[ cut here ]------------
      [   62.769022] WARNING: CPU: 1 PID: 3267 at net/core/dev.c:5501 rollback_registered_many+0x20f/0x240()
      [   62.769023] Modules linked in: openvswitch gre vxlan ip_tunnel libcrc32c ip6table_filter ip6_tables ebtable_nat ebtables nf_conntrack_ipv4 nf_defrag_ipv4 xt_state nf_conntrack xt_CHECKSUM iptable_mangle ipt_REJECT xt_tcpudp iptable_filter ip_tables x_tables bridge stp llc vhost_net macvtap macvlan vhost kvm_intel kvm dm_crypt iscsi_tcp libiscsi_tcp libiscsi scsi_transport_iscsi hid_generic mxm_wmi eeepc_wmi asus_wmi sparse_keymap dm_multipath psmouse serio_raw usbhid hid parport_pc ppdev firewire_ohci lpc_ich firewire_core e1000e crc_itu_t binfmt_misc igb dca ptp pps_core mac_hid wmi lp parport i2o_config i2o_block video
      [   62.769051] CPU: 1 PID: 3267 Comm: ip Not tainted 3.12.0-rc3+ #60
      [   62.769052] Hardware name: System manufacturer System Product Name/P8Z77 WS, BIOS 3007 07/26/2012
      [   62.769053]  0000000000000009 ffff8807f25cbd28 ffffffff8175e575 0000000000000006
      [   62.769055]  0000000000000000 ffff8807f25cbd68 ffffffff8105314c ffff8807f25cbd58
      [   62.769057]  ffff8807f2634000 ffff8807f25cbdc8 ffff8807f25cbd88 ffff8807f25cbdc8
      [   62.769059] Call Trace:
      [   62.769062]  [<ffffffff8175e575>] dump_stack+0x55/0x76
      [   62.769065]  [<ffffffff8105314c>] warn_slowpath_common+0x8c/0xc0
      [   62.769067]  [<ffffffff8105319a>] warn_slowpath_null+0x1a/0x20
      [   62.769069]  [<ffffffff8162a04f>] rollback_registered_many+0x20f/0x240
      [   62.769071]  [<ffffffff8162a101>] rollback_registered+0x31/0x40
      [   62.769073]  [<ffffffff8162a488>] unregister_netdevice_queue+0x58/0x90
      [   62.769075]  [<ffffffff8154f900>] __tun_detach+0x140/0x340
      [   62.769077]  [<ffffffff8154fb36>] tun_chr_close+0x36/0x60
      [   62.769080]  [<ffffffff811bddaf>] __fput+0xff/0x260
      [   62.769082]  [<ffffffff811bdf5e>] ____fput+0xe/0x10
      [   62.769084]  [<ffffffff8107b515>] task_work_run+0xb5/0xe0
      [   62.769087]  [<ffffffff810029b9>] do_notify_resume+0x59/0x80
      [   62.769089]  [<ffffffff813a41fe>] ? trace_hardirqs_on_thunk+0x3a/0x3f
      [   62.769091]  [<ffffffff81770f5a>] int_signal+0x12/0x17
      [   62.769093] ---[ end trace 838756c62e156ffb ]---
      [   62.769481] ------------[ cut here ]------------
      [   62.769485] WARNING: CPU: 1 PID: 92 at fs/sysfs/inode.c:325 sysfs_hash_and_remove+0xa9/0xb0()
      [   62.769486] sysfs: can not remove 'master', no directory
      [   62.769486] Modules linked in: openvswitch gre vxlan ip_tunnel libcrc32c ip6table_filter ip6_tables ebtable_nat ebtables nf_conntrack_ipv4 nf_defrag_ipv4 xt_state nf_conntrack xt_CHECKSUM iptable_mangle ipt_REJECT xt_tcpudp iptable_filter ip_tables x_tables bridge stp llc vhost_net macvtap macvlan vhost kvm_intel kvm dm_crypt iscsi_tcp libiscsi_tcp libiscsi scsi_transport_iscsi hid_generic mxm_wmi eeepc_wmi asus_wmi sparse_keymap dm_multipath psmouse serio_raw usbhid hid parport_pc ppdev firewire_ohci lpc_ich firewire_core e1000e crc_itu_t binfmt_misc igb dca ptp pps_core mac_hid wmi lp parport i2o_config i2o_block video
      [   62.769514] CPU: 1 PID: 92 Comm: kworker/1:2 Tainted: G        W    3.12.0-rc3+ #60
      [   62.769515] Hardware name: System manufacturer System Product Name/P8Z77 WS, BIOS 3007 07/26/2012
      [   62.769518] Workqueue: events ovs_dp_notify_wq [openvswitch]
      [   62.769519]  0000000000000009 ffff880807ad3ac8 ffffffff8175e575 0000000000000006
      [   62.769521]  ffff880807ad3b18 ffff880807ad3b08 ffffffff8105314c ffff880807ad3b28
      [   62.769523]  0000000000000000 ffffffff81a87a1f ffff8807f2634000 ffff880037038500
      [   62.769525] Call Trace:
      [   62.769528]  [<ffffffff8175e575>] dump_stack+0x55/0x76
      [   62.769529]  [<ffffffff8105314c>] warn_slowpath_common+0x8c/0xc0
      [   62.769531]  [<ffffffff81053236>] warn_slowpath_fmt+0x46/0x50
      [   62.769533]  [<ffffffff8123e7e9>] sysfs_hash_and_remove+0xa9/0xb0
      [   62.769535]  [<ffffffff81240e96>] sysfs_remove_link+0x26/0x30
      [   62.769538]  [<ffffffff81631ef7>] __netdev_adjacent_dev_remove+0xf7/0x150
      [   62.769540]  [<ffffffff81632037>] __netdev_adjacent_dev_unlink_lists+0x27/0x50
      [   62.769542]  [<ffffffff8163213a>] __netdev_adjacent_dev_unlink_neighbour+0x3a/0x50
      [   62.769544]  [<ffffffff8163218d>] netdev_upper_dev_unlink+0x3d/0x140
      [   62.769548]  [<ffffffffa033c2db>] netdev_destroy+0x4b/0x80 [openvswitch]
      [   62.769550]  [<ffffffffa033b696>] ovs_vport_del+0x46/0x60 [openvswitch]
      [   62.769552]  [<ffffffffa0335314>] ovs_dp_detach_port+0x44/0x60 [openvswitch]
      [   62.769555]  [<ffffffffa0336574>] ovs_dp_notify_wq+0xb4/0x150 [openvswitch]
      [   62.769557]  [<ffffffff81075c28>] process_one_work+0x1d8/0x6a0
      [   62.769559]  [<ffffffff81075bc8>] ? process_one_work+0x178/0x6a0
      [   62.769562]  [<ffffffff8107659b>] worker_thread+0x11b/0x370
      [   62.769564]  [<ffffffff81076480>] ? rescuer_thread+0x350/0x350
      [   62.769566]  [<ffffffff8107f44a>] kthread+0xea/0xf0
      [   62.769568]  [<ffffffff8107f360>] ? flush_kthread_worker+0x150/0x150
      [   62.769570]  [<ffffffff81770bac>] ret_from_fork+0x7c/0xb0
      [   62.769572]  [<ffffffff8107f360>] ? flush_kthread_worker+0x150/0x150
      [   62.769573] ---[ end trace 838756c62e156ffc ]---
      [   62.769574] ------------[ cut here ]------------
      [   62.769576] WARNING: CPU: 1 PID: 92 at fs/sysfs/inode.c:325 sysfs_hash_and_remove+0xa9/0xb0()
      [   62.769577] sysfs: can not remove 'upper_test', no directory
      [   62.769577] Modules linked in: openvswitch gre vxlan ip_tunnel libcrc32c ip6table_filter ip6_tables ebtable_nat ebtables nf_conntrack_ipv4 nf_defrag_ipv4 xt_state nf_conntrack xt_CHECKSUM iptable_mangle ipt_REJECT xt_tcpudp iptable_filter ip_tables x_tables bridge stp llc vhost_net macvtap macvlan vhost kvm_intel kvm dm_crypt iscsi_tcp libiscsi_tcp libiscsi scsi_transport_iscsi hid_generic mxm_wmi eeepc_wmi asus_wmi sparse_keymap dm_multipath psmouse serio_raw usbhid hid parport_pc ppdev firewire_ohci lpc_ich firewire_core e1000e crc_itu_t binfmt_misc igb dca ptp pps_core mac_hid wmi lp parport i2o_config i2o_block video
      [   62.769603] CPU: 1 PID: 92 Comm: kworker/1:2 Tainted: G        W    3.12.0-rc3+ #60
      [   62.769604] Hardware name: System manufacturer System Product Name/P8Z77 WS, BIOS 3007 07/26/2012
      [   62.769606] Workqueue: events ovs_dp_notify_wq [openvswitch]
      [   62.769607]  0000000000000009 ffff880807ad3ac8 ffffffff8175e575 0000000000000006
      [   62.769609]  ffff880807ad3b18 ffff880807ad3b08 ffffffff8105314c ffff880807ad3b58
      [   62.769611]  0000000000000000 ffff880807ad3bd9 ffff8807f2634000 ffff880037038500
      [   62.769613] Call Trace:
      [   62.769615]  [<ffffffff8175e575>] dump_stack+0x55/0x76
      [   62.769617]  [<ffffffff8105314c>] warn_slowpath_common+0x8c/0xc0
      [   62.769619]  [<ffffffff81053236>] warn_slowpath_fmt+0x46/0x50
      [   62.769621]  [<ffffffff8123e7e9>] sysfs_hash_and_remove+0xa9/0xb0
      [   62.769622]  [<ffffffff81240e96>] sysfs_remove_link+0x26/0x30
      [   62.769624]  [<ffffffff81631f22>] __netdev_adjacent_dev_remove+0x122/0x150
      [   62.769627]  [<ffffffff81632037>] __netdev_adjacent_dev_unlink_lists+0x27/0x50
      [   62.769629]  [<ffffffff8163213a>] __netdev_adjacent_dev_unlink_neighbour+0x3a/0x50
      [   62.769631]  [<ffffffff8163218d>] netdev_upper_dev_unlink+0x3d/0x140
      [   62.769633]  [<ffffffffa033c2db>] netdev_destroy+0x4b/0x80 [openvswitch]
      [   62.769636]  [<ffffffffa033b696>] ovs_vport_del+0x46/0x60 [openvswitch]
      [   62.769638]  [<ffffffffa0335314>] ovs_dp_detach_port+0x44/0x60 [openvswitch]
      [   62.769640]  [<ffffffffa0336574>] ovs_dp_notify_wq+0xb4/0x150 [openvswitch]
      [   62.769642]  [<ffffffff81075c28>] process_one_work+0x1d8/0x6a0
      [   62.769644]  [<ffffffff81075bc8>] ? process_one_work+0x178/0x6a0
      [   62.769646]  [<ffffffff8107659b>] worker_thread+0x11b/0x370
      [   62.769648]  [<ffffffff81076480>] ? rescuer_thread+0x350/0x350
      [   62.769650]  [<ffffffff8107f44a>] kthread+0xea/0xf0
      [   62.769652]  [<ffffffff8107f360>] ? flush_kthread_worker+0x150/0x150
      [   62.769654]  [<ffffffff81770bac>] ret_from_fork+0x7c/0xb0
      [   62.769656]  [<ffffffff8107f360>] ? flush_kthread_worker+0x150/0x150
      [   62.769657] ---[ end trace 838756c62e156ffd ]---
      [   62.769724] device tap1 left promiscuous mode
      
      This patch also affects moving devices between net namespaces.
      
      OVS used to ignore netns move notifications which caused problems.
      Like:
        ovs-dpctl add-if test tap1
        ip link set tap1 netns 3512
      and then removing tap1 inside the namespace will cause hang on missing dev_put.
      
      With this patch OVS will detach dev upon receiving netns move event.
      Signed-off-by: NAlexei Starovoitov <ast@plumgrid.com>
      Signed-off-by: NJesse Gross <jesse@nicira.com>
      b07c2651
  13. 04 10月, 2013 3 次提交
  14. 01 10月, 2013 1 次提交
  15. 24 9月, 2013 2 次提交
  16. 18 9月, 2013 1 次提交
  17. 12 9月, 2013 1 次提交