<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux.git/drivers/net/vmxnet3, branch v2.6.39</title>
<subtitle>Linux kernel source tree</subtitle>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/'/>
<entry>
<title>vmxnet3: Fix inconsistent LRO state after initialization</title>
<updated>2011-05-16T19:05:23+00:00</updated>
<author>
<name>Thomas Jarosch</name>
<email>thomas.jarosch@intra2net.com</email>
</author>
<published>2011-05-16T06:28:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=ebde6f8acba92abfc203585198a54f47e83e2cd0'/>
<id>ebde6f8acba92abfc203585198a54f47e83e2cd0</id>
<content type='text'>
During initialization of vmxnet3, the state of LRO
gets out of sync with netdev-&gt;features.

This leads to very poor TCP performance in a IP forwarding
setup and is hitting many VMware users.

Simplified call sequence:
1. vmxnet3_declare_features() initializes "adapter-&gt;lro" to true.

2. The kernel automatically disables LRO if IP forwarding is enabled,
so vmxnet3_set_flags() gets called. This also updates netdev-&gt;features.

3. Now vmxnet3_setup_driver_shared() is called. "adapter-&gt;lro" is still
set to true and LRO gets enabled again, even though
netdev-&gt;features shows it's disabled.

Fix it by updating "adapter-&gt;lro", too.

The private vmxnet3 adapter flags are scheduled for removal
in net-next, see commit a0d2730c9571aeba793cb5d3009094ee1d8fda35
"net: vmxnet3: convert to hw_features".

Patch applies to 2.6.37 / 2.6.38 and 2.6.39-rc6.

Please CC: comments.

Signed-off-by: Thomas Jarosch &lt;thomas.jarosch@intra2net.com&gt;
Acked-by: Stephen Hemminger &lt;shemminger@vyatta.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
During initialization of vmxnet3, the state of LRO
gets out of sync with netdev-&gt;features.

This leads to very poor TCP performance in a IP forwarding
setup and is hitting many VMware users.

Simplified call sequence:
1. vmxnet3_declare_features() initializes "adapter-&gt;lro" to true.

2. The kernel automatically disables LRO if IP forwarding is enabled,
so vmxnet3_set_flags() gets called. This also updates netdev-&gt;features.

3. Now vmxnet3_setup_driver_shared() is called. "adapter-&gt;lro" is still
set to true and LRO gets enabled again, even though
netdev-&gt;features shows it's disabled.

Fix it by updating "adapter-&gt;lro", too.

The private vmxnet3 adapter flags are scheduled for removal
in net-next, see commit a0d2730c9571aeba793cb5d3009094ee1d8fda35
"net: vmxnet3: convert to hw_features".

Patch applies to 2.6.37 / 2.6.38 and 2.6.39-rc6.

Please CC: comments.

Signed-off-by: Thomas Jarosch &lt;thomas.jarosch@intra2net.com&gt;
Acked-by: Stephen Hemminger &lt;shemminger@vyatta.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>vmxnet3: Consistently disable irqs when taking adapter-&gt;cmd_lock</title>
<updated>2011-05-06T20:11:57+00:00</updated>
<author>
<name>Roland Dreier</name>
<email>roland@purestorage.com</email>
</author>
<published>2011-05-06T08:32:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=e328d410826d52e9ee348aff9064c4a207f2adb1'/>
<id>e328d410826d52e9ee348aff9064c4a207f2adb1</id>
<content type='text'>
Using the vmxnet3 driver produces a lockdep warning because
vmxnet3_set_mc(), which is called with mc-&gt;mca_lock held, takes
adapter-&gt;cmd_lock.  However, there are a couple of places where
adapter-&gt;cmd_lock is taken with softirqs enabled, lockdep warns that a
softirq that tries to take mc-&gt;mca_lock could happen while
adapter-&gt;cmd_lock is held, leading to an AB-BA deadlock.

I'm not sure if this is a real potential deadlock or not, but the
simplest and best fix seems to be simply to make sure we take cmd_lock
with spin_lock_irqsave() everywhere -- the places with plain spin_lock
just look like oversights.

