<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux.git/drivers/net, branch v3.16-rc5</title>
<subtitle>Linux kernel source tree</subtitle>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/'/>
<entry>
<title>net: allwinner: emac: Add missing free_irq</title>
<updated>2014-06-25T23:31:17+00:00</updated>
<author>
<name>Maxime Ripard</name>
<email>maxime.ripard@free-electrons.com</email>
</author>
<published>2014-06-23T20:49:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=b91113282bf44df46aba374a0b8f88a75bfd4b3f'/>
<id>b91113282bf44df46aba374a0b8f88a75bfd4b3f</id>
<content type='text'>
If the mdio probe function fails in emac_open, the interrupt we just requested
isn't freed. If emac_open is called again, for example because we try to set up
the interface again, the kernel will oops because the interrupt wasn't properly
released.

Signed-off-by: Maxime Ripard &lt;maxime.ripard@free-electrons.com&gt;
Cc: &lt;stable@vger.kernel.org&gt; # 3.11+
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
If the mdio probe function fails in emac_open, the interrupt we just requested
isn't freed. If emac_open is called again, for example because we try to set up
the interface again, the kernel will oops because the interrupt wasn't properly
released.

Signed-off-by: Maxime Ripard &lt;maxime.ripard@free-electrons.com&gt;
Cc: &lt;stable@vger.kernel.org&gt; # 3.11+
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>cxgb4: use dev_port to identify ports</title>
<updated>2014-06-25T23:01:54+00:00</updated>
<author>
<name>Thadeu Lima de Souza Cascardo</name>
<email>cascardo@linux.vnet.ibm.com</email>
</author>
<published>2014-06-21T12:48:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=40c9f8ab6c0f3e3c36dc3fb4ec81a25a0a207789'/>
<id>40c9f8ab6c0f3e3c36dc3fb4ec81a25a0a207789</id>
<content type='text'>
Commit 3f85944fe207d0225ef21a2c0951d4946fc9a95d ("net: Add sysfs file
for port number") introduce dev_port to network devices. cxgb4 adapters
have multiple ports on the same PCI function, and used dev_id to
identify those ports. That use was removed by commit
8c367fcbe6549195d2eb11e62bea233f811aad41 ("cxgb4: Do not set
net_device::dev_id to VI index"), since dev_id should be used only when
devices share the same MAC address.

Using dev_port for cxgb4 allows different ports on the same PCI function
to be identified.

Signed-off-by: Thadeu Lima de Souza Cascardo &lt;cascardo@linux.vnet.ibm.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>
Commit 3f85944fe207d0225ef21a2c0951d4946fc9a95d ("net: Add sysfs file
for port number") introduce dev_port to network devices. cxgb4 adapters
have multiple ports on the same PCI function, and used dev_id to
identify those ports. That use was removed by commit
8c367fcbe6549195d2eb11e62bea233f811aad41 ("cxgb4: Do not set
net_device::dev_id to VI index"), since dev_id should be used only when
devices share the same MAC address.

Using dev_port for cxgb4 allows different ports on the same PCI function
to be identified.

Signed-off-by: Thadeu Lima de Souza Cascardo &lt;cascardo@linux.vnet.ibm.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>xen-netback: bookkeep number of active queues in our own module</title>
<updated>2014-06-25T22:59:47+00:00</updated>
<author>
<name>Wei Liu</name>
<email>wei.liu2@citrix.com</email>
</author>
<published>2014-06-23T09:50:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=f7b50c4e7ced702d80d3b873d81a2cdafb580f13'/>
<id>f7b50c4e7ced702d80d3b873d81a2cdafb580f13</id>
<content type='text'>
The original code uses netdev-&gt;real_num_tx_queues to bookkeep number of
queues and invokes netif_set_real_num_tx_queues to set the number of
queues. However, netif_set_real_num_tx_queues doesn't allow
real_num_tx_queues to be smaller than 1, which means setting the number
to 0 will not work and real_num_tx_queues is untouched.

This is bogus when xenvif_free is invoked before any number of queues is
allocated. That function needs to iterate through all queues to free
resources. Using the wrong number of queues results in NULL pointer
dereference.

So we bookkeep the number of queues in xen-netback to solve this
problem. This fixes a regression introduced by multiqueue patchset in
3.16-rc1.

There's another bug in original code that the real number of RX queues
is never set. In current Xen multiqueue design, the number of TX queues
and RX queues are in fact the same. We need to set the numbers of TX and
RX queues to the same value.

Also remove xenvif_select_queue and leave queue selection to core
driver, as suggested by David Miller.

Reported-by: Boris Ostrovsky &lt;boris.ostrovsky@oracle.com&gt;
Signed-off-by: Wei Liu &lt;wei.liu2@citrix.com&gt;
CC: Ian Campbell &lt;ian.campbell@citrix.com&gt;
CC: Paul Durrant &lt;paul.durrant@citrix.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>
The original code uses netdev-&gt;real_num_tx_queues to bookkeep number of
queues and invokes netif_set_real_num_tx_queues to set the number of
queues. However, netif_set_real_num_tx_queues doesn't allow
real_num_tx_queues to be smaller than 1, which means setting the number
to 0 will not work and real_num_tx_queues is untouched.

This is bogus when xenvif_free is invoked before any number of queues is
allocated. That function needs to iterate through all queues to free
resources. Using the wrong number of queues results in NULL pointer
dereference.

So we bookkeep the number of queues in xen-netback to solve this
problem. This fixes a regression introduced by multiqueue patchset in
3.16-rc1.

There's another bug in original code that the real number of RX queues
is never set. In current Xen multiqueue design, the number of TX queues
and RX queues are in fact the same. We need to set the numbers of TX and
RX queues to the same value.

Also remove xenvif_select_queue and leave queue selection to core
driver, as suggested by David Miller.

Reported-by: Boris Ostrovsky &lt;boris.ostrovsky@oracle.com&gt;
Signed-off-by: Wei Liu &lt;wei.liu2@citrix.com&gt;
CC: Ian Campbell &lt;ian.campbell@citrix.com&gt;
CC: Paul Durrant &lt;paul.durrant@citrix.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>tg3: Change nvram command timeout value to 50ms</title>
<updated>2014-06-25T22:56:21+00:00</updated>
<author>
<name>Prashant Sreedharan</name>
<email>prashant@broadcom.com</email>
</author>
<published>2014-06-21T06:28:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=66c965f5e1b702da2b5871a909b47034c62195d8'/>
<id>66c965f5e1b702da2b5871a909b47034c62195d8</id>
<content type='text'>
Commit 506724c463fcd63477a5e404728a980b71f80bb7 "tg3: Override clock,
link aware and link idle mode during NVRAM dump" changed the timeout
value for nvram command execution from 100ms to 1ms. But the 1ms
timeout value was only sufficient for nvram read operations but not
write operations for most of the devices supported by tg3 driver.
This patch sets the MAX to 50ms. Also it uses usleep_range instead
of udelay.

Signed-off-by: Prashant Sreedharan &lt;prashant@broadcom.com&gt;
Signed-off-by: Michael Chan &lt;mchan@broadcom.com&gt;
Suggested-by: David Miller &lt;davem@davemloft.net&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>
Commit 506724c463fcd63477a5e404728a980b71f80bb7 "tg3: Override clock,
link aware and link idle mode during NVRAM dump" changed the timeout
value for nvram command execution from 100ms to 1ms. But the 1ms
timeout value was only sufficient for nvram read operations but not
write operations for most of the devices supported by tg3 driver.
This patch sets the MAX to 50ms. Also it uses usleep_range instead
of udelay.

Signed-off-by: Prashant Sreedharan &lt;prashant@broadcom.com&gt;
Signed-off-by: Michael Chan &lt;mchan@broadcom.com&gt;
Suggested-by: David Miller &lt;davem@davemloft.net&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>cxgb4: Not need to hold the adap_rcu_lock lock when read adap_rcu_list</title>
<updated>2014-06-24T22:51:49+00:00</updated>
<author>
<name>Li RongQing</name>
<email>roy.qing.li@gmail.com</email>
</author>
<published>2014-06-20T09:32:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=ee9a33b2631edb50e3cd2937af7c0f9add5d2e2c'/>
<id>ee9a33b2631edb50e3cd2937af7c0f9add5d2e2c</id>
<content type='text'>
cxgb4_netdev maybe lead to dead lock, since it uses a spin lock, and be called
in both thread and softirq context, but not disable BH, the lockdep report is
below; In fact, cxgb4_netdev only reads adap_rcu_list with RCU protection, so
not need to hold spin lock again.
	=================================
	[ INFO: inconsistent lock state ]
	3.14.7+ #24 Tainted: G         C O
	---------------------------------
	inconsistent {SOFTIRQ-ON-W} -&gt; {IN-SOFTIRQ-W} usage.
	radvd/3794 [HC0[0]:SC1[1]:HE1:SE0] takes:
	 (adap_rcu_lock){+.?...}, at: [&lt;ffffffffa09989ea&gt;] clip_add+0x2c/0x116 [cxgb4]
	{SOFTIRQ-ON-W} state was registered at:
	  [&lt;ffffffff810fca81&gt;] __lock_acquire+0x34a/0xe48
	  [&lt;ffffffff810fd98b&gt;] lock_acquire+0x82/0x9d
	  [&lt;ffffffff815d6ff8&gt;] _raw_spin_lock+0x34/0x43
	  [&lt;ffffffffa09989ea&gt;] clip_add+0x2c/0x116 [cxgb4]
	  [&lt;ffffffffa0998beb&gt;] cxgb4_inet6addr_handler+0x117/0x12c [cxgb4]
	  [&lt;ffffffff815da98b&gt;] notifier_call_chain+0x32/0x5c
	  [&lt;ffffffff815da9f9&gt;] __atomic_notifier_call_chain+0x44/0x6e
	  [&lt;ffffffff815daa32&gt;] atomic_notifier_call_chain+0xf/0x11
	  [&lt;ffffffff815b1356&gt;] inet6addr_notifier_call_chain+0x16/0x18
	  [&lt;ffffffffa01f72e5&gt;] ipv6_add_addr+0x404/0x46e [ipv6]
	  [&lt;ffffffffa01f8df0&gt;] addrconf_add_linklocal+0x5f/0x95 [ipv6]
	  [&lt;ffffffffa01fc3e9&gt;] addrconf_notify+0x632/0x841 [ipv6]
	  [&lt;ffffffff815da98b&gt;] notifier_call_chain+0x32/0x5c
	  [&lt;ffffffff810e09a1&gt;] __raw_notifier_call_chain+0x9/0xb
	  [&lt;ffffffff810e09b2&gt;] raw_notifier_call_chain+0xf/0x11
	  [&lt;ffffffff8151b3b7&gt;] call_netdevice_notifiers_info+0x4e/0x56
	  [&lt;ffffffff8151b3d0&gt;] call_netdevice_notifiers+0x11/0x13
	  [&lt;ffffffff8151c0a6&gt;] netdev_state_change+0x1f/0x38
	  [&lt;ffffffff8152f004&gt;] linkwatch_do_dev+0x3b/0x49
	  [&lt;ffffffff8152f184&gt;] __linkwatch_run_queue+0x10b/0x144
	  [&lt;ffffffff8152f1dd&gt;] linkwatch_event+0x20/0x27
	  [&lt;ffffffff810d7bc0&gt;] process_one_work+0x1cb/0x2ee
	  [&lt;ffffffff810d7e3b&gt;] worker_thread+0x12e/0x1fc
	  [&lt;ffffffff810dd391&gt;] kthread+0xc4/0xcc
	  [&lt;ffffffff815dc48c&gt;] ret_from_fork+0x7c/0xb0
	irq event stamp: 3388
	hardirqs last  enabled at (3388): [&lt;ffffffff810c6c85&gt;]
	__local_bh_enable_ip+0xaa/0xd9
	hardirqs last disabled at (3387): [&lt;ffffffff810c6c2d&gt;]
	__local_bh_enable_ip+0x52/0xd9
	softirqs last  enabled at (3288): [&lt;ffffffffa01f1d5b&gt;]
	rcu_read_unlock_bh+0x0/0x2f [ipv6]
	softirqs last disabled at (3289): [&lt;ffffffff815ddafc&gt;]
	do_softirq_own_stack+0x1c/0x30

	other info that might help us debug this:
	 Possible unsafe locking scenario:

	       CPU0
	       ----
	  lock(adap_rcu_lock);
	  &lt;Interrupt&gt;
	    lock(adap_rcu_lock);

	 *** DEADLOCK ***

	5 locks held by radvd/3794:
	 #0:  (sk_lock-AF_INET6){+.+.+.}, at: [&lt;ffffffffa020b85a&gt;]
	rawv6_sendmsg+0x74b/0xa4d [ipv6]
	 #1:  (rcu_read_lock){.+.+..}, at: [&lt;ffffffff8151ac6b&gt;]
	rcu_lock_acquire+0x0/0x29
	 #2:  (rcu_read_lock){.+.+..}, at: [&lt;ffffffffa01f4cca&gt;]
	rcu_lock_acquire.constprop.16+0x0/0x30 [ipv6]
	 #3:  (rcu_read_lock){.+.+..}, at: [&lt;ffffffff810e09b4&gt;]
	rcu_lock_acquire+0x0/0x29
	 #4:  (rcu_read_lock){.+.+..}, at: [&lt;ffffffffa0998782&gt;]
	rcu_lock_acquire.constprop.40+0x0/0x30 [cxgb4]

	stack backtrace:
	CPU: 7 PID: 3794 Comm: radvd Tainted: G         C O 3.14.7+ #24
	Hardware name: Supermicro X7DBU/X7DBU, BIOS 6.00 12/03/2007
	 ffffffff81f15990 ffff88012fdc36a8 ffffffff815d0016 0000000000000006
	 ffff8800c80dc2a0 ffff88012fdc3708 ffffffff815cc727 0000000000000001
	 0000000000000001 ffff880100000000 ffffffff81015b02 ffff8800c80dcb58
	Call Trace:
	 &lt;IRQ&gt;  [&lt;ffffffff815d0016&gt;] dump_stack+0x4e/0x71
	 [&lt;ffffffff815cc727&gt;] print_usage_bug+0x1ec/0x1fd
	 [&lt;ffffffff81015b02&gt;] ? save_stack_trace+0x27/0x44
	 [&lt;ffffffff810fbfaa&gt;] ? check_usage_backwards+0xa0/0xa0
	 [&lt;ffffffff810fc640&gt;] mark_lock+0x11b/0x212
	 [&lt;ffffffff810fca0b&gt;] __lock_acquire+0x2d4/0xe48
	 [&lt;ffffffff810fbfaa&gt;] ? check_usage_backwards+0xa0/0xa0
	 [&lt;ffffffff810fbff6&gt;] ? check_usage_forwards+0x4c/0xa6
	 [&lt;ffffffff810c6c8a&gt;] ? __local_bh_enable_ip+0xaf/0xd9
	 [&lt;ffffffff810fd98b&gt;] lock_acquire+0x82/0x9d
	 [&lt;ffffffffa09989ea&gt;] ? clip_add+0x2c/0x116 [cxgb4]
	 [&lt;ffffffffa0998782&gt;] ? rcu_read_unlock+0x23/0x23 [cxgb4]
	 [&lt;ffffffff815d6ff8&gt;] _raw_spin_lock+0x34/0x43
	 [&lt;ffffffffa09989ea&gt;] ? clip_add+0x2c/0x116 [cxgb4]
	 [&lt;ffffffffa09987b0&gt;] ? rcu_lock_acquire.constprop.40+0x2e/0x30 [cxgb4]
	 [&lt;ffffffffa0998782&gt;] ? rcu_read_unlock+0x23/0x23 [cxgb4]
	 [&lt;ffffffffa09989ea&gt;] clip_add+0x2c/0x116 [cxgb4]
	 [&lt;ffffffffa0998beb&gt;] cxgb4_inet6addr_handler+0x117/0x12c [cxgb4]
	 [&lt;ffffffff810fd99d&gt;] ? lock_acquire+0x94/0x9d
	 [&lt;ffffffff810e09b4&gt;] ? raw_notifier_call_chain+0x11/0x11
	 [&lt;ffffffff815da98b&gt;] notifier_call_chain+0x32/0x5c
	 [&lt;ffffffff815da9f9&gt;] __atomic_notifier_call_chain+0x44/0x6e
	 [&lt;ffffffff815daa32&gt;] atomic_notifier_call_chain+0xf/0x11
	 [&lt;ffffffff815b1356&gt;] inet6addr_notifier_call_chain+0x16/0x18
	 [&lt;ffffffffa01f72e5&gt;] ipv6_add_addr+0x404/0x46e [ipv6]
	 [&lt;ffffffff810fde6a&gt;] ? trace_hardirqs_on+0xd/0xf
	 [&lt;ffffffffa01fb634&gt;] addrconf_prefix_rcv+0x385/0x6ea [ipv6]
	 [&lt;ffffffffa0207950&gt;] ndisc_rcv+0x9d3/0xd76 [ipv6]
	 [&lt;ffffffffa020d536&gt;] icmpv6_rcv+0x592/0x67b [ipv6]
	 [&lt;ffffffff810c6c85&gt;] ? __local_bh_enable_ip+0xaa/0xd9
	 [&lt;ffffffff810c6c85&gt;] ? __local_bh_enable_ip+0xaa/0xd9
	 [&lt;ffffffff810fd8dc&gt;] ? lock_release+0x14e/0x17b
	 [&lt;ffffffffa020df97&gt;] ? rcu_read_unlock+0x21/0x23 [ipv6]
	 [&lt;ffffffff8150df52&gt;] ? rcu_read_unlock+0x23/0x23
	 [&lt;ffffffffa01f4ede&gt;] ip6_input_finish+0x1e4/0x2fc [ipv6]
	 [&lt;ffffffffa01f540b&gt;] ip6_input+0x33/0x38 [ipv6]
	 [&lt;ffffffffa01f5557&gt;] ip6_mc_input+0x147/0x160 [ipv6]
	 [&lt;ffffffffa01f4ba3&gt;] ip6_rcv_finish+0x7c/0x81 [ipv6]
	 [&lt;ffffffffa01f5397&gt;] ipv6_rcv+0x3a1/0x3e2 [ipv6]
	 [&lt;ffffffff8151ef96&gt;] __netif_receive_skb_core+0x4ab/0x511
	 [&lt;ffffffff810fdc94&gt;] ? mark_held_locks+0x71/0x99
	 [&lt;ffffffff8151f0c0&gt;] ? process_backlog+0x69/0x15e
	 [&lt;ffffffff8151f045&gt;] __netif_receive_skb+0x49/0x5b
	 [&lt;ffffffff8151f0cf&gt;] process_backlog+0x78/0x15e
	 [&lt;ffffffff8151f571&gt;] ? net_rx_action+0x1a2/0x1cc
	 [&lt;ffffffff8151f47b&gt;] net_rx_action+0xac/0x1cc
	 [&lt;ffffffff810c69b7&gt;] ? __do_softirq+0xad/0x218
	 [&lt;ffffffff810c69ff&gt;] __do_softirq+0xf5/0x218
	 [&lt;ffffffff815ddafc&gt;] do_softirq_own_stack+0x1c/0x30
	 &lt;EOI&gt;  [&lt;ffffffff810c6bb6&gt;] do_softirq+0x38/0x5d
	 [&lt;ffffffffa01f1d5b&gt;] ? ip6_copy_metadata+0x156/0x156 [ipv6]
	 [&lt;ffffffff810c6c78&gt;] __local_bh_enable_ip+0x9d/0xd9
	 [&lt;ffffffffa01f1d88&gt;] rcu_read_unlock_bh+0x2d/0x2f [ipv6]
	 [&lt;ffffffffa01f28b4&gt;] ip6_finish_output2+0x381/0x3d8 [ipv6]
	 [&lt;ffffffffa01f49ef&gt;] ip6_finish_output+0x6e/0x73 [ipv6]
	 [&lt;ffffffffa01f4a70&gt;] ip6_output+0x7c/0xa8 [ipv6]
	 [&lt;ffffffff815b1bfa&gt;] dst_output+0x18/0x1c
	 [&lt;ffffffff815b1c9e&gt;] ip6_local_out+0x1c/0x21
	 [&lt;ffffffffa01f2489&gt;] ip6_push_pending_frames+0x37d/0x427 [ipv6]
	 [&lt;ffffffff81558af8&gt;] ? skb_orphan+0x39/0x39
	 [&lt;ffffffffa020b85a&gt;] ? rawv6_sendmsg+0x74b/0xa4d [ipv6]
	 [&lt;ffffffffa020ba51&gt;] rawv6_sendmsg+0x942/0xa4d [ipv6]
	 [&lt;ffffffff81584cd2&gt;] inet_sendmsg+0x3d/0x66
	 [&lt;ffffffff81508930&gt;] __sock_sendmsg_nosec+0x25/0x27
	 [&lt;ffffffff8150b0d7&gt;] sock_sendmsg+0x5a/0x7b
	 [&lt;ffffffff810fd8dc&gt;] ? lock_release+0x14e/0x17b
	 [&lt;ffffffff8116d756&gt;] ? might_fault+0x9e/0xa5
	 [&lt;ffffffff8116d70d&gt;] ? might_fault+0x55/0xa5
	 [&lt;ffffffff81508cb1&gt;] ? copy_from_user+0x2a/0x2c
	 [&lt;ffffffff8150b70c&gt;] ___sys_sendmsg+0x226/0x2d9
	 [&lt;ffffffff810fcd25&gt;] ? __lock_acquire+0x5ee/0xe48
	 [&lt;ffffffff810fde01&gt;] ? trace_hardirqs_on_caller+0x145/0x1a1
	 [&lt;ffffffff8118efcb&gt;] ? slab_free_hook.isra.71+0x50/0x59
	 [&lt;ffffffff8115c81f&gt;] ? release_pages+0xbc/0x181
	 [&lt;ffffffff810fd99d&gt;] ? lock_acquire+0x94/0x9d
	 [&lt;ffffffff81115e97&gt;] ? read_seqcount_begin.constprop.25+0x73/0x90
	 [&lt;ffffffff8150c408&gt;] __sys_sendmsg+0x3d/0x5b
	 [&lt;ffffffff8150c433&gt;] SyS_sendmsg+0xd/0x19
	 [&lt;ffffffff815dc53d&gt;] system_call_fastpath+0x1a/0x1f

Reported-by: Ben Greear &lt;greearb@candelatech.com&gt;
Cc: Casey Leedom &lt;leedom@chelsio.com&gt;
Cc: Hariprasad Shenai &lt;hariprasad@chelsio.com&gt;
Signed-off-by: Li RongQing &lt;roy.qing.li@gmail.com&gt;
Signed-off-by: Eric Dumazet &lt;eric.dumazet@gmail.com&gt;
Acked-by: Casey Leedom &lt;leedom@chelsio.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>
cxgb4_netdev maybe lead to dead lock, since it uses a spin lock, and be called
in both thread and softirq context, but not disable BH, the lockdep report is
below; In fact, cxgb4_netdev only reads adap_rcu_list with RCU protection, so
not need to hold spin lock again.
	=================================
	[ INFO: inconsistent lock state ]
	3.14.7+ #24 Tainted: G         C O
	---------------------------------
	inconsistent {SOFTIRQ-ON-W} -&gt; {IN-SOFTIRQ-W} usage.
	radvd/3794 [HC0[0]:SC1[1]:HE1:SE0] takes:
	 (adap_rcu_lock){+.?...}, at: [&lt;ffffffffa09989ea&gt;] clip_add+0x2c/0x116 [cxgb4]
	{SOFTIRQ-ON-W} state was registered at:
	  [&lt;ffffffff810fca81&gt;] __lock_acquire+0x34a/0xe48
	  [&lt;ffffffff810fd98b&gt;] lock_acquire+0x82/0x9d
	  [&lt;ffffffff815d6ff8&gt;] _raw_spin_lock+0x34/0x43
	  [&lt;ffffffffa09989ea&gt;] clip_add+0x2c/0x116 [cxgb4]
	  [&lt;ffffffffa0998beb&gt;] cxgb4_inet6addr_handler+0x117/0x12c [cxgb4]
	  [&lt;ffffffff815da98b&gt;] notifier_call_chain+0x32/0x5c
	  [&lt;ffffffff815da9f9&gt;] __atomic_notifier_call_chain+0x44/0x6e
	  [&lt;ffffffff815daa32&gt;] atomic_notifier_call_chain+0xf/0x11
	  [&lt;ffffffff815b1356&gt;] inet6addr_notifier_call_chain+0x16/0x18
	  [&lt;ffffffffa01f72e5&gt;] ipv6_add_addr+0x404/0x46e [ipv6]
	  [&lt;ffffffffa01f8df0&gt;] addrconf_add_linklocal+0x5f/0x95 [ipv6]
	  [&lt;ffffffffa01fc3e9&gt;] addrconf_notify+0x632/0x841 [ipv6]
	  [&lt;ffffffff815da98b&gt;] notifier_call_chain+0x32/0x5c
	  [&lt;ffffffff810e09a1&gt;] __raw_notifier_call_chain+0x9/0xb
	  [&lt;ffffffff810e09b2&gt;] raw_notifier_call_chain+0xf/0x11
	  [&lt;ffffffff8151b3b7&gt;] call_netdevice_notifiers_info+0x4e/0x56
	  [&lt;ffffffff8151b3d0&gt;] call_netdevice_notifiers+0x11/0x13
	  [&lt;ffffffff8151c0a6&gt;] netdev_state_change+0x1f/0x38
	  [&lt;ffffffff8152f004&gt;] linkwatch_do_dev+0x3b/0x49
	  [&lt;ffffffff8152f184&gt;] __linkwatch_run_queue+0x10b/0x144
	  [&lt;ffffffff8152f1dd&gt;] linkwatch_event+0x20/0x27
	  [&lt;ffffffff810d7bc0&gt;] process_one_work+0x1cb/0x2ee
	  [&lt;ffffffff810d7e3b&gt;] worker_thread+0x12e/0x1fc
	  [&lt;ffffffff810dd391&gt;] kthread+0xc4/0xcc
	  [&lt;ffffffff815dc48c&gt;] ret_from_fork+0x7c/0xb0
	irq event stamp: 3388
	hardirqs last  enabled at (3388): [&lt;ffffffff810c6c85&gt;]
	__local_bh_enable_ip+0xaa/0xd9
	hardirqs last disabled at (3387): [&lt;ffffffff810c6c2d&gt;]
	__local_bh_enable_ip+0x52/0xd9
	softirqs last  enabled at (3288): [&lt;ffffffffa01f1d5b&gt;]
	rcu_read_unlock_bh+0x0/0x2f [ipv6]
	softirqs last disabled at (3289): [&lt;ffffffff815ddafc&gt;]
	do_softirq_own_stack+0x1c/0x30

	other info that might help us debug this:
	 Possible unsafe locking scenario:

	       CPU0
	       ----
	  lock(adap_rcu_lock);
	  &lt;Interrupt&gt;
	    lock(adap_rcu_lock);

	 *** DEADLOCK ***

	5 locks held by radvd/3794:
	 #0:  (sk_lock-AF_INET6){+.+.+.}, at: [&lt;ffffffffa020b85a&gt;]
	rawv6_sendmsg+0x74b/0xa4d [ipv6]
	 #1:  (rcu_read_lock){.+.+..}, at: [&lt;ffffffff8151ac6b&gt;]
	rcu_lock_acquire+0x0/0x29
	 #2:  (rcu_read_lock){.+.+..}, at: [&lt;ffffffffa01f4cca&gt;]
	rcu_lock_acquire.constprop.16+0x0/0x30 [ipv6]
	 #3:  (rcu_read_lock){.+.+..}, at: [&lt;ffffffff810e09b4&gt;]
	rcu_lock_acquire+0x0/0x29
	 #4:  (rcu_read_lock){.+.+..}, at: [&lt;ffffffffa0998782&gt;]
	rcu_lock_acquire.constprop.40+0x0/0x30 [cxgb4]

	stack backtrace:
	CPU: 7 PID: 3794 Comm: radvd Tainted: G         C O 3.14.7+ #24
	Hardware name: Supermicro X7DBU/X7DBU, BIOS 6.00 12/03/2007
	 ffffffff81f15990 ffff88012fdc36a8 ffffffff815d0016 0000000000000006
	 ffff8800c80dc2a0 ffff88012fdc3708 ffffffff815cc727 0000000000000001
	 0000000000000001 ffff880100000000 ffffffff81015b02 ffff8800c80dcb58
	Call Trace:
	 &lt;IRQ&gt;  [&lt;ffffffff815d0016&gt;] dump_stack+0x4e/0x71
	 [&lt;ffffffff815cc727&gt;] print_usage_bug+0x1ec/0x1fd
	 [&lt;ffffffff81015b02&gt;] ? save_stack_trace+0x27/0x44
	 [&lt;ffffffff810fbfaa&gt;] ? check_usage_backwards+0xa0/0xa0
	 [&lt;ffffffff810fc640&gt;] mark_lock+0x11b/0x212
	 [&lt;ffffffff810fca0b&gt;] __lock_acquire+0x2d4/0xe48
	 [&lt;ffffffff810fbfaa&gt;] ? check_usage_backwards+0xa0/0xa0
	 [&lt;ffffffff810fbff6&gt;] ? check_usage_forwards+0x4c/0xa6
	 [&lt;ffffffff810c6c8a&gt;] ? __local_bh_enable_ip+0xaf/0xd9
	 [&lt;ffffffff810fd98b&gt;] lock_acquire+0x82/0x9d
	 [&lt;ffffffffa09989ea&gt;] ? clip_add+0x2c/0x116 [cxgb4]
	 [&lt;ffffffffa0998782&gt;] ? rcu_read_unlock+0x23/0x23 [cxgb4]
	 [&lt;ffffffff815d6ff8&gt;] _raw_spin_lock+0x34/0x43
	 [&lt;ffffffffa09989ea&gt;] ? clip_add+0x2c/0x116 [cxgb4]
	 [&lt;ffffffffa09987b0&gt;] ? rcu_lock_acquire.constprop.40+0x2e/0x30 [cxgb4]
	 [&lt;ffffffffa0998782&gt;] ? rcu_read_unlock+0x23/0x23 [cxgb4]
	 [&lt;ffffffffa09989ea&gt;] clip_add+0x2c/0x116 [cxgb4]
	 [&lt;ffffffffa0998beb&gt;] cxgb4_inet6addr_handler+0x117/0x12c [cxgb4]
	 [&lt;ffffffff810fd99d&gt;] ? lock_acquire+0x94/0x9d
	 [&lt;ffffffff810e09b4&gt;] ? raw_notifier_call_chain+0x11/0x11
	 [&lt;ffffffff815da98b&gt;] notifier_call_chain+0x32/0x5c
	 [&lt;ffffffff815da9f9&gt;] __atomic_notifier_call_chain+0x44/0x6e
	 [&lt;ffffffff815daa32&gt;] atomic_notifier_call_chain+0xf/0x11
	 [&lt;ffffffff815b1356&gt;] inet6addr_notifier_call_chain+0x16/0x18
	 [&lt;ffffffffa01f72e5&gt;] ipv6_add_addr+0x404/0x46e [ipv6]
	 [&lt;ffffffff810fde6a&gt;] ? trace_hardirqs_on+0xd/0xf
	 [&lt;ffffffffa01fb634&gt;] addrconf_prefix_rcv+0x385/0x6ea [ipv6]
	 [&lt;ffffffffa0207950&gt;] ndisc_rcv+0x9d3/0xd76 [ipv6]
	 [&lt;ffffffffa020d536&gt;] icmpv6_rcv+0x592/0x67b [ipv6]
	 [&lt;ffffffff810c6c85&gt;] ? __local_bh_enable_ip+0xaa/0xd9
	 [&lt;ffffffff810c6c85&gt;] ? __local_bh_enable_ip+0xaa/0xd9
	 [&lt;ffffffff810fd8dc&gt;] ? lock_release+0x14e/0x17b
	 [&lt;ffffffffa020df97&gt;] ? rcu_read_unlock+0x21/0x23 [ipv6]
	 [&lt;ffffffff8150df52&gt;] ? rcu_read_unlock+0x23/0x23
	 [&lt;ffffffffa01f4ede&gt;] ip6_input_finish+0x1e4/0x2fc [ipv6]
	 [&lt;ffffffffa01f540b&gt;] ip6_input+0x33/0x38 [ipv6]
	 [&lt;ffffffffa01f5557&gt;] ip6_mc_input+0x147/0x160 [ipv6]
	 [&lt;ffffffffa01f4ba3&gt;] ip6_rcv_finish+0x7c/0x81 [ipv6]
	 [&lt;ffffffffa01f5397&gt;] ipv6_rcv+0x3a1/0x3e2 [ipv6]
	 [&lt;ffffffff8151ef96&gt;] __netif_receive_skb_core+0x4ab/0x511
	 [&lt;ffffffff810fdc94&gt;] ? mark_held_locks+0x71/0x99
	 [&lt;ffffffff8151f0c0&gt;] ? process_backlog+0x69/0x15e
	 [&lt;ffffffff8151f045&gt;] __netif_receive_skb+0x49/0x5b
	 [&lt;ffffffff8151f0cf&gt;] process_backlog+0x78/0x15e
	 [&lt;ffffffff8151f571&gt;] ? net_rx_action+0x1a2/0x1cc
	 [&lt;ffffffff8151f47b&gt;] net_rx_action+0xac/0x1cc
	 [&lt;ffffffff810c69b7&gt;] ? __do_softirq+0xad/0x218
	 [&lt;ffffffff810c69ff&gt;] __do_softirq+0xf5/0x218
	 [&lt;ffffffff815ddafc&gt;] do_softirq_own_stack+0x1c/0x30
	 &lt;EOI&gt;  [&lt;ffffffff810c6bb6&gt;] do_softirq+0x38/0x5d
	 [&lt;ffffffffa01f1d5b&gt;] ? ip6_copy_metadata+0x156/0x156 [ipv6]
	 [&lt;ffffffff810c6c78&gt;] __local_bh_enable_ip+0x9d/0xd9
	 [&lt;ffffffffa01f1d88&gt;] rcu_read_unlock_bh+0x2d/0x2f [ipv6]
	 [&lt;ffffffffa01f28b4&gt;] ip6_finish_output2+0x381/0x3d8 [ipv6]
	 [&lt;ffffffffa01f49ef&gt;] ip6_finish_output+0x6e/0x73 [ipv6]
	 [&lt;ffffffffa01f4a70&gt;] ip6_output+0x7c/0xa8 [ipv6]
	 [&lt;ffffffff815b1bfa&gt;] dst_output+0x18/0x1c
	 [&lt;ffffffff815b1c9e&gt;] ip6_local_out+0x1c/0x21
	 [&lt;ffffffffa01f2489&gt;] ip6_push_pending_frames+0x37d/0x427 [ipv6]
	 [&lt;ffffffff81558af8&gt;] ? skb_orphan+0x39/0x39
	 [&lt;ffffffffa020b85a&gt;] ? rawv6_sendmsg+0x74b/0xa4d [ipv6]
	 [&lt;ffffffffa020ba51&gt;] rawv6_sendmsg+0x942/0xa4d [ipv6]
	 [&lt;ffffffff81584cd2&gt;] inet_sendmsg+0x3d/0x66
	 [&lt;ffffffff81508930&gt;] __sock_sendmsg_nosec+0x25/0x27
	 [&lt;ffffffff8150b0d7&gt;] sock_sendmsg+0x5a/0x7b
	 [&lt;ffffffff810fd8dc&gt;] ? lock_release+0x14e/0x17b
	 [&lt;ffffffff8116d756&gt;] ? might_fault+0x9e/0xa5
	 [&lt;ffffffff8116d70d&gt;] ? might_fault+0x55/0xa5
	 [&lt;ffffffff81508cb1&gt;] ? copy_from_user+0x2a/0x2c
	 [&lt;ffffffff8150b70c&gt;] ___sys_sendmsg+0x226/0x2d9
	 [&lt;ffffffff810fcd25&gt;] ? __lock_acquire+0x5ee/0xe48
	 [&lt;ffffffff810fde01&gt;] ? trace_hardirqs_on_caller+0x145/0x1a1
	 [&lt;ffffffff8118efcb&gt;] ? slab_free_hook.isra.71+0x50/0x59
	 [&lt;ffffffff8115c81f&gt;] ? release_pages+0xbc/0x181
	 [&lt;ffffffff810fd99d&gt;] ? lock_acquire+0x94/0x9d
	 [&lt;ffffffff81115e97&gt;] ? read_seqcount_begin.constprop.25+0x73/0x90
	 [&lt;ffffffff8150c408&gt;] __sys_sendmsg+0x3d/0x5b
	 [&lt;ffffffff8150c433&gt;] SyS_sendmsg+0xd/0x19
	 [&lt;ffffffff815dc53d&gt;] system_call_fastpath+0x1a/0x1f

Reported-by: Ben Greear &lt;greearb@candelatech.com&gt;
Cc: Casey Leedom &lt;leedom@chelsio.com&gt;
Cc: Hariprasad Shenai &lt;hariprasad@chelsio.com&gt;
Signed-off-by: Li RongQing &lt;roy.qing.li@gmail.com&gt;
Signed-off-by: Eric Dumazet &lt;eric.dumazet@gmail.com&gt;
Acked-by: Casey Leedom &lt;leedom@chelsio.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>be2net: fix qnq mode detection on VFs</title>
<updated>2014-06-23T21:46:54+00:00</updated>
<author>
<name>Suresh Reddy</name>
<email>suresh.reddy@emulex.com</email>
</author>
<published>2014-06-23T11:11:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=66064dbc0c787b11dacb3b07ee5157edf084870b'/>
<id>66064dbc0c787b11dacb3b07ee5157edf084870b</id>
<content type='text'>
The driver (on PF or VF) needs to detect if the function is in qnq mode for
a HW hack in be_rx_compl_get() to work.

The driver queries this information using the GET_PROFILE_CONFIG cmd
(since the commit below can caused this regression.) But this cmd is not
available on VFs and so the VFs fail to detect qnq mode. This causes
vlan traffic to not work.

The fix is to use the the adapter-&gt;function_mode value queried via
QUERY_FIRMWARE_CONFIG cmd on both PFs and VFs to detect the qnq mode.

Also QNQ_MODE was incorrectly named FLEX10_MODE; correcting that too as the
fix reads much better with the name change.

Fixes: f93f160b5 ("refactor multi-channel config code for Skyhawk-R chip")

Signed-off-by: Suresh Reddy &lt;Suresh.Reddy@emulex.com&gt;
Signed-off-by: Sathya Perla &lt;sathya.perla@emulex.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>
The driver (on PF or VF) needs to detect if the function is in qnq mode for
a HW hack in be_rx_compl_get() to work.

The driver queries this information using the GET_PROFILE_CONFIG cmd
(since the commit below can caused this regression.) But this cmd is not
available on VFs and so the VFs fail to detect qnq mode. This causes
vlan traffic to not work.

The fix is to use the the adapter-&gt;function_mode value queried via
QUERY_FIRMWARE_CONFIG cmd on both PFs and VFs to detect the qnq mode.

Also QNQ_MODE was incorrectly named FLEX10_MODE; correcting that too as the
fix reads much better with the name change.

Fixes: f93f160b5 ("refactor multi-channel config code for Skyhawk-R chip")

Signed-off-by: Suresh Reddy &lt;Suresh.Reddy@emulex.com&gt;
Signed-off-by: Sathya Perla &lt;sathya.perla@emulex.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>at86rf230: fix irq setup</title>
<updated>2014-06-23T01:04:03+00:00</updated>
<author>
<name>Phoebe Buckheister</name>
<email>phoebe.buckheister@itwm.fraunhofer.de</email>
</author>
<published>2014-06-18T14:28:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=363c2cd657afd8138b06f459baa9b6eb892d488f'/>
<id>363c2cd657afd8138b06f459baa9b6eb892d488f</id>
<content type='text'>
Commit 8eba0eefae24953962067 ("at86rf230: remove irq_type in
request_irq") removed the trigger configuration when requesting an irq,
and instead relied on the interrupt trigger to be properly configured
already. This does not seem to be an assumption that can be safely made,
since boards disable all interrupt triggers on boot.

On these boards, force the irq to trigger on rising edge, which is also
the default for the chip.

Signed-off-by: Phoebe Buckheister &lt;phoebe.buckheister@itwm.fraunhofer.de&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>
Commit 8eba0eefae24953962067 ("at86rf230: remove irq_type in
request_irq") removed the trigger configuration when requesting an irq,
and instead relied on the interrupt trigger to be properly configured
already. This does not seem to be an assumption that can be safely made,
since boards disable all interrupt triggers on boot.

On these boards, force the irq to trigger on rising edge, which is also
the default for the chip.

Signed-off-by: Phoebe Buckheister &lt;phoebe.buckheister@itwm.fraunhofer.de&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>net: phy: at803x: fix coccinelle warnings</title>
<updated>2014-06-23T00:16:02+00:00</updated>
<author>
<name>Fengguang Wu</name>
<email>fengguang.wu@intel.com</email>
</author>
<published>2014-06-22T10:32:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=8f2877cad52da0719ec01d2dcfbdd3751bb94670'/>
<id>8f2877cad52da0719ec01d2dcfbdd3751bb94670</id>
<content type='text'>
drivers/net/phy/at803x.c:196:26-32: ERROR: application of sizeof to pointer

 sizeof when applied to a pointer typed expression gives the size of
 the pointer

Generated by: scripts/coccinelle/misc/noderef.cocci

Signed-off-by: Fengguang Wu &lt;fengguang.wu@intel.com&gt;
Acked-by: Daniel Mack &lt;zonque@gmail.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>
drivers/net/phy/at803x.c:196:26-32: ERROR: application of sizeof to pointer

 sizeof when applied to a pointer typed expression gives the size of
 the pointer

Generated by: scripts/coccinelle/misc/noderef.cocci

Signed-off-by: Fengguang Wu &lt;fengguang.wu@intel.com&gt;
Acked-by: Daniel Mack &lt;zonque@gmail.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>net/mlx4_core: Fix the error flow when probing with invalid VF configuration</title>
<updated>2014-06-23T00:13:40+00:00</updated>
<author>
<name>Or Gerlitz</name>
<email>ogerlitz@mellanox.com</email>
</author>
<published>2014-06-22T10:21:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=960b1f454e1ace6b76718f22828bcc3594a09422'/>
<id>960b1f454e1ace6b76718f22828bcc3594a09422</id>
<content type='text'>
Single ported VF are currently not supported on configurations where
one or both ports are IB. When we hit this case, the relevant flow in
the driver didn't return error and jumped to the wrong label. Fix that.

Fixes: dd41cc3 ('net/mlx4: Adapt num_vfs/probed_vf params for single port VF')
Reported-by: Shirley Ma &lt;shirley.ma@oracle.com&gt;
Signed-off-by: Or Gerlitz &lt;ogerlitz@mellanox.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>
Single ported VF are currently not supported on configurations where
one or both ports are IB. When we hit this case, the relevant flow in
the driver didn't return error and jumped to the wrong label. Fix that.

Fixes: dd41cc3 ('net/mlx4: Adapt num_vfs/probed_vf params for single port VF')
Reported-by: Shirley Ma &lt;shirley.ma@oracle.com&gt;
Signed-off-by: Or Gerlitz &lt;ogerlitz@mellanox.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>tulip: Poll link status more frequently for Comet chips</title>
<updated>2014-06-23T00:12:36+00:00</updated>
<author>
<name>Ondrej Zary</name>
<email>linux@rainbow-software.org</email>
</author>
<published>2014-06-22T10:01:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=143fa2efea137d24baee3c5920fb7b0dacc09b6c'/>
<id>143fa2efea137d24baee3c5920fb7b0dacc09b6c</id>
<content type='text'>
It now takes up to 60 seconds to detect cable (un)plug on ADMtek Comet chips.
That's too slow and might cause people to think that it doesn't work at all.

Poll link status every 2 seconds instead of 60 for ADMtek Comet chips.
That should be fast enough while not stressing the system too much.

Tested with ADMtek AN983B.

Signed-off-by: Ondrej Zary &lt;linux@rainbow-software.org&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>
It now takes up to 60 seconds to detect cable (un)plug on ADMtek Comet chips.
That's too slow and might cause people to think that it doesn't work at all.

Poll link status every 2 seconds instead of 60 for ADMtek Comet chips.
That should be fast enough while not stressing the system too much.

Tested with ADMtek AN983B.

Signed-off-by: Ondrej Zary &lt;linux@rainbow-software.org&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
</feed>