The full enormous lockdep warning is:

 =========================================================
 [ INFO: possible irq lock inversion dependency detected ]
 2.6.39-rc6+ #1
 ---------------------------------------------------------
 ifconfig/567 just changed the state of lock:
  (&amp;(&amp;mc-&gt;mca_lock)-&gt;rlock){+.-...}, at: [&lt;ffffffff81531e9f&gt;] mld_ifc_timer_expire+0xff/0x280
 but this lock took another, SOFTIRQ-unsafe lock in the past:
  (&amp;(&amp;adapter-&gt;cmd_lock)-&gt;rlock){+.+...}

 and interrupts could create inverse lock ordering between them.

 other info that might help us debug this:
 4 locks held by ifconfig/567:
  #0:  (rtnl_mutex){+.+.+.}, at: [&lt;ffffffff8147d547&gt;] rtnl_lock+0x17/0x20
  #1:  ((inetaddr_chain).rwsem){.+.+.+}, at: [&lt;ffffffff810896cf&gt;] __blocking_notifier_call_chain+0x5f/0xb0
  #2:  (&amp;idev-&gt;mc_ifc_timer){+.-...}, at: [&lt;ffffffff8106f21b&gt;] run_timer_softirq+0xeb/0x3f0
  #3:  (&amp;ndev-&gt;lock){++.-..}, at: [&lt;ffffffff81531dd2&gt;] mld_ifc_timer_expire+0x32/0x280

 the shortest dependencies between 2nd lock and 1st lock:
   -&gt; (&amp;(&amp;adapter-&gt;cmd_lock)-&gt;rlock){+.+...} ops: 11 {
      HARDIRQ-ON-W at:
                                            [&lt;ffffffff8109ad86&gt;] __lock_acquire+0x7f6/0x1e10
                                            [&lt;ffffffff8109ca4d&gt;] lock_acquire+0x9d/0x130
                                            [&lt;ffffffff81571156&gt;] _raw_spin_lock+0x36/0x70
                                            [&lt;ffffffffa000d212&gt;] vmxnet3_alloc_intr_resources+0x22/0x230 [vmxnet3]
                                            [&lt;ffffffffa0014031&gt;] vmxnet3_probe_device+0x5f6/0x15c5 [vmxnet3]
                                            [&lt;ffffffff812df67f&gt;] local_pci_probe+0x5f/0xd0
                                            [&lt;ffffffff812dfde9&gt;] pci_device_probe+0x119/0x120
                                            [&lt;ffffffff81373df6&gt;] driver_probe_device+0x96/0x1c0
                                            [&lt;ffffffff81373fcb&gt;] __driver_attach+0xab/0xb0
                                            [&lt;ffffffff81372a1e&gt;] bus_for_each_dev+0x5e/0x90
                                            [&lt;ffffffff81373a2e&gt;] driver_attach+0x1e/0x20
                                            [&lt;ffffffff813735b8&gt;] bus_add_driver+0xc8/0x290
                                            [&lt;ffffffff813745b6&gt;] driver_register+0x76/0x140
                                            [&lt;ffffffff812e0046&gt;] __pci_register_driver+0x66/0xe0
                                            [&lt;ffffffffa001b03a&gt;] serio_raw_poll+0x3a/0x60 [serio_raw]
                                            [&lt;ffffffff81002165&gt;] do_one_initcall+0x45/0x190
                                            [&lt;ffffffff810aa76b&gt;] sys_init_module+0xfb/0x250
                                            [&lt;ffffffff8157a142&gt;] system_call_fastpath+0x16/0x1b
      SOFTIRQ-ON-W at:
                                            [&lt;ffffffff8109adb7&gt;] __lock_acquire+0x827/0x1e10
                                            [&lt;ffffffff8109ca4d&gt;] lock_acquire+0x9d/0x130
                                            [&lt;ffffffff81571156&gt;] _raw_spin_lock+0x36/0x70
                                            [&lt;ffffffffa000d212&gt;] vmxnet3_alloc_intr_resources+0x22/0x230 [vmxnet3]
                                            [&lt;ffffffffa0014031&gt;] vmxnet3_probe_device+0x5f6/0x15c5 [vmxnet3]
                                            [&lt;ffffffff812df67f&gt;] local_pci_probe+0x5f/0xd0
                                            [&lt;ffffffff812dfde9&gt;] pci_device_probe+0x119/0x120
                                            [&lt;ffffffff81373df6&gt;] driver_probe_device+0x96/0x1c0
                                            [&lt;ffffffff81373fcb&gt;] __driver_attach+0xab/0xb0
                                            [&lt;ffffffff81372a1e&gt;] bus_for_each_dev+0x5e/0x90
                                            [&lt;ffffffff81373a2e&gt;] driver_attach+0x1e/0x20
                                            [&lt;ffffffff813735b8&gt;] bus_add_driver+0xc8/0x290
                                            [&lt;ffffffff813745b6&gt;] driver_register+0x76/0x140
                                            [&lt;ffffffff812e0046&gt;] __pci_register_driver+0x66/0xe0
                                            [&lt;ffffffffa001b03a&gt;] serio_raw_poll+0x3a/0x60 [serio_raw]
                                            [&lt;ffffffff81002165&gt;] do_one_initcall+0x45/0x190
                                            [&lt;ffffffff810aa76b&gt;] sys_init_module+0xfb/0x250
                                            [&lt;ffffffff8157a142&gt;] system_call_fastpath+0x16/0x1b
      INITIAL USE at:
                                           [&lt;ffffffff8109a9e9&gt;] __lock_acquire+0x459/0x1e10
                                           [&lt;ffffffff8109ca4d&gt;] lock_acquire+0x9d/0x130
                                           [&lt;ffffffff81571156&gt;] _raw_spin_lock+0x36/0x70
                                           [&lt;ffffffffa000d212&gt;] vmxnet3_alloc_intr_resources+0x22/0x230 [vmxnet3]
                                           [&lt;ffffffffa0014031&gt;] vmxnet3_probe_device+0x5f6/0x15c5 [vmxnet3]
                                           [&lt;ffffffff812df67f&gt;] local_pci_probe+0x5f/0xd0
                                           [&lt;ffffffff812dfde9&gt;] pci_device_probe+0x119/0x120
                                           [&lt;ffffffff81373df6&gt;] driver_probe_device+0x96/0x1c0
                                           [&lt;ffffffff81373fcb&gt;] __driver_attach+0xab/0xb0
                                           [&lt;ffffffff81372a1e&gt;] bus_for_each_dev+0x5e/0x90
                                           [&lt;ffffffff81373a2e&gt;] driver_attach+0x1e/0x20
                                           [&lt;ffffffff813735b8&gt;] bus_add_driver+0xc8/0x290
                                           [&lt;ffffffff813745b6&gt;] driver_register+0x76/0x140
                                           [&lt;ffffffff812e0046&gt;] __pci_register_driver+0x66/0xe0
                                           [&lt;ffffffffa001b03a&gt;] serio_raw_poll+0x3a/0x60 [serio_raw]
                                           [&lt;ffffffff81002165&gt;] do_one_initcall+0x45/0x190
                                           [&lt;ffffffff810aa76b&gt;] sys_init_module+0xfb/0x250
                                           [&lt;ffffffff8157a142&gt;] system_call_fastpath+0x16/0x1b
    }
    ... key      at: [&lt;ffffffffa0017590&gt;] __key.42516+0x0/0xffffffffffffda70 [vmxnet3]
    ... acquired at:
    [&lt;ffffffff8109ca4d&gt;] lock_acquire+0x9d/0x130
    [&lt;ffffffff81571bb5&gt;] _raw_spin_lock_irqsave+0x55/0xa0
    [&lt;ffffffffa000de27&gt;] vmxnet3_set_mc+0x97/0x1a0 [vmxnet3]
    [&lt;ffffffff8146ffa0&gt;] __dev_set_rx_mode+0x40/0xb0
    [&lt;ffffffff81470040&gt;] dev_set_rx_mode+0x30/0x50
    [&lt;ffffffff81470127&gt;] __dev_open+0xc7/0x100
    [&lt;ffffffff814703c1&gt;] __dev_change_flags+0xa1/0x180
    [&lt;ffffffff81470568&gt;] dev_change_flags+0x28/0x70
    [&lt;ffffffff814da960&gt;] devinet_ioctl+0x730/0x800
    [&lt;ffffffff814db508&gt;] inet_ioctl+0x88/0xa0
    [&lt;ffffffff814541f0&gt;] sock_do_ioctl+0x30/0x70
    [&lt;ffffffff814542a9&gt;] sock_ioctl+0x79/0x2f0
    [&lt;ffffffff81188798&gt;] do_vfs_ioctl+0x98/0x570
    [&lt;ffffffff81188d01&gt;] sys_ioctl+0x91/0xa0
    [&lt;ffffffff8157a142&gt;] system_call_fastpath+0x16/0x1b

  -&gt; (_xmit_ETHER){+.....} ops: 6 {
     HARDIRQ-ON-W at:
                                          [&lt;ffffffff8109ad86&gt;] __lock_acquire+0x7f6/0x1e10
                                          [&lt;ffffffff8109ca4d&gt;] lock_acquire+0x9d/0x130
                                          [&lt;ffffffff8157124b&gt;] _raw_spin_lock_bh+0x3b/0x70
                                          [&lt;ffffffff81475618&gt;] __dev_mc_add+0x38/0x90
                                          [&lt;ffffffff814756a0&gt;] dev_mc_add+0x10/0x20
                                          [&lt;ffffffff81532c9e&gt;] igmp6_group_added+0x10e/0x1b0
                                          [&lt;ffffffff81533f2d&gt;] ipv6_dev_mc_inc+0x2cd/0x430
                                          [&lt;ffffffff81515e17&gt;] ipv6_add_dev+0x357/0x450
                                          [&lt;ffffffff81519f27&gt;] addrconf_notify+0x2f7/0xb10
                                          [&lt;ffffffff81575c1c&gt;] notifier_call_chain+0x8c/0xc0
                                          [&lt;ffffffff81089586&gt;] raw_notifier_call_chain+0x16/0x20
                                          [&lt;ffffffff814689b7&gt;] call_netdevice_notifiers+0x37/0x70
                                          [&lt;ffffffff8146a944&gt;] register_netdevice+0x244/0x2d0
                                          [&lt;ffffffff8146aa0f&gt;] register_netdev+0x3f/0x60
                                          [&lt;ffffffffa001419b&gt;] vmxnet3_probe_device+0x760/0x15c5 [vmxnet3]
                                          [&lt;ffffffff812df67f&gt;] local_pci_probe+0x5f/0xd0
                                          [&lt;ffffffff812dfde9&gt;] pci_device_probe+0x119/0x120
                                          [&lt;ffffffff81373df6&gt;] driver_probe_device+0x96/0x1c0
                                          [&lt;ffffffff81373fcb&gt;] __driver_attach+0xab/0xb0
                                          [&lt;ffffffff81372a1e&gt;] bus_for_each_dev+0x5e/0x90
                                          [&lt;ffffffff81373a2e&gt;] driver_attach+0x1e/0x20
                                          [&lt;ffffffff813735b8&gt;] bus_add_driver+0xc8/0x290
                                          [&lt;ffffffff813745b6&gt;] driver_register+0x76/0x140
                                          [&lt;ffffffff812e0046&gt;] __pci_register_driver+0x66/0xe0
                                          [&lt;ffffffffa001b03a&gt;] serio_raw_poll+0x3a/0x60 [serio_raw]
                                          [&lt;ffffffff81002165&gt;] do_one_initcall+0x45/0x190
                                          [&lt;ffffffff810aa76b&gt;] sys_init_module+0xfb/0x250
                                          [&lt;ffffffff8157a142&gt;] system_call_fastpath+0x16/0x1b
     INITIAL USE at:
                                         [&lt;ffffffff8109a9e9&gt;] __lock_acquire+0x459/0x1e10
                                         [&lt;ffffffff8109ca4d&gt;] lock_acquire+0x9d/0x130
                                         [&lt;ffffffff8157124b&gt;] _raw_spin_lock_bh+0x3b/0x70
                                         [&lt;ffffffff81475618&gt;] __dev_mc_add+0x38/0x90
                                         [&lt;ffffffff814756a0&gt;] dev_mc_add+0x10/0x20
                                         [&lt;ffffffff81532c9e&gt;] igmp6_group_added+0x10e/0x1b0
                                         [&lt;ffffffff81533f2d&gt;] ipv6_dev_mc_inc+0x2cd/0x430
                                         [&lt;ffffffff81515e17&gt;] ipv6_add_dev+0x357/0x450
                                         [&lt;ffffffff81519f27&gt;] addrconf_notify+0x2f7/0xb10
                                         [&lt;ffffffff81575c1c&gt;] notifier_call_chain+0x8c/0xc0
                                         [&lt;ffffffff81089586&gt;] raw_notifier_call_chain+0x16/0x20
                                         [&lt;ffffffff814689b7&gt;] call_netdevice_notifiers+0x37/0x70
                                         [&lt;ffffffff8146a944&gt;] register_netdevice+0x244/0x2d0
                                         [&lt;ffffffff8146aa0f&gt;] register_netdev+0x3f/0x60
                                         [&lt;ffffffffa001419b&gt;] vmxnet3_probe_device+0x760/0x15c5 [vmxnet3]
                                         [&lt;ffffffff812df67f&gt;] local_pci_probe+0x5f/0xd0
                                         [&lt;ffffffff812dfde9&gt;] pci_device_probe+0x119/0x120
                                         [&lt;ffffffff81373df6&gt;] driver_probe_device+0x96/0x1c0
                                         [&lt;ffffffff81373fcb&gt;] __driver_attach+0xab/0xb0
                                         [&lt;ffffffff81372a1e&gt;] bus_for_each_dev+0x5e/0x90
                                         [&lt;ffffffff81373a2e&gt;] driver_attach+0x1e/0x20
                                         [&lt;ffffffff813735b8&gt;] bus_add_driver+0xc8/0x290
                                         [&lt;ffffffff813745b6&gt;] driver_register+0x76/0x140
                                         [&lt;ffffffff812e0046&gt;] __pci_register_driver+0x66/0xe0
                                         [&lt;ffffffffa001b03a&gt;] serio_raw_poll+0x3a/0x60 [serio_raw]
                                         [&lt;ffffffff81002165&gt;] do_one_initcall+0x45/0x190
                                         [&lt;ffffffff810aa76b&gt;] sys_init_module+0xfb/0x250
                                         [&lt;ffffffff8157a142&gt;] system_call_fastpath+0x16/0x1b
   }
   ... key      at: [&lt;ffffffff827fd868&gt;] netdev_addr_lock_key+0x8/0x1e0
   ... acquired at:
    [&lt;ffffffff8109ca4d&gt;] lock_acquire+0x9d/0x130
    [&lt;ffffffff8157124b&gt;] _raw_spin_lock_bh+0x3b/0x70
    [&lt;ffffffff81475618&gt;] __dev_mc_add+0x38/0x90
    [&lt;ffffffff814756a0&gt;] dev_mc_add+0x10/0x20
    [&lt;ffffffff81532c9e&gt;] igmp6_group_added+0x10e/0x1b0
    [&lt;ffffffff81533f2d&gt;] ipv6_dev_mc_inc+0x2cd/0x430
    [&lt;ffffffff81515e17&gt;] ipv6_add_dev+0x357/0x450
    [&lt;ffffffff81519f27&gt;] addrconf_notify+0x2f7/0xb10
    [&lt;ffffffff81575c1c&gt;] notifier_call_chain+0x8c/0xc0
    [&lt;ffffffff81089586&gt;] raw_notifier_call_chain+0x16/0x20
    [&lt;ffffffff814689b7&gt;] call_netdevice_notifiers+0x37/0x70
    [&lt;ffffffff8146a944&gt;] register_netdevice+0x244/0x2d0
    [&lt;ffffffff8146aa0f&gt;] register_netdev+0x3f/0x60
    [&lt;ffffffffa001419b&gt;] vmxnet3_probe_device+0x760/0x15c5 [vmxnet3]
    [&lt;ffffffff812df67f&gt;] local_pci_probe+0x5f/0xd0
    [&lt;ffffffff812dfde9&gt;] pci_device_probe+0x119/0x120
    [&lt;ffffffff81373df6&gt;] driver_probe_device+0x96/0x1c0
    [&lt;ffffffff81373fcb&gt;] __driver_attach+0xab/0xb0
    [&lt;ffffffff81372a1e&gt;] bus_for_each_dev+0x5e/0x90
    [&lt;ffffffff81373a2e&gt;] driver_attach+0x1e/0x20
    [&lt;ffffffff813735b8&gt;] bus_add_driver+0xc8/0x290
    [&lt;ffffffff813745b6&gt;] driver_register+0x76/0x140
    [&lt;ffffffff812e0046&gt;] __pci_register_driver+0x66/0xe0
    [&lt;ffffffffa001b03a&gt;] serio_raw_poll+0x3a/0x60 [serio_raw]
    [&lt;ffffffff81002165&gt;] do_one_initcall+0x45/0x190
    [&lt;ffffffff810aa76b&gt;] sys_init_module+0xfb/0x250
    [&lt;ffffffff8157a142&gt;] system_call_fastpath+0x16/0x1b

 -&gt; (&amp;(&amp;mc-&gt;mca_lock)-&gt;rlock){+.-...} ops: 6 {
    HARDIRQ-ON-W at:
                                        [&lt;ffffffff8109ad86&gt;] __lock_acquire+0x7f6/0x1e10
                                        [&lt;ffffffff8109ca4d&gt;] lock_acquire+0x9d/0x130
                                        [&lt;ffffffff8157124b&gt;] _raw_spin_lock_bh+0x3b/0x70
                                        [&lt;ffffffff81532bd5&gt;] igmp6_group_added+0x45/0x1b0
                                        [&lt;ffffffff81533f2d&gt;] ipv6_dev_mc_inc+0x2cd/0x430
                                        [&lt;ffffffff81515e17&gt;] ipv6_add_dev+0x357/0x450
                                        [&lt;ffffffff81ce0d16&gt;] addrconf_init+0x4e/0x183
                                        [&lt;ffffffff81ce0ba1&gt;] inet6_init+0x191/0x2a6
                                        [&lt;ffffffff81002165&gt;] do_one_initcall+0x45/0x190
                                        [&lt;ffffffff81ca4d3f&gt;] kernel_init+0xe3/0x168
                                        [&lt;ffffffff8157b2e4&gt;] kernel_thread_helper+0x4/0x10
    IN-SOFTIRQ-W at:
                                        [&lt;ffffffff8109ad5e&gt;] __lock_acquire+0x7ce/0x1e10
                                        [&lt;ffffffff8109ca4d&gt;] lock_acquire+0x9d/0x130
                                        [&lt;ffffffff8157124b&gt;] _raw_spin_lock_bh+0x3b/0x70
                                        [&lt;ffffffff81531e9f&gt;] mld_ifc_timer_expire+0xff/0x280
                                        [&lt;ffffffff8106f2a9&gt;] run_timer_softirq+0x179/0x3f0
                                        [&lt;ffffffff810666d0&gt;] __do_softirq+0xc0/0x210
                                        [&lt;ffffffff8157b3dc&gt;] call_softirq+0x1c/0x30
                                        [&lt;ffffffff8100d42d&gt;] do_softirq+0xad/0xe0
                                        [&lt;ffffffff81066afe&gt;] irq_exit+0x9e/0xb0
                                        [&lt;ffffffff8157bd40&gt;] smp_apic_timer_interrupt+0x70/0x9b
                                        [&lt;ffffffff8157ab93&gt;] apic_timer_interrupt+0x13/0x20
                                        [&lt;ffffffff8149d857&gt;] rt_do_flush+0x87/0x2a0
                                        [&lt;ffffffff814a16b6&gt;] rt_cache_flush+0x46/0x60
                                        [&lt;ffffffff814e36e0&gt;] fib_disable_ip+0x40/0x60
                                        [&lt;ffffffff814e5447&gt;] fib_inetaddr_event+0xd7/0xe0
                                        [&lt;ffffffff81575c1c&gt;] notifier_call_chain+0x8c/0xc0
                                        [&lt;ffffffff810896e8&gt;] __blocking_notifier_call_chain+0x78/0xb0
                                        [&lt;ffffffff81089736&gt;] blocking_notifier_call_chain+0x16/0x20
                                        [&lt;ffffffff814d8021&gt;] __inet_del_ifa+0xf1/0x2e0
                                        [&lt;ffffffff814d8223&gt;] inet_del_ifa+0x13/0x20
                                        [&lt;ffffffff814da731&gt;] devinet_ioctl+0x501/0x800
                                        [&lt;ffffffff814db508&gt;] inet_ioctl+0x88/0xa0
                                        [&lt;ffffffff814541f0&gt;] sock_do_ioctl+0x30/0x70
                                        [&lt;ffffffff814542a9&gt;] sock_ioctl+0x79/0x2f0
                                        [&lt;ffffffff81188798&gt;] do_vfs_ioctl+0x98/0x570
                                        [&lt;ffffffff81188d01&gt;] sys_ioctl+0x91/0xa0
                                        [&lt;ffffffff8157a142&gt;] system_call_fastpath+0x16/0x1b
    INITIAL USE at:
                                       [&lt;ffffffff8109a9e9&gt;] __lock_acquire+0x459/0x1e10
                                       [&lt;ffffffff8109ca4d&gt;] lock_acquire+0x9d/0x130
                                       [&lt;ffffffff8157124b&gt;] _raw_spin_lock_bh+0x3b/0x70
                                       [&lt;ffffffff81532bd5&gt;] igmp6_group_added+0x45/0x1b0
                                       [&lt;ffffffff81533f2d&gt;] ipv6_dev_mc_inc+0x2cd/0x430
                                       [&lt;ffffffff81515e17&gt;] ipv6_add_dev+0x357/0x450
                                       [&lt;ffffffff81ce0d16&gt;] addrconf_init+0x4e/0x183
                                       [&lt;ffffffff81ce0ba1&gt;] inet6_init+0x191/0x2a6
                                       [&lt;ffffffff81002165&gt;] do_one_initcall+0x45/0x190
                                       [&lt;ffffffff81ca4d3f&gt;] kernel_init+0xe3/0x168
                                       [&lt;ffffffff8157b2e4&gt;] kernel_thread_helper+0x4/0x10
  }
  ... key      at: [&lt;ffffffff82801be2&gt;] __key.40877+0x0/0x8
  ... acquired at:
    [&lt;ffffffff810997bc&gt;] check_usage_forwards+0x9c/0x110
    [&lt;ffffffff8109a32c&gt;] mark_lock+0x19c/0x400
    [&lt;ffffffff8109ad5e&gt;] __lock_acquire+0x7ce/0x1e10
    [&lt;ffffffff8109ca4d&gt;] lock_acquire+0x9d/0x130
    [&lt;ffffffff8157124b&gt;] _raw_spin_lock_bh+0x3b/0x70
    [&lt;ffffffff81531e9f&gt;] mld_ifc_timer_expire+0xff/0x280
    [&lt;ffffffff8106f2a9&gt;] run_timer_softirq+0x179/0x3f0
    [&lt;ffffffff810666d0&gt;] __do_softirq+0xc0/0x210
    [&lt;ffffffff8157b3dc&gt;] call_softirq+0x1c/0x30
    [&lt;ffffffff8100d42d&gt;] do_softirq+0xad/0xe0
    [&lt;ffffffff81066afe&gt;] irq_exit+0x9e/0xb0
    [&lt;ffffffff8157bd40&gt;] smp_apic_timer_interrupt+0x70/0x9b
    [&lt;ffffffff8157ab93&gt;] apic_timer_interrupt+0x13/0x20
    [&lt;ffffffff8149d857&gt;] rt_do_flush+0x87/0x2a0
    [&lt;ffffffff814a16b6&gt;] rt_cache_flush+0x46/0x60
    [&lt;ffffffff814e36e0&gt;] fib_disable_ip+0x40/0x60
    [&lt;ffffffff814e5447&gt;] fib_inetaddr_event+0xd7/0xe0
    [&lt;ffffffff81575c1c&gt;] notifier_call_chain+0x8c/0xc0
    [&lt;ffffffff810896e8&gt;] __blocking_notifier_call_chain+0x78/0xb0
    [&lt;ffffffff81089736&gt;] blocking_notifier_call_chain+0x16/0x20
    [&lt;ffffffff814d8021&gt;] __inet_del_ifa+0xf1/0x2e0
    [&lt;ffffffff814d8223&gt;] inet_del_ifa+0x13/0x20
    [&lt;ffffffff814da731&gt;] devinet_ioctl+0x501/0x800
    [&lt;ffffffff814db508&gt;] inet_ioctl+0x88/0xa0
    [&lt;ffffffff814541f0&gt;] sock_do_ioctl+0x30/0x70
    [&lt;ffffffff814542a9&gt;] sock_ioctl+0x79/0x2f0
    [&lt;ffffffff81188798&gt;] do_vfs_ioctl+0x98/0x570
    [&lt;ffffffff81188d01&gt;] sys_ioctl+0x91/0xa0
    [&lt;ffffffff8157a142&gt;] system_call_fastpath+0x16/0x1b

 stack backtrace:
 Pid: 567, comm: ifconfig Not tainted 2.6.39-rc6+ #1
 Call Trace:
  &lt;IRQ&gt;  [&lt;ffffffff810996f6&gt;] print_irq_inversion_bug+0x146/0x170
  [&lt;ffffffff81099720&gt;] ? print_irq_inversion_bug+0x170/0x170
  [&lt;ffffffff810997bc&gt;] check_usage_forwards+0x9c/0x110
  [&lt;ffffffff8109a32c&gt;] mark_lock+0x19c/0x400
  [&lt;ffffffff8109ad5e&gt;] __lock_acquire+0x7ce/0x1e10
  [&lt;ffffffff8109a383&gt;] ? mark_lock+0x1f3/0x400
  [&lt;ffffffff8109b497&gt;] ? __lock_acquire+0xf07/0x1e10
  [&lt;ffffffff81012255&gt;] ? native_sched_clock+0x15/0x70
  [&lt;ffffffff8109ca4d&gt;] lock_acquire+0x9d/0x130
  [&lt;ffffffff81531e9f&gt;] ? mld_ifc_timer_expire+0xff/0x280
  [&lt;ffffffff8109759d&gt;] ? lock_release_holdtime+0x3d/0x1a0
  [&lt;ffffffff8157124b&gt;] _raw_spin_lock_bh+0x3b/0x70
  [&lt;ffffffff81531e9f&gt;] ? mld_ifc_timer_expire+0xff/0x280
  [&lt;ffffffff8157170b&gt;] ? _raw_spin_unlock+0x2b/0x40
  [&lt;ffffffff81531e9f&gt;] mld_ifc_timer_expire+0xff/0x280
  [&lt;ffffffff8106f2a9&gt;] run_timer_softirq+0x179/0x3f0
  [&lt;ffffffff8106f21b&gt;] ? run_timer_softirq+0xeb/0x3f0
  [&lt;ffffffff810122b9&gt;] ? sched_clock+0x9/0x10
  [&lt;ffffffff81531da0&gt;] ? mld_gq_timer_expire+0x30/0x30
  [&lt;ffffffff810666d0&gt;] __do_softirq+0xc0/0x210
  [&lt;ffffffff8109455f&gt;] ? tick_program_event+0x1f/0x30
  [&lt;ffffffff8157b3dc&gt;] call_softirq+0x1c/0x30
  [&lt;ffffffff8100d42d&gt;] do_softirq+0xad/0xe0
  [&lt;ffffffff81066afe&gt;] irq_exit+0x9e/0xb0
  [&lt;ffffffff8157bd40&gt;] smp_apic_timer_interrupt+0x70/0x9b
  [&lt;ffffffff8157ab93&gt;] apic_timer_interrupt+0x13/0x20
  &lt;EOI&gt;  [&lt;ffffffff81571f14&gt;] ? retint_restore_args+0x13/0x13
  [&lt;ffffffff810974a7&gt;] ? lock_is_held+0x17/0xd0
  [&lt;ffffffff8149d857&gt;] rt_do_flush+0x87/0x2a0
  [&lt;ffffffff814a16b6&gt;] rt_cache_flush+0x46/0x60
  [&lt;ffffffff814e36e0&gt;] fib_disable_ip+0x40/0x60
  [&lt;ffffffff814e5447&gt;] fib_inetaddr_event+0xd7/0xe0
  [&lt;ffffffff81575c1c&gt;] notifier_call_chain+0x8c/0xc0
  [&lt;ffffffff810896e8&gt;] __blocking_notifier_call_chain+0x78/0xb0
  [&lt;ffffffff81089736&gt;] blocking_notifier_call_chain+0x16/0x20
  [&lt;ffffffff814d8021&gt;] __inet_del_ifa+0xf1/0x2e0
  [&lt;ffffffff814d8223&gt;] inet_del_ifa+0x13/0x20
  [&lt;ffffffff814da731&gt;] devinet_ioctl+0x501/0x800
  [&lt;ffffffff8108a3af&gt;] ? local_clock+0x6f/0x80
  [&lt;ffffffff81575898&gt;] ? do_page_fault+0x268/0x560
  [&lt;ffffffff814db508&gt;] inet_ioctl+0x88/0xa0
  [&lt;ffffffff814541f0&gt;] sock_do_ioctl+0x30/0x70
  [&lt;ffffffff814542a9&gt;] sock_ioctl+0x79/0x2f0
  [&lt;ffffffff810dfe87&gt;] ? __call_rcu+0xa7/0x190
  [&lt;ffffffff81188798&gt;] do_vfs_ioctl+0x98/0x570
  [&lt;ffffffff8117737e&gt;] ? fget_light+0x33e/0x430
  [&lt;ffffffff81571ef9&gt;] ? retint_swapgs+0x13/0x1b
  [&lt;ffffffff81188d01&gt;] sys_ioctl+0x91/0xa0
  [&lt;ffffffff8157a142&gt;] system_call_fastpath+0x16/0x1b

Signed-off-by: Roland Dreier &lt;roland@purestorage.com&gt;
Signed-off-by: Shreyas N Bhatewara &lt;sbhatewara@vmware.com&gt;
Signed-off-by: Scott J. Goldman &lt;scottjg@vmware.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Using the vmxnet3 driver produces a lockdep warning because
vmxnet3_set_mc(), which is called with mc-&gt;mca_lock held, takes
adapter-&gt;cmd_lock.  However, there are a couple of places where
adapter-&gt;cmd_lock is taken with softirqs enabled, lockdep warns that a
softirq that tries to take mc-&gt;mca_lock could happen while
adapter-&gt;cmd_lock is held, leading to an AB-BA deadlock.

I'm not sure if this is a real potential deadlock or not, but the
simplest and best fix seems to be simply to make sure we take cmd_lock
with spin_lock_irqsave() everywhere -- the places with plain spin_lock
just look like oversights.

The full enormous lockdep warning is:

 =========================================================
 [ INFO: possible irq lock inversion dependency detected ]
 2.6.39-rc6+ #1
 ---------------------------------------------------------
 ifconfig/567 just changed the state of lock:
  (&amp;(&amp;mc-&gt;mca_lock)-&gt;rlock){+.-...}, at: [&lt;ffffffff81531e9f&gt;] mld_ifc_timer_expire+0xff/0x280
 but this lock took another, SOFTIRQ-unsafe lock in the past:
  (&amp;(&amp;adapter-&gt;cmd_lock)-&gt;rlock){+.+...}

 and interrupts could create inverse lock ordering between them.

 other info that might help us debug this:
 4 locks held by ifconfig/567:
  #0:  (rtnl_mutex){+.+.+.}, at: [&lt;ffffffff8147d547&gt;] rtnl_lock+0x17/0x20
  #1:  ((inetaddr_chain).rwsem){.+.+.+}, at: [&lt;ffffffff810896cf&gt;] __blocking_notifier_call_chain+0x5f/0xb0
  #2:  (&amp;idev-&gt;mc_ifc_timer){+.-...}, at: [&lt;ffffffff8106f21b&gt;] run_timer_softirq+0xeb/0x3f0
  #3:  (&amp;ndev-&gt;lock){++.-..}, at: [&lt;ffffffff81531dd2&gt;] mld_ifc_timer_expire+0x32/0x280

 the shortest dependencies between 2nd lock and 1st lock:
   -&gt; (&amp;(&amp;adapter-&gt;cmd_lock)-&gt;rlock){+.+...} ops: 11 {
      HARDIRQ-ON-W at:
                                            [&lt;ffffffff8109ad86&gt;] __lock_acquire+0x7f6/0x1e10
                                            [&lt;ffffffff8109ca4d&gt;] lock_acquire+0x9d/0x130
                                            [&lt;ffffffff81571156&gt;] _raw_spin_lock+0x36/0x70
                                            [&lt;ffffffffa000d212&gt;] vmxnet3_alloc_intr_resources+0x22/0x230 [vmxnet3]
                                            [&lt;ffffffffa0014031&gt;] vmxnet3_probe_device+0x5f6/0x15c5 [vmxnet3]
                                            [&lt;ffffffff812df67f&gt;] local_pci_probe+0x5f/0xd0
                                            [&lt;ffffffff812dfde9&gt;] pci_device_probe+0x119/0x120
                                            [&lt;ffffffff81373df6&gt;] driver_probe_device+0x96/0x1c0
                                            [&lt;ffffffff81373fcb&gt;] __driver_attach+0xab/0xb0
                                            [&lt;ffffffff81372a1e&gt;] bus_for_each_dev+0x5e/0x90
                                            [&lt;ffffffff81373a2e&gt;] driver_attach+0x1e/0x20
                                            [&lt;ffffffff813735b8&gt;] bus_add_driver+0xc8/0x290
                                            [&lt;ffffffff813745b6&gt;] driver_register+0x76/0x140
                                            [&lt;ffffffff812e0046&gt;] __pci_register_driver+0x66/0xe0
                                            [&lt;ffffffffa001b03a&gt;] serio_raw_poll+0x3a/0x60 [serio_raw]
                                            [&lt;ffffffff81002165&gt;] do_one_initcall+0x45/0x190
                                            [&lt;ffffffff810aa76b&gt;] sys_init_module+0xfb/0x250
                                            [&lt;ffffffff8157a142&gt;] system_call_fastpath+0x16/0x1b
      SOFTIRQ-ON-W at:
                                            [&lt;ffffffff8109adb7&gt;] __lock_acquire+0x827/0x1e10
                                            [&lt;ffffffff8109ca4d&gt;] lock_acquire+0x9d/0x130
                                            [&lt;ffffffff81571156&gt;] _raw_spin_lock+0x36/0x70
                                            [&lt;ffffffffa000d212&gt;] vmxnet3_alloc_intr_resources+0x22/0x230 [vmxnet3]
                                            [&lt;ffffffffa0014031&gt;] vmxnet3_probe_device+0x5f6/0x15c5 [vmxnet3]
                                            [&lt;ffffffff812df67f&gt;] local_pci_probe+0x5f/0xd0
                                            [&lt;ffffffff812dfde9&gt;] pci_device_probe+0x119/0x120
                                            [&lt;ffffffff81373df6&gt;] driver_probe_device+0x96/0x1c0
                                            [&lt;ffffffff81373fcb&gt;] __driver_attach+0xab/0xb0
                                            [&lt;ffffffff81372a1e&gt;] bus_for_each_dev+0x5e/0x90
                                            [&lt;ffffffff81373a2e&gt;] driver_attach+0x1e/0x20
                                            [&lt;ffffffff813735b8&gt;] bus_add_driver+0xc8/0x290
                                            [&lt;ffffffff813745b6&gt;] driver_register+0x76/0x140
                                            [&lt;ffffffff812e0046&gt;] __pci_register_driver+0x66/0xe0
                                            [&lt;ffffffffa001b03a&gt;] serio_raw_poll+0x3a/0x60 [serio_raw]
                                            [&lt;ffffffff81002165&gt;] do_one_initcall+0x45/0x190
                                            [&lt;ffffffff810aa76b&gt;] sys_init_module+0xfb/0x250
                                            [&lt;ffffffff8157a142&gt;] system_call_fastpath+0x16/0x1b
      INITIAL USE at:
                                           [&lt;ffffffff8109a9e9&gt;] __lock_acquire+0x459/0x1e10
                                           [&lt;ffffffff8109ca4d&gt;] lock_acquire+0x9d/0x130
                                           [&lt;ffffffff81571156&gt;] _raw_spin_lock+0x36/0x70
                                           [&lt;ffffffffa000d212&gt;] vmxnet3_alloc_intr_resources+0x22/0x230 [vmxnet3]
                                           [&lt;ffffffffa0014031&gt;] vmxnet3_probe_device+0x5f6/0x15c5 [vmxnet3]
                                           [&lt;ffffffff812df67f&gt;] local_pci_probe+0x5f/0xd0
                                           [&lt;ffffffff812dfde9&gt;] pci_device_probe+0x119/0x120
                                           [&lt;ffffffff81373df6&gt;] driver_probe_device+0x96/0x1c0
                                           [&lt;ffffffff81373fcb&gt;] __driver_attach+0xab/0xb0
                                           [&lt;ffffffff81372a1e&gt;] bus_for_each_dev+0x5e/0x90
                                           [&lt;ffffffff81373a2e&gt;] driver_attach+0x1e/0x20
                                           [&lt;ffffffff813735b8&gt;] bus_add_driver+0xc8/0x290
                                           [&lt;ffffffff813745b6&gt;] driver_register+0x76/0x140
                                           [&lt;ffffffff812e0046&gt;] __pci_register_driver+0x66/0xe0
                                           [&lt;ffffffffa001b03a&gt;] serio_raw_poll+0x3a/0x60 [serio_raw]
                                           [&lt;ffffffff81002165&gt;] do_one_initcall+0x45/0x190
                                           [&lt;ffffffff810aa76b&gt;] sys_init_module+0xfb/0x250
                                           [&lt;ffffffff8157a142&gt;] system_call_fastpath+0x16/0x1b
    }
    ... key      at: [&lt;ffffffffa0017590&gt;] __key.42516+0x0/0xffffffffffffda70 [vmxnet3]
    ... acquired at:
    [&lt;ffffffff8109ca4d&gt;] lock_acquire+0x9d/0x130
    [&lt;ffffffff81571bb5&gt;] _raw_spin_lock_irqsave+0x55/0xa0
    [&lt;ffffffffa000de27&gt;] vmxnet3_set_mc+0x97/0x1a0 [vmxnet3]
    [&lt;ffffffff8146ffa0&gt;] __dev_set_rx_mode+0x40/0xb0
    [&lt;ffffffff81470040&gt;] dev_set_rx_mode+0x30/0x50
    [&lt;ffffffff81470127&gt;] __dev_open+0xc7/0x100
    [&lt;ffffffff814703c1&gt;] __dev_change_flags+0xa1/0x180
    [&lt;ffffffff81470568&gt;] dev_change_flags+0x28/0x70
    [&lt;ffffffff814da960&gt;] devinet_ioctl+0x730/0x800
    [&lt;ffffffff814db508&gt;] inet_ioctl+0x88/0xa0
    [&lt;ffffffff814541f0&gt;] sock_do_ioctl+0x30/0x70
    [&lt;ffffffff814542a9&gt;] sock_ioctl+0x79/0x2f0
    [&lt;ffffffff81188798&gt;] do_vfs_ioctl+0x98/0x570
    [&lt;ffffffff81188d01&gt;] sys_ioctl+0x91/0xa0
    [&lt;ffffffff8157a142&gt;] system_call_fastpath+0x16/0x1b

  -&gt; (_xmit_ETHER){+.....} ops: 6 {
     HARDIRQ-ON-W at:
                                          [&lt;ffffffff8109ad86&gt;] __lock_acquire+0x7f6/0x1e10
                                          [&lt;ffffffff8109ca4d&gt;] lock_acquire+0x9d/0x130
                                          [&lt;ffffffff8157124b&gt;] _raw_spin_lock_bh+0x3b/0x70
                                          [&lt;ffffffff81475618&gt;] __dev_mc_add+0x38/0x90
                                          [&lt;ffffffff814756a0&gt;] dev_mc_add+0x10/0x20
                                          [&lt;ffffffff81532c9e&gt;] igmp6_group_added+0x10e/0x1b0
                                          [&lt;ffffffff81533f2d&gt;] ipv6_dev_mc_inc+0x2cd/0x430
                                          [&lt;ffffffff81515e17&gt;] ipv6_add_dev+0x357/0x450
                                          [&lt;ffffffff81519f27&gt;] addrconf_notify+0x2f7/0xb10
                                          [&lt;ffffffff81575c1c&gt;] notifier_call_chain+0x8c/0xc0
                                          [&lt;ffffffff81089586&gt;] raw_notifier_call_chain+0x16/0x20
                                          [&lt;ffffffff814689b7&gt;] call_netdevice_notifiers+0x37/0x70
                                          [&lt;ffffffff8146a944&gt;] register_netdevice+0x244/0x2d0
                                          [&lt;ffffffff8146aa0f&gt;] register_netdev+0x3f/0x60
                                          [&lt;ffffffffa001419b&gt;] vmxnet3_probe_device+0x760/0x15c5 [vmxnet3]
                                          [&lt;ffffffff812df67f&gt;] local_pci_probe+0x5f/0xd0
                                          [&lt;ffffffff812dfde9&gt;] pci_device_probe+0x119/0x120
                                          [&lt;ffffffff81373df6&gt;] driver_probe_device+0x96/0x1c0
                                          [&lt;ffffffff81373fcb&gt;] __driver_attach+0xab/0xb0
                                          [&lt;ffffffff81372a1e&gt;] bus_for_each_dev+0x5e/0x90
                                          [&lt;ffffffff81373a2e&gt;] driver_attach+0x1e/0x20
                                          [&lt;ffffffff813735b8&gt;] bus_add_driver+0xc8/0x290
                                          [&lt;ffffffff813745b6&gt;] driver_register+0x76/0x140
                                          [&lt;ffffffff812e0046&gt;] __pci_register_driver+0x66/0xe0
                                          [&lt;ffffffffa001b03a&gt;] serio_raw_poll+0x3a/0x60 [serio_raw]
                                          [&lt;ffffffff81002165&gt;] do_one_initcall+0x45/0x190
                                          [&lt;ffffffff810aa76b&gt;] sys_init_module+0xfb/0x250
                                          [&lt;ffffffff8157a142&gt;] system_call_fastpath+0x16/0x1b
     INITIAL USE at:
                                         [&lt;ffffffff8109a9e9&gt;] __lock_acquire+0x459/0x1e10
                                         [&lt;ffffffff8109ca4d&gt;] lock_acquire+0x9d/0x130
                                         [&lt;ffffffff8157124b&gt;] _raw_spin_lock_bh+0x3b/0x70
                                         [&lt;ffffffff81475618&gt;] __dev_mc_add+0x38/0x90
                                         [&lt;ffffffff814756a0&gt;] dev_mc_add+0x10/0x20
                                         [&lt;ffffffff81532c9e&gt;] igmp6_group_added+0x10e/0x1b0
                                         [&lt;ffffffff81533f2d&gt;] ipv6_dev_mc_inc+0x2cd/0x430
                                         [&lt;ffffffff81515e17&gt;] ipv6_add_dev+0x357/0x450
                                         [&lt;ffffffff81519f27&gt;] addrconf_notify+0x2f7/0xb10
                                         [&lt;ffffffff81575c1c&gt;] notifier_call_chain+0x8c/0xc0
                                         [&lt;ffffffff81089586&gt;] raw_notifier_call_chain+0x16/0x20
                                         [&lt;ffffffff814689b7&gt;] call_netdevice_notifiers+0x37/0x70
                                         [&lt;ffffffff8146a944&gt;] register_netdevice+0x244/0x2d0
                                         [&lt;ffffffff8146aa0f&gt;] register_netdev+0x3f/0x60
                                         [&lt;ffffffffa001419b&gt;] vmxnet3_probe_device+0x760/0x15c5 [vmxnet3]
                                         [&lt;ffffffff812df67f&gt;] local_pci_probe+0x5f/0xd0
                                         [&lt;ffffffff812dfde9&gt;] pci_device_probe+0x119/0x120
                                         [&lt;ffffffff81373df6&gt;] driver_probe_device+0x96/0x1c0
                                         [&lt;ffffffff81373fcb&gt;] __driver_attach+0xab/0xb0
                                         [&lt;ffffffff81372a1e&gt;] bus_for_each_dev+0x5e/0x90
                                         [&lt;ffffffff81373a2e&gt;] driver_attach+0x1e/0x20
                                         [&lt;ffffffff813735b8&gt;] bus_add_driver+0xc8/0x290
                                         [&lt;ffffffff813745b6&gt;] driver_register+0x76/0x140
                                         [&lt;ffffffff812e0046&gt;] __pci_register_driver+0x66/0xe0
                                         [&lt;ffffffffa001b03a&gt;] serio_raw_poll+0x3a/0x60 [serio_raw]
                                         [&lt;ffffffff81002165&gt;] do_one_initcall+0x45/0x190
                                         [&lt;ffffffff810aa76b&gt;] sys_init_module+0xfb/0x250
                                         [&lt;ffffffff8157a142&gt;] system_call_fastpath+0x16/0x1b
   }
   ... key      at: [&lt;ffffffff827fd868&gt;] netdev_addr_lock_key+0x8/0x1e0
   ... acquired at:
    [&lt;ffffffff8109ca4d&gt;] lock_acquire+0x9d/0x130
    [&lt;ffffffff8157124b&gt;] _raw_spin_lock_bh+0x3b/0x70
    [&lt;ffffffff81475618&gt;] __dev_mc_add+0x38/0x90
    [&lt;ffffffff814756a0&gt;] dev_mc_add+0x10/0x20
    [&lt;ffffffff81532c9e&gt;] igmp6_group_added+0x10e/0x1b0
    [&lt;ffffffff81533f2d&gt;] ipv6_dev_mc_inc+0x2cd/0x430
    [&lt;ffffffff81515e17&gt;] ipv6_add_dev+0x357/0x450
    [&lt;ffffffff81519f27&gt;] addrconf_notify+0x2f7/0xb10
    [&lt;ffffffff81575c1c&gt;] notifier_call_chain+0x8c/0xc0
    [&lt;ffffffff81089586&gt;] raw_notifier_call_chain+0x16/0x20
    [&lt;ffffffff814689b7&gt;] call_netdevice_notifiers+0x37/0x70
    [&lt;ffffffff8146a944&gt;] register_netdevice+0x244/0x2d0
    [&lt;ffffffff8146aa0f&gt;] register_netdev+0x3f/0x60
    [&lt;ffffffffa001419b&gt;] vmxnet3_probe_device+0x760/0x15c5 [vmxnet3]
    [&lt;ffffffff812df67f&gt;] local_pci_probe+0x5f/0xd0
    [&lt;ffffffff812dfde9&gt;] pci_device_probe+0x119/0x120
    [&lt;ffffffff81373df6&gt;] driver_probe_device+0x96/0x1c0
    [&lt;ffffffff81373fcb&gt;] __driver_attach+0xab/0xb0
    [&lt;ffffffff81372a1e&gt;] bus_for_each_dev+0x5e/0x90
    [&lt;ffffffff81373a2e&gt;] driver_attach+0x1e/0x20
    [&lt;ffffffff813735b8&gt;] bus_add_driver+0xc8/0x290
    [&lt;ffffffff813745b6&gt;] driver_register+0x76/0x140
    [&lt;ffffffff812e0046&gt;] __pci_register_driver+0x66/0xe0
    [&lt;ffffffffa001b03a&gt;] serio_raw_poll+0x3a/0x60 [serio_raw]
    [&lt;ffffffff81002165&gt;] do_one_initcall+0x45/0x190
    [&lt;ffffffff810aa76b&gt;] sys_init_module+0xfb/0x250
    [&lt;ffffffff8157a142&gt;] system_call_fastpath+0x16/0x1b

 -&gt; (&amp;(&amp;mc-&gt;mca_lock)-&gt;rlock){+.-...} ops: 6 {
    HARDIRQ-ON-W at:
                                        [&lt;ffffffff8109ad86&gt;] __lock_acquire+0x7f6/0x1e10
                                        [&lt;ffffffff8109ca4d&gt;] lock_acquire+0x9d/0x130
                                        [&lt;ffffffff8157124b&gt;] _raw_spin_lock_bh+0x3b/0x70
                                        [&lt;ffffffff81532bd5&gt;] igmp6_group_added+0x45/0x1b0
                                        [&lt;ffffffff81533f2d&gt;] ipv6_dev_mc_inc+0x2cd/0x430
                                        [&lt;ffffffff81515e17&gt;] ipv6_add_dev+0x357/0x450
                                        [&lt;ffffffff81ce0d16&gt;] addrconf_init+0x4e/0x183
                                        [&lt;ffffffff81ce0ba1&gt;] inet6_init+0x191/0x2a6
                                        [&lt;ffffffff81002165&gt;] do_one_initcall+0x45/0x190
                                        [&lt;ffffffff81ca4d3f&gt;] kernel_init+0xe3/0x168
                                        [&lt;ffffffff8157b2e4&gt;] kernel_thread_helper+0x4/0x10
    IN-SOFTIRQ-W at:
                                        [&lt;ffffffff8109ad5e&gt;] __lock_acquire+0x7ce/0x1e10
                                        [&lt;ffffffff8109ca4d&gt;] lock_acquire+0x9d/0x130
                                        [&lt;ffffffff8157124b&gt;] _raw_spin_lock_bh+0x3b/0x70
                                        [&lt;ffffffff81531e9f&gt;] mld_ifc_timer_expire+0xff/0x280
                                        [&lt;ffffffff8106f2a9&gt;] run_timer_softirq+0x179/0x3f0
                                        [&lt;ffffffff810666d0&gt;] __do_softirq+0xc0/0x210
                                        [&lt;ffffffff8157b3dc&gt;] call_softirq+0x1c/0x30
                                        [&lt;ffffffff8100d42d&gt;] do_softirq+0xad/0xe0
                                        [&lt;ffffffff81066afe&gt;] irq_exit+0x9e/0xb0
                                        [&lt;ffffffff8157bd40&gt;] smp_apic_timer_interrupt+0x70/0x9b
                                        [&lt;ffffffff8157ab93&gt;] apic_timer_interrupt+0x13/0x20
                                        [&lt;ffffffff8149d857&gt;] rt_do_flush+0x87/0x2a0
                                        [&lt;ffffffff814a16b6&gt;] rt_cache_flush+0x46/0x60
                                        [&lt;ffffffff814e36e0&gt;] fib_disable_ip+0x40/0x60
                                        [&lt;ffffffff814e5447&gt;] fib_inetaddr_event+0xd7/0xe0
                                        [&lt;ffffffff81575c1c&gt;] notifier_call_chain+0x8c/0xc0
                                        [&lt;ffffffff810896e8&gt;] __blocking_notifier_call_chain+0x78/0xb0
                                        [&lt;ffffffff81089736&gt;] blocking_notifier_call_chain+0x16/0x20
                                        [&lt;ffffffff814d8021&gt;] __inet_del_ifa+0xf1/0x2e0
                                        [&lt;ffffffff814d8223&gt;] inet_del_ifa+0x13/0x20
                                        [&lt;ffffffff814da731&gt;] devinet_ioctl+0x501/0x800
                                        [&lt;ffffffff814db508&gt;] inet_ioctl+0x88/0xa0
                                        [&lt;ffffffff814541f0&gt;] sock_do_ioctl+0x30/0x70
                                        [&lt;ffffffff814542a9&gt;] sock_ioctl+0x79/0x2f0
                                        [&lt;ffffffff81188798&gt;] do_vfs_ioctl+0x98/0x570
                                        [&lt;ffffffff81188d01&gt;] sys_ioctl+0x91/0xa0
                                        [&lt;ffffffff8157a142&gt;] system_call_fastpath+0x16/0x1b
    INITIAL USE at:
                                       [&lt;ffffffff8109a9e9&gt;] __lock_acquire+0x459/0x1e10
                                       [&lt;ffffffff8109ca4d&gt;] lock_acquire+0x9d/0x130
                                       [&lt;ffffffff8157124b&gt;] _raw_spin_lock_bh+0x3b/0x70
                                       [&lt;ffffffff81532bd5&gt;] igmp6_group_added+0x45/0x1b0
                                       [&lt;ffffffff81533f2d&gt;] ipv6_dev_mc_inc+0x2cd/0x430
                                       [&lt;ffffffff81515e17&gt;] ipv6_add_dev+0x357/0x450
                                       [&lt;ffffffff81ce0d16&gt;] addrconf_init+0x4e/0x183
                                       [&lt;ffffffff81ce0ba1&gt;] inet6_init+0x191/0x2a6
                                       [&lt;ffffffff81002165&gt;] do_one_initcall+0x45/0x190
                                       [&lt;ffffffff81ca4d3f&gt;] kernel_init+0xe3/0x168
                                       [&lt;ffffffff8157b2e4&gt;] kernel_thread_helper+0x4/0x10
  }
  ... key      at: [&lt;ffffffff82801be2&gt;] __key.40877+0x0/0x8
  ... acquired at:
    [&lt;ffffffff810997bc&gt;] check_usage_forwards+0x9c/0x110
    [&lt;ffffffff8109a32c&gt;] mark_lock+0x19c/0x400
    [&lt;ffffffff8109ad5e&gt;] __lock_acquire+0x7ce/0x1e10
    [&lt;ffffffff8109ca4d&gt;] lock_acquire+0x9d/0x130
    [&lt;ffffffff8157124b&gt;] _raw_spin_lock_bh+0x3b/0x70
    [&lt;ffffffff81531e9f&gt;] mld_ifc_timer_expire+0xff/0x280
    [&lt;ffffffff8106f2a9&gt;] run_timer_softirq+0x179/0x3f0
    [&lt;ffffffff810666d0&gt;] __do_softirq+0xc0/0x210
    [&lt;ffffffff8157b3dc&gt;] call_softirq+0x1c/0x30
    [&lt;ffffffff8100d42d&gt;] do_softirq+0xad/0xe0
    [&lt;ffffffff81066afe&gt;] irq_exit+0x9e/0xb0
    [&lt;ffffffff8157bd40&gt;] smp_apic_timer_interrupt+0x70/0x9b
    [&lt;ffffffff8157ab93&gt;] apic_timer_interrupt+0x13/0x20
    [&lt;ffffffff8149d857&gt;] rt_do_flush+0x87/0x2a0
    [&lt;ffffffff814a16b6&gt;] rt_cache_flush+0x46/0x60
    [&lt;ffffffff814e36e0&gt;] fib_disable_ip+0x40/0x60
    [&lt;ffffffff814e5447&gt;] fib_inetaddr_event+0xd7/0xe0
    [&lt;ffffffff81575c1c&gt;] notifier_call_chain+0x8c/0xc0
    [&lt;ffffffff810896e8&gt;] __blocking_notifier_call_chain+0x78/0xb0
    [&lt;ffffffff81089736&gt;] blocking_notifier_call_chain+0x16/0x20
    [&lt;ffffffff814d8021&gt;] __inet_del_ifa+0xf1/0x2e0
    [&lt;ffffffff814d8223&gt;] inet_del_ifa+0x13/0x20
    [&lt;ffffffff814da731&gt;] devinet_ioctl+0x501/0x800
    [&lt;ffffffff814db508&gt;] inet_ioctl+0x88/0xa0
    [&lt;ffffffff814541f0&gt;] sock_do_ioctl+0x30/0x70
    [&lt;ffffffff814542a9&gt;] sock_ioctl+0x79/0x2f0
    [&lt;ffffffff81188798&gt;] do_vfs_ioctl+0x98/0x570
    [&lt;ffffffff81188d01&gt;] sys_ioctl+0x91/0xa0
    [&lt;ffffffff8157a142&gt;] system_call_fastpath+0x16/0x1b

 stack backtrace:
 Pid: 567, comm: ifconfig Not tainted 2.6.39-rc6+ #1
 Call Trace:
  &lt;IRQ&gt;  [&lt;ffffffff810996f6&gt;] print_irq_inversion_bug+0x146/0x170
  [&lt;ffffffff81099720&gt;] ? print_irq_inversion_bug+0x170/0x170
  [&lt;ffffffff810997bc&gt;] check_usage_forwards+0x9c/0x110
  [&lt;ffffffff8109a32c&gt;] mark_lock+0x19c/0x400
  [&lt;ffffffff8109ad5e&gt;] __lock_acquire+0x7ce/0x1e10
  [&lt;ffffffff8109a383&gt;] ? mark_lock+0x1f3/0x400
  [&lt;ffffffff8109b497&gt;] ? __lock_acquire+0xf07/0x1e10
  [&lt;ffffffff81012255&gt;] ? native_sched_clock+0x15/0x70
  [&lt;ffffffff8109ca4d&gt;] lock_acquire+0x9d/0x130
  [&lt;ffffffff81531e9f&gt;] ? mld_ifc_timer_expire+0xff/0x280
  [&lt;ffffffff8109759d&gt;] ? lock_release_holdtime+0x3d/0x1a0
  [&lt;ffffffff8157124b&gt;] _raw_spin_lock_bh+0x3b/0x70
  [&lt;ffffffff81531e9f&gt;] ? mld_ifc_timer_expire+0xff/0x280
  [&lt;ffffffff8157170b&gt;] ? _raw_spin_unlock+0x2b/0x40
  [&lt;ffffffff81531e9f&gt;] mld_ifc_timer_expire+0xff/0x280
  [&lt;ffffffff8106f2a9&gt;] run_timer_softirq+0x179/0x3f0
  [&lt;ffffffff8106f21b&gt;] ? run_timer_softirq+0xeb/0x3f0
  [&lt;ffffffff810122b9&gt;] ? sched_clock+0x9/0x10
  [&lt;ffffffff81531da0&gt;] ? mld_gq_timer_expire+0x30/0x30
  [&lt;ffffffff810666d0&gt;] __do_softirq+0xc0/0x210
  [&lt;ffffffff8109455f&gt;] ? tick_program_event+0x1f/0x30
  [&lt;ffffffff8157b3dc&gt;] call_softirq+0x1c/0x30
  [&lt;ffffffff8100d42d&gt;] do_softirq+0xad/0xe0
  [&lt;ffffffff81066afe&gt;] irq_exit+0x9e/0xb0
  [&lt;ffffffff8157bd40&gt;] smp_apic_timer_interrupt+0x70/0x9b
  [&lt;ffffffff8157ab93&gt;] apic_timer_interrupt+0x13/0x20
  &lt;EOI&gt;  [&lt;ffffffff81571f14&gt;] ? retint_restore_args+0x13/0x13
  [&lt;ffffffff810974a7&gt;] ? lock_is_held+0x17/0xd0
  [&lt;ffffffff8149d857&gt;] rt_do_flush+0x87/0x2a0
  [&lt;ffffffff814a16b6&gt;] rt_cache_flush+0x46/0x60
  [&lt;ffffffff814e36e0&gt;] fib_disable_ip+0x40/0x60
  [&lt;ffffffff814e5447&gt;] fib_inetaddr_event+0xd7/0xe0
  [&lt;ffffffff81575c1c&gt;] notifier_call_chain+0x8c/0xc0
  [&lt;ffffffff810896e8&gt;] __blocking_notifier_call_chain+0x78/0xb0
  [&lt;ffffffff81089736&gt;] blocking_notifier_call_chain+0x16/0x20
  [&lt;ffffffff814d8021&gt;] __inet_del_ifa+0xf1/0x2e0
  [&lt;ffffffff814d8223&gt;] inet_del_ifa+0x13/0x20
  [&lt;ffffffff814da731&gt;] devinet_ioctl+0x501/0x800
  [&lt;ffffffff8108a3af&gt;] ? local_clock+0x6f/0x80
  [&lt;ffffffff81575898&gt;] ? do_page_fault+0x268/0x560
  [&lt;ffffffff814db508&gt;] inet_ioctl+0x88/0xa0
  [&lt;ffffffff814541f0&gt;] sock_do_ioctl+0x30/0x70
  [&lt;ffffffff814542a9&gt;] sock_ioctl+0x79/0x2f0
  [&lt;ffffffff810dfe87&gt;] ? __call_rcu+0xa7/0x190
  [&lt;ffffffff81188798&gt;] do_vfs_ioctl+0x98/0x570
  [&lt;ffffffff8117737e&gt;] ? fget_light+0x33e/0x430
  [&lt;ffffffff81571ef9&gt;] ? retint_swapgs+0x13/0x1b
  [&lt;ffffffff81188d01&gt;] sys_ioctl+0x91/0xa0
  [&lt;ffffffff8157a142&gt;] system_call_fastpath+0x16/0x1b

Signed-off-by: Roland Dreier &lt;roland@purestorage.com&gt;
Signed-off-by: Shreyas N Bhatewara &lt;sbhatewara@vmware.com&gt;
Signed-off-by: Scott J. Goldman &lt;scottjg@vmware.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix common misspellings</title>
<updated>2011-03-31T14:26:23+00:00</updated>
<author>
<name>Lucas De Marchi</name>
<email>lucas.demarchi@profusion.mobi</email>
</author>
<published>2011-03-31T01:57:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=25985edcedea6396277003854657b5f3cb31a628'/>
<id>25985edcedea6396277003854657b5f3cb31a628</id>
<content type='text'>
Fixes generated by 'codespell' and manually reviewed.

Signed-off-by: Lucas De Marchi &lt;lucas.demarchi@profusion.mobi&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Fixes generated by 'codespell' and manually reviewed.

Signed-off-by: Lucas De Marchi &lt;lucas.demarchi@profusion.mobi&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>net: fix ethtool-&gt;set_flags not intended -EINVAL return value</title>
<updated>2011-03-28T06:35:24+00:00</updated>
<author>
<name>Stanislaw Gruszka</name>
<email>sgruszka@redhat.com</email>
</author>
<published>2011-03-22T23:54:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=673e63c688f43104c73aad8ea4237f7ad41fa14d'/>
<id>673e63c688f43104c73aad8ea4237f7ad41fa14d</id>
<content type='text'>
After commit d5dbda23804156ae6f35025ade5307a49d1db6d7 "ethtool: Add
support for vlan accleration.", drivers that have NETIF_F_HW_VLAN_TX,
and/or NETIF_F_HW_VLAN_RX feature, but do not allow enable/disable vlan
acceleration via ethtool set_flags, always return -EINVAL from that
function. Fix by returning -EINVAL only if requested features do not
match current settings and can not be changed by driver.

Change any driver that define ethtool-&gt;set_flags to use
ethtool_invalid_flags() to avoid similar problems in the future
(also on drivers that do not have the problem).

Tested with modified (to reproduce this bug) myri10ge driver.

Cc: stable@kernel.org # 2.6.37+
Signed-off-by: Stanislaw Gruszka &lt;sgruszka@redhat.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
After commit d5dbda23804156ae6f35025ade5307a49d1db6d7 "ethtool: Add
support for vlan accleration.", drivers that have NETIF_F_HW_VLAN_TX,
and/or NETIF_F_HW_VLAN_RX feature, but do not allow enable/disable vlan
acceleration via ethtool set_flags, always return -EINVAL from that
function. Fix by returning -EINVAL only if requested features do not
match current settings and can not be changed by driver.

Change any driver that define ethtool-&gt;set_flags to use
ethtool_invalid_flags() to avoid similar problems in the future
(also on drivers that do not have the problem).

Tested with modified (to reproduce this bug) myri10ge driver.

Cc: stable@kernel.org # 2.6.37+
Signed-off-by: Stanislaw Gruszka &lt;sgruszka@redhat.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>vmxnet3: Dont allocate extra MSI-x vectors</title>
<updated>2011-01-16T05:21:14+00:00</updated>
<author>
<name>Shreyas Bhatewara</name>
<email>sbhatewara@vmware.com</email>
</author>
<published>2011-01-14T15:00:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=7e96fbf2320782fb8f0970928026105cd34b41bd'/>
<id>7e96fbf2320782fb8f0970928026105cd34b41bd</id>
<content type='text'>
In case of single tx and rx queues, three MSI-x vectors are allocated instead
of two. This patch fixes that.

Signed-off-by: Shreyas N Bhatewara &lt;sbhatewara@vmware.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
In case of single tx and rx queues, three MSI-x vectors are allocated instead
of two. This patch fixes that.

Signed-off-by: Shreyas N Bhatewara &lt;sbhatewara@vmware.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>vmxnet3: Add locking for access to command register</title>
<updated>2011-01-16T05:21:14+00:00</updated>
<author>
<name>Shreyas Bhatewara</name>
<email>sbhatewara@vmware.com</email>
</author>
<published>2011-01-14T14:59:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=83d0feffc5695d7dc24c6b8dac9ab265533beb78'/>
<id>83d0feffc5695d7dc24c6b8dac9ab265533beb78</id>
<content type='text'>
Access to cmd register is racey, especially in smp environments. Protect
it using a spinlock.

Signed-off-by: Matthieu Bucchianeri &lt;matthieu@vmware.com&gt;
Signed-off-by: Shreyas N Bhatewara &lt;sbhatewara@vmware.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Access to cmd register is racey, especially in smp environments. Protect
it using a spinlock.

Signed-off-by: Matthieu Bucchianeri &lt;matthieu@vmware.com&gt;
Signed-off-by: Shreyas N Bhatewara &lt;sbhatewara@vmware.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>vmxnet3: Disable napi in suspend, reenable in resume.</title>
<updated>2011-01-16T05:21:13+00:00</updated>
<author>
<name>Shreyas Bhatewara</name>
<email>sbhatewara@vmware.com</email>
</author>
<published>2011-01-14T14:59:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=51956cd68b0c3039968485317b77a89dfec95eab'/>
<id>51956cd68b0c3039968485317b77a89dfec95eab</id>
<content type='text'>
There is a small possibility of a race where the suspend routine gets
called, while a napi callback is still pending and when that comes up,
it enables interrupts which just got disabled in the suspend routine.
This change adds napi disable call in suspend and enable in resume to
avoid race.

Signed-off-by: Shreyas N Bhatewara &lt;sbhatewara@vmware.com&gt;
Acked-by: Dmitry Torokhov &lt;dtor@vmware.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
There is a small possibility of a race where the suspend routine gets
called, while a napi callback is still pending and when that comes up,
it enables interrupts which just got disabled in the suspend routine.
This change adds napi disable call in suspend and enable in resume to
avoid race.

Signed-off-by: Shreyas N Bhatewara &lt;sbhatewara@vmware.com&gt;
Acked-by: Dmitry Torokhov &lt;dtor@vmware.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>vmxnet3: Make ethtool handlers multiqueue aware</title>
<updated>2011-01-16T05:21:13+00:00</updated>
<author>
<name>Shreyas Bhatewara</name>
<email>sbhatewara@vmware.com</email>
</author>
<published>2011-01-14T14:59:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=76d39dae0ad47f51291b4dd146b10d71e8ae02f7'/>
<id>76d39dae0ad47f51291b4dd146b10d71e8ae02f7</id>
<content type='text'>
Show per-queue stats in ethtool -S output for vmxnet3 interface. Register dump
of ethtool should dump registers for all tx and rx queues.

Signed-off-by: Shreyas N Bhatewara &lt;sbhatewara@vmware.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Show per-queue stats in ethtool -S output for vmxnet3 interface. Register dump
of ethtool should dump registers for all tx and rx queues.

Signed-off-by: Shreyas N Bhatewara &lt;sbhatewara@vmware.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>vmxnet3: Provide required number of bytes in first SG buffer</title>
<updated>2011-01-16T05:21:12+00:00</updated>
<author>
<name>Shreyas Bhatewara</name>
<email>sbhatewara@vmware.com</email>
</author>
<published>2011-01-14T14:59:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=39d4a96fd7d2926e46151adbd18b810aeeea8ec0'/>
<id>39d4a96fd7d2926e46151adbd18b810aeeea8ec0</id>
<content type='text'>
This is a performance enhancement fix. vmxnet3 device performs better when
provided with at least 54 bytes (ethernet 14 + IP 20+ TCP 20) in the first SG
buffer. For UDP packets driver provides lesser than that in first sg. This
change fixes the same. Also avoid the redundant pskb_may_pull() call.

Signed-off-by: Shreyas N Bhatewara &lt;sbhatewara@vmware.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This is a performance enhancement fix. vmxnet3 device performs better when
provided with at least 54 bytes (ethernet 14 + IP 20+ TCP 20) in the first SG
buffer. For UDP packets driver provides lesser than that in first sg. This
change fixes the same. Also avoid the redundant pskb_may_pull() call.

Signed-off-by: Shreyas N Bhatewara &lt;sbhatewara@vmware.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>vmxnet3: Enable HW Rx VLAN stripping by default</title>
<updated>2011-01-16T05:21:12+00:00</updated>
<author>
<name>Shreyas Bhatewara</name>
<email>sbhatewara@vmware.com</email>
</author>
<published>2011-01-14T14:59:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=54da3d00f6e781f69cb8726757d190704b702a8e'/>
<id>54da3d00f6e781f69cb8726757d190704b702a8e</id>
<content type='text'>
Make hw vlan tag stripping as enabled by default. Thereby remove
the code to conditionally enable it later.

Signed-off-by: Guolin Yang &lt;gyang@vmware.com&gt;
Signed-off-by: Shreyas N Bhatewara &lt;sbhatewara@vmware.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Make hw vlan tag stripping as enabled by default. Thereby remove
the code to conditionally enable it later.

Signed-off-by: Guolin Yang &lt;gyang@vmware.com&gt;
Signed-off-by: Shreyas N Bhatewara &lt;sbhatewara@vmware.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
</feed>
