<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux.git/drivers/net/ethernet/cisco, branch v4.2</title>
<subtitle>Linux kernel source tree</subtitle>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/'/>
<entry>
<title>enic: fix issues in enic_poll</title>
<updated>2015-07-02T19:10:20+00:00</updated>
<author>
<name>Govindarajulu Varadarajan</name>
<email>_govind@gmx.com</email>
</author>
<published>2015-07-01T08:51:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=25c14ef86a0d5ec9320e833685c15bc96f504864'/>
<id>25c14ef86a0d5ec9320e833685c15bc96f504864</id>
<content type='text'>
In enic_poll, we clean tx and rx queues, when low latency busy socket polling
is happening, enic_poll will only clean tx queue. After cleaning tx, it should
return total budget for re-poll.

There is a small window between vnic_intr_unmask() and enic_poll_unlock_napi().
In this window if an irq occurs and napi is scheduled on different cpu, it tries
to acquire enic_poll_lock_napi() and fails. Unlock napi_poll before unmasking
the interrupt.

v2:
Do not change tx wonk done behaviour. Consider only rx work done for completing
napi.

Signed-off-by: Govindarajulu Varadarajan &lt;_govind@gmx.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 enic_poll, we clean tx and rx queues, when low latency busy socket polling
is happening, enic_poll will only clean tx queue. After cleaning tx, it should
return total budget for re-poll.

There is a small window between vnic_intr_unmask() and enic_poll_unlock_napi().
In this window if an irq occurs and napi is scheduled on different cpu, it tries
to acquire enic_poll_lock_napi() and fails. Unlock napi_poll before unmasking
the interrupt.

v2:
Do not change tx wonk done behaviour. Consider only rx work done for completing
napi.

Signed-off-by: Govindarajulu Varadarajan &lt;_govind@gmx.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>enic: use atomic_t instead of spin_lock in busy poll</title>
<updated>2015-06-25T12:23:01+00:00</updated>
<author>
<name>Govindarajulu Varadarajan</name>
<email>_govind@gmx.com</email>
</author>
<published>2015-06-25T10:32:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=f586a3360197a63b5423001553ab23025242ac72'/>
<id>f586a3360197a63b5423001553ab23025242ac72</id>
<content type='text'>
We use spinlock to access a single flag. We can avoid spin_locks by using
atomic variable and atomic_cmpxchg(). Use atomic_cmpxchg to set the flag
for idle to poll. And a simple atomic_set to unlock (set idle from poll).

In napi poll, if gro is enabled, we call napi_gro_receive() to deliver the
packets. Before we call napi_complete(), i.e while re-polling, if low
latency busy poll is called, we use netif_receive_skb() to deliver the packets.
At this point if there are some skb's held in GRO, busy poll could deliver the
packets out of order. So we call napi_gro_flush() to flush skbs before we
move the napi poll to idle.

Signed-off-by: Govindarajulu Varadarajan &lt;_govind@gmx.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>
We use spinlock to access a single flag. We can avoid spin_locks by using
atomic variable and atomic_cmpxchg(). Use atomic_cmpxchg to set the flag
for idle to poll. And a simple atomic_set to unlock (set idle from poll).

In napi poll, if gro is enabled, we call napi_gro_receive() to deliver the
packets. Before we call napi_complete(), i.e while re-polling, if low
latency busy poll is called, we use netif_receive_skb() to deliver the packets.
At this point if there are some skb's held in GRO, busy poll could deliver the
packets out of order. So we call napi_gro_flush() to flush skbs before we
move the napi poll to idle.

Signed-off-by: Govindarajulu Varadarajan &lt;_govind@gmx.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>drivers/net: remove all references to obsolete Ethernet-HOWTO</title>
<updated>2015-06-23T13:50:35+00:00</updated>
<author>
<name>Paul Gortmaker</name>
<email>paul.gortmaker@windriver.com</email>
</author>
<published>2015-06-21T20:28:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=138b15ed877eff8149ae32c12fa1f4795c9cb4cf'/>
<id>138b15ed877eff8149ae32c12fa1f4795c9cb4cf</id>
<content type='text'>
This howto made sense in the 1990s when users had to manually configure
ISA cards with jumpers or vendor utilities, but with the implementation
of PCI it became increasingly less and less relevant, to the point where
it has been well over a decade since I last updated it.  And there is
no value in anyone else taking over updating it either.

However the references to it continue to spread as boiler plate text
from one Kconfig file into the next.  We are not doing end users any
favours by pointing them at this old document, so lets kill it with
fire, once and for all, to hopefully stop any further spread.

No code is changed in this commit, just Kconfig help text.

Signed-off-by: Paul Gortmaker &lt;paul.gortmaker@windriver.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 howto made sense in the 1990s when users had to manually configure
ISA cards with jumpers or vendor utilities, but with the implementation
of PCI it became increasingly less and less relevant, to the point where
it has been well over a decade since I last updated it.  And there is
no value in anyone else taking over updating it either.

However the references to it continue to spread as boiler plate text
from one Kconfig file into the next.  We are not doing end users any
favours by pointing them at this old document, so lets kill it with
fire, once and for all, to hopefully stop any further spread.

No code is changed in this commit, just Kconfig help text.

Signed-off-by: Paul Gortmaker &lt;paul.gortmaker@windriver.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net</title>
<updated>2015-06-14T06:56:52+00:00</updated>
<author>
<name>David S. Miller</name>
<email>davem@davemloft.net</email>
</author>
<published>2015-06-14T06:56:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=25c43bf13b1657d9a2f6a2565e9159ce31517aa5'/>
<id>25c43bf13b1657d9a2f6a2565e9159ce31517aa5</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>enic: fix memory leak in rq_clean</title>
<updated>2015-06-11T06:42:39+00:00</updated>
<author>
<name>Govindarajulu Varadarajan</name>
<email>_govind@gmx.com</email>
</author>
<published>2015-06-11T06:22:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=8b13b4e0bc884ba7dc8ee4de3ee915b7d30e7f78'/>
<id>8b13b4e0bc884ba7dc8ee4de3ee915b7d30e7f78</id>
<content type='text'>
When incoming packet qualifies for rx_copybreak, we copy the data to newly
allocated skb. We do not free/unmap the original buffer. At this point driver
assumes this buffer is unallocated. When enic_rq_alloc_buf() is called for
buffer allocation, it checks if buf-&gt;os_buf is NULL. If its not NULL that means
buffer can be re-used.

When vnic_rq_clean() is called for freeing all rq buffers, and if the
rx_copybreak reused buffer falls outside the used desc, we do not free the
buffer. The following trace is observer when dma-debug is enabled.

Fix is to walk through complete ring and clean if buffer is present.

[   40.555386] ------------[ cut here ]------------
[   40.555396] WARNING: CPU: 0 PID: 491 at lib/dma-debug.c:971 dma_debug_device_change+0x188/0x1f0()
[   40.555400] pci 0000:06:00.0: DMA-API: device driver has pending DMA allocations while released from device [count=4]
               One of leaked entries details: [device address=0x00000000ff4cc040] [size=9018 bytes] [mapped with DMA_FROM_DEVICE] [mapped as single]
[   40.555402] Modules linked in: nfsv3 nfs_acl rpcsec_gss_krb5 auth_rpcgss oid_registry nfsv4 dns_resolver coretemp intel_rapl iosf_mbi x86_pkg_temp_thermal intel_powerclamp kvm_intel kvm crct10dif_pclmul crc32_pclmul ghash_clmulni_intel aesni_intel aes_x86_64 lrw joydev mousedev gf128mul hid_generic glue_helper mgag200 usbhid ttm hid drm_kms_helper drm ablk_helper syscopyarea sysfillrect sysimgblt i2c_algo_bit i2c_core iTCO_wdt cryptd mac_hid evdev pcspkr sb_edac edac_core tpm_tis iTCO_vendor_support ipmi_si wmi tpm ipmi_msghandler shpchp lpc_ich processor acpi_power_meter hwmon button ac sch_fq_codel nfs lockd grace sunrpc fscache sd_mod ehci_pci ehci_hcd megaraid_sas usbcore scsi_mod usb_common enic(-) crc32c_generic crc32c_intel btrfs xor raid6_pq ext4 crc16 mbcache jbd2
[   40.555467] CPU: 0 PID: 491 Comm: rmmod Not tainted 4.1.0-rc7-ARCH-01305-gf59b71f #118
[   40.555469] Hardware name: Cisco Systems Inc UCSB-B200-M4/UCSB-B200-M4, BIOS B200M4.2.2.2.23.061220140128 06/12/2014
[   40.555471]  0000000000000000 00000000e2f8a5b7 ffff880275f8bc48 ffffffff8158d6f0
[   40.555474]  0000000000000000 ffff880275f8bca0 ffff880275f8bc88 ffffffff8107b04a
[   40.555477]  ffff8802734e0000 0000000000000004 ffff8804763fb3c0 ffff88027600b650
[   40.555480] Call Trace:
[   40.555488]  [&lt;ffffffff8158d6f0&gt;] dump_stack+0x4f/0x7b
[   40.555492]  [&lt;ffffffff8107b04a&gt;] warn_slowpath_common+0x8a/0xc0
[   40.555494]  [&lt;ffffffff8107b0d5&gt;] warn_slowpath_fmt+0x55/0x70
[   40.555498]  [&lt;ffffffff812fa408&gt;] dma_debug_device_change+0x188/0x1f0
[   40.555503]  [&lt;ffffffff8109aaef&gt;] notifier_call_chain+0x4f/0x80
[   40.555506]  [&lt;ffffffff8109aecb&gt;] __blocking_notifier_call_chain+0x4b/0x70
[   40.555510]  [&lt;ffffffff8109af06&gt;] blocking_notifier_call_chain+0x16/0x20
[   40.555514]  [&lt;ffffffff813f8066&gt;] __device_release_driver+0xf6/0x120
[   40.555518]  [&lt;ffffffff813f8b08&gt;] driver_detach+0xc8/0xd0
[   40.555523]  [&lt;ffffffff813f7c59&gt;] bus_remove_driver+0x59/0xe0
[   40.555527]  [&lt;ffffffff813f93a0&gt;] driver_unregister+0x30/0x70
[   40.555534]  [&lt;ffffffff8131532d&gt;] pci_unregister_driver+0x2d/0xa0
[   40.555542]  [&lt;ffffffffa0200ec2&gt;] enic_cleanup_module+0x10/0x14e [enic]
[   40.555547]  [&lt;ffffffff8110158f&gt;] SyS_delete_module+0x1cf/0x280
[   40.555551]  [&lt;ffffffff811e284e&gt;] ? ____fput+0xe/0x10
[   40.555554]  [&lt;ffffffff810980ec&gt;] ? task_work_run+0xbc/0xf0
[   40.555558]  [&lt;ffffffff815930ee&gt;] system_call_fastpath+0x12/0x71
[   40.555561] ---[ end trace 4988cadc77c2b236 ]---
[   40.555562] Mapped at:
[   40.555563]  [&lt;ffffffff812fa865&gt;] debug_dma_map_page+0x95/0x150
[   40.555566]  [&lt;ffffffffa01f4a88&gt;] enic_rq_alloc_buf+0x1b8/0x360 [enic]
[   40.555570]  [&lt;ffffffffa01f7658&gt;] enic_open+0xf8/0x820 [enic]
[   40.555574]  [&lt;ffffffff8148d50e&gt;] __dev_open+0xce/0x150
[   40.555579]  [&lt;ffffffff8148d851&gt;] __dev_change_flags+0xa1/0x170

Signed-off-by: Govindarajulu Varadarajan &lt;_govind@gmx.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>
When incoming packet qualifies for rx_copybreak, we copy the data to newly
allocated skb. We do not free/unmap the original buffer. At this point driver
assumes this buffer is unallocated. When enic_rq_alloc_buf() is called for
buffer allocation, it checks if buf-&gt;os_buf is NULL. If its not NULL that means
buffer can be re-used.

When vnic_rq_clean() is called for freeing all rq buffers, and if the
rx_copybreak reused buffer falls outside the used desc, we do not free the
buffer. The following trace is observer when dma-debug is enabled.

Fix is to walk through complete ring and clean if buffer is present.

[   40.555386] ------------[ cut here ]------------
[   40.555396] WARNING: CPU: 0 PID: 491 at lib/dma-debug.c:971 dma_debug_device_change+0x188/0x1f0()
[   40.555400] pci 0000:06:00.0: DMA-API: device driver has pending DMA allocations while released from device [count=4]
               One of leaked entries details: [device address=0x00000000ff4cc040] [size=9018 bytes] [mapped with DMA_FROM_DEVICE] [mapped as single]
[   40.555402] Modules linked in: nfsv3 nfs_acl rpcsec_gss_krb5 auth_rpcgss oid_registry nfsv4 dns_resolver coretemp intel_rapl iosf_mbi x86_pkg_temp_thermal intel_powerclamp kvm_intel kvm crct10dif_pclmul crc32_pclmul ghash_clmulni_intel aesni_intel aes_x86_64 lrw joydev mousedev gf128mul hid_generic glue_helper mgag200 usbhid ttm hid drm_kms_helper drm ablk_helper syscopyarea sysfillrect sysimgblt i2c_algo_bit i2c_core iTCO_wdt cryptd mac_hid evdev pcspkr sb_edac edac_core tpm_tis iTCO_vendor_support ipmi_si wmi tpm ipmi_msghandler shpchp lpc_ich processor acpi_power_meter hwmon button ac sch_fq_codel nfs lockd grace sunrpc fscache sd_mod ehci_pci ehci_hcd megaraid_sas usbcore scsi_mod usb_common enic(-) crc32c_generic crc32c_intel btrfs xor raid6_pq ext4 crc16 mbcache jbd2
[   40.555467] CPU: 0 PID: 491 Comm: rmmod Not tainted 4.1.0-rc7-ARCH-01305-gf59b71f #118
[   40.555469] Hardware name: Cisco Systems Inc UCSB-B200-M4/UCSB-B200-M4, BIOS B200M4.2.2.2.23.061220140128 06/12/2014
[   40.555471]  0000000000000000 00000000e2f8a5b7 ffff880275f8bc48 ffffffff8158d6f0
[   40.555474]  0000000000000000 ffff880275f8bca0 ffff880275f8bc88 ffffffff8107b04a
[   40.555477]  ffff8802734e0000 0000000000000004 ffff8804763fb3c0 ffff88027600b650
[   40.555480] Call Trace:
[   40.555488]  [&lt;ffffffff8158d6f0&gt;] dump_stack+0x4f/0x7b
[   40.555492]  [&lt;ffffffff8107b04a&gt;] warn_slowpath_common+0x8a/0xc0
[   40.555494]  [&lt;ffffffff8107b0d5&gt;] warn_slowpath_fmt+0x55/0x70
[   40.555498]  [&lt;ffffffff812fa408&gt;] dma_debug_device_change+0x188/0x1f0
[   40.555503]  [&lt;ffffffff8109aaef&gt;] notifier_call_chain+0x4f/0x80
[   40.555506]  [&lt;ffffffff8109aecb&gt;] __blocking_notifier_call_chain+0x4b/0x70
[   40.555510]  [&lt;ffffffff8109af06&gt;] blocking_notifier_call_chain+0x16/0x20
[   40.555514]  [&lt;ffffffff813f8066&gt;] __device_release_driver+0xf6/0x120
[   40.555518]  [&lt;ffffffff813f8b08&gt;] driver_detach+0xc8/0xd0
[   40.555523]  [&lt;ffffffff813f7c59&gt;] bus_remove_driver+0x59/0xe0
[   40.555527]  [&lt;ffffffff813f93a0&gt;] driver_unregister+0x30/0x70
[   40.555534]  [&lt;ffffffff8131532d&gt;] pci_unregister_driver+0x2d/0xa0
[   40.555542]  [&lt;ffffffffa0200ec2&gt;] enic_cleanup_module+0x10/0x14e [enic]
[   40.555547]  [&lt;ffffffff8110158f&gt;] SyS_delete_module+0x1cf/0x280
[   40.555551]  [&lt;ffffffff811e284e&gt;] ? ____fput+0xe/0x10
[   40.555554]  [&lt;ffffffff810980ec&gt;] ? task_work_run+0xbc/0xf0
[   40.555558]  [&lt;ffffffff815930ee&gt;] system_call_fastpath+0x12/0x71
[   40.555561] ---[ end trace 4988cadc77c2b236 ]---
[   40.555562] Mapped at:
[   40.555563]  [&lt;ffffffff812fa865&gt;] debug_dma_map_page+0x95/0x150
[   40.555566]  [&lt;ffffffffa01f4a88&gt;] enic_rq_alloc_buf+0x1b8/0x360 [enic]
[   40.555570]  [&lt;ffffffffa01f7658&gt;] enic_open+0xf8/0x820 [enic]
[   40.555574]  [&lt;ffffffff8148d50e&gt;] __dev_open+0xce/0x150
[   40.555579]  [&lt;ffffffff8148d851&gt;] __dev_change_flags+0xa1/0x170

Signed-off-by: Govindarajulu Varadarajan &lt;_govind@gmx.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>enic: check return value for stat dump</title>
<updated>2015-06-11T06:42:39+00:00</updated>
<author>
<name>Govindarajulu Varadarajan</name>
<email>_govind@gmx.com</email>
</author>
<published>2015-06-11T06:22:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=19b596bda1c5400808635fde0d521c1f89a6c1a3'/>
<id>19b596bda1c5400808635fde0d521c1f89a6c1a3</id>
<content type='text'>
We do not check the return value of enic_dev_stats_dump(). If allocation
fails, we will hit NULL pointer reference.

Return only if memory allocation fails. For other failures, we return the
previously recorded values.

Signed-off-by: Govindarajulu Varadarajan &lt;_govind@gmx.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>
We do not check the return value of enic_dev_stats_dump(). If allocation
fails, we will hit NULL pointer reference.

Return only if memory allocation fails. For other failures, we return the
previously recorded values.

Signed-off-by: Govindarajulu Varadarajan &lt;_govind@gmx.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>enic: unlock napi busy poll before unmasking intr</title>
<updated>2015-06-11T06:42:39+00:00</updated>
<author>
<name>Govindarajulu Varadarajan</name>
<email>_govind@gmx.com</email>
</author>
<published>2015-06-11T06:22:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=6286e8285078ab02b215bba1d42a05ecfd864515'/>
<id>6286e8285078ab02b215bba1d42a05ecfd864515</id>
<content type='text'>
There is a small window between vnic_intr_unmask() and enic_poll_unlock_napi().
In this window if an irq occurs and napi is scheduled on different cpu, it tries
to acquire enic_poll_lock_napi() and hits the following WARN_ON message.

Fix is to unlock napi_poll before unmasking the interrupt.

[  781.121746] ------------[ cut here ]------------
[  781.121789] WARNING: CPU: 1 PID: 0 at drivers/net/ethernet/cisco/enic/vnic_rq.h:228 enic_poll_msix_rq+0x36a/0x3c0 [enic]()
[  781.121834] Modules linked in: nfsv3 nfs_acl rpcsec_gss_krb5 auth_rpcgss oid_registry nfsv4 dns_resolver coretemp intel_rapl iosf_mbi x86_pkg_temp_thermal intel_powerclamp kvm_intel kvm crct10dif_pclmul crc32_pclmul ghash_clmulni_intel aesni_intel mgag200 ttm drm_kms_helper joydev aes_x86_64 lrw drm gf128mul mousedev glue_helper sb_edac ablk_helper iTCO_wdt iTCO_vendor_support evdev ipmi_si syscopyarea sysfillrect sysimgblt i2c_algo_bit i2c_core edac_core lpc_ich mac_hid cryptd pcspkr ipmi_msghandler shpchp tpm_tis acpi_power_meter tpm wmi processor hwmon button ac sch_fq_codel nfs lockd grace sunrpc fscache hid_generic usbhid hid ehci_pci ehci_hcd sd_mod megaraid_sas usbcore scsi_mod usb_common enic crc32c_generic crc32c_intel btrfs xor raid6_pq ext4 crc16 mbcache jbd2
[  781.122176] CPU: 1 PID: 0 Comm: swapper/1 Not tainted 4.1.0-rc6-ARCH-00040-gc46a024-dirty #106
[  781.122210] Hardware name: Cisco Systems Inc UCSB-B200-M4/UCSB-B200-M4, BIOS B200M4.2.2.2.23.061220140128 06/12/2014
[  781.122252]  0000000000000000 bddbbc9d655ec96e ffff880277e43da8 ffffffff81583fe8
[  781.122286]  0000000000000000 0000000000000000 ffff880277e43de8 ffffffff8107acfa
[  781.122319]  ffff880272c01000 ffff880273f18000 ffff880273f1a100 0000000000000000
[  781.122352] Call Trace:
[  781.122364]  &lt;IRQ&gt;  [&lt;ffffffff81583fe8&gt;] dump_stack+0x4f/0x7b
[  781.122399]  [&lt;ffffffff8107acfa&gt;] warn_slowpath_common+0x8a/0xc0
[  781.122425]  [&lt;ffffffff8107ae2a&gt;] warn_slowpath_null+0x1a/0x20
[  781.122455]  [&lt;ffffffffa01fa9ca&gt;] enic_poll_msix_rq+0x36a/0x3c0 [enic]
[  781.122487]  [&lt;ffffffff8148525a&gt;] net_rx_action+0x22a/0x370
[  781.122512]  [&lt;ffffffff8107ed3d&gt;] __do_softirq+0xed/0x2d0
[  781.122537]  [&lt;ffffffff8107f06e&gt;] irq_exit+0x7e/0xa0
[  781.122560]  [&lt;ffffffff8158c424&gt;] do_IRQ+0x64/0x100
[  781.122582]  [&lt;ffffffff8158a42e&gt;] common_interrupt+0x6e/0x6e
[  781.122605]  &lt;EOI&gt;  [&lt;ffffffff810bd331&gt;] ? cpu_startup_entry+0x121/0x480
[  781.122638]  [&lt;ffffffff810bd2fc&gt;] ? cpu_startup_entry+0xec/0x480
[  781.122667]  [&lt;ffffffff810f2ed3&gt;] ? clockevents_register_device+0x113/0x1f0
[  781.122698]  [&lt;ffffffff81050ab6&gt;] start_secondary+0x196/0x1e0
[  781.122723] ---[ end trace cec2e9dd3af7b9db ]---

Signed-off-by: Govindarajulu Varadarajan &lt;_govind@gmx.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 window between vnic_intr_unmask() and enic_poll_unlock_napi().
In this window if an irq occurs and napi is scheduled on different cpu, it tries
to acquire enic_poll_lock_napi() and hits the following WARN_ON message.

Fix is to unlock napi_poll before unmasking the interrupt.

[  781.121746] ------------[ cut here ]------------
[  781.121789] WARNING: CPU: 1 PID: 0 at drivers/net/ethernet/cisco/enic/vnic_rq.h:228 enic_poll_msix_rq+0x36a/0x3c0 [enic]()
[  781.121834] Modules linked in: nfsv3 nfs_acl rpcsec_gss_krb5 auth_rpcgss oid_registry nfsv4 dns_resolver coretemp intel_rapl iosf_mbi x86_pkg_temp_thermal intel_powerclamp kvm_intel kvm crct10dif_pclmul crc32_pclmul ghash_clmulni_intel aesni_intel mgag200 ttm drm_kms_helper joydev aes_x86_64 lrw drm gf128mul mousedev glue_helper sb_edac ablk_helper iTCO_wdt iTCO_vendor_support evdev ipmi_si syscopyarea sysfillrect sysimgblt i2c_algo_bit i2c_core edac_core lpc_ich mac_hid cryptd pcspkr ipmi_msghandler shpchp tpm_tis acpi_power_meter tpm wmi processor hwmon button ac sch_fq_codel nfs lockd grace sunrpc fscache hid_generic usbhid hid ehci_pci ehci_hcd sd_mod megaraid_sas usbcore scsi_mod usb_common enic crc32c_generic crc32c_intel btrfs xor raid6_pq ext4 crc16 mbcache jbd2
[  781.122176] CPU: 1 PID: 0 Comm: swapper/1 Not tainted 4.1.0-rc6-ARCH-00040-gc46a024-dirty #106
[  781.122210] Hardware name: Cisco Systems Inc UCSB-B200-M4/UCSB-B200-M4, BIOS B200M4.2.2.2.23.061220140128 06/12/2014
[  781.122252]  0000000000000000 bddbbc9d655ec96e ffff880277e43da8 ffffffff81583fe8
[  781.122286]  0000000000000000 0000000000000000 ffff880277e43de8 ffffffff8107acfa
[  781.122319]  ffff880272c01000 ffff880273f18000 ffff880273f1a100 0000000000000000
[  781.122352] Call Trace:
[  781.122364]  &lt;IRQ&gt;  [&lt;ffffffff81583fe8&gt;] dump_stack+0x4f/0x7b
[  781.122399]  [&lt;ffffffff8107acfa&gt;] warn_slowpath_common+0x8a/0xc0
[  781.122425]  [&lt;ffffffff8107ae2a&gt;] warn_slowpath_null+0x1a/0x20
[  781.122455]  [&lt;ffffffffa01fa9ca&gt;] enic_poll_msix_rq+0x36a/0x3c0 [enic]
[  781.122487]  [&lt;ffffffff8148525a&gt;] net_rx_action+0x22a/0x370
[  781.122512]  [&lt;ffffffff8107ed3d&gt;] __do_softirq+0xed/0x2d0
[  781.122537]  [&lt;ffffffff8107f06e&gt;] irq_exit+0x7e/0xa0
[  781.122560]  [&lt;ffffffff8158c424&gt;] do_IRQ+0x64/0x100
[  781.122582]  [&lt;ffffffff8158a42e&gt;] common_interrupt+0x6e/0x6e
[  781.122605]  &lt;EOI&gt;  [&lt;ffffffff810bd331&gt;] ? cpu_startup_entry+0x121/0x480
[  781.122638]  [&lt;ffffffff810bd2fc&gt;] ? cpu_startup_entry+0xec/0x480
[  781.122667]  [&lt;ffffffff810f2ed3&gt;] ? clockevents_register_device+0x113/0x1f0
[  781.122698]  [&lt;ffffffff81050ab6&gt;] start_secondary+0x196/0x1e0
[  781.122723] ---[ end trace cec2e9dd3af7b9db ]---

Signed-off-by: Govindarajulu Varadarajan &lt;_govind@gmx.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>net: Add full IPv6 addresses to flow_keys</title>
<updated>2015-06-04T22:44:30+00:00</updated>
<author>
<name>Tom Herbert</name>
<email>tom@herbertland.com</email>
</author>
<published>2015-06-04T16:16:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=c3f8324188fa80178f20c8209b492ca6191177e8'/>
<id>c3f8324188fa80178f20c8209b492ca6191177e8</id>
<content type='text'>
This patch adds full IPv6 addresses into flow_keys and uses them as
input to the flow hash function. The implementation supports either
IPv4 or IPv6 addresses in a union, and selector is used to determine
how may words to input to jhash2.

We also add flow_get_u32_dst and flow_get_u32_src functions which are
used to get a u32 representation of the source and destination
addresses. For IPv6, ipv6_addr_hash is called. These functions retain
getting the legacy values of src and dst in flow_keys.

With this patch, Ethertype and IP protocol are now included in the
flow hash input.

Signed-off-by: Tom Herbert &lt;tom@herbertland.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 patch adds full IPv6 addresses into flow_keys and uses them as
input to the flow hash function. The implementation supports either
IPv4 or IPv6 addresses in a union, and selector is used to determine
how may words to input to jhash2.

We also add flow_get_u32_dst and flow_get_u32_src functions which are
used to get a u32 representation of the source and destination
addresses. For IPv6, ipv6_addr_hash is called. These functions retain
getting the legacy values of src and dst in flow_keys.

With this patch, Ethertype and IP protocol are now included in the
flow hash input.

Signed-off-by: Tom Herbert &lt;tom@herbertland.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>enic: Grammar s/an negative/a negative/</title>
<updated>2015-05-25T03:03:05+00:00</updated>
<author>
<name>Geert Uytterhoeven</name>
<email>geert+renesas@glider.be</email>
</author>
<published>2015-05-21T12:09:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=29044b58869b60b18071154446d39e83f31d9b67'/>
<id>29044b58869b60b18071154446d39e83f31d9b67</id>
<content type='text'>
Signed-off-by: Geert Uytterhoeven &lt;geert+renesas@glider.be&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>
Signed-off-by: Geert Uytterhoeven &lt;geert+renesas@glider.be&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>flow_dissector: change port array into src, dst tuple</title>
<updated>2015-05-13T19:19:47+00:00</updated>
<author>
<name>Jiri Pirko</name>
<email>jiri@resnulli.us</email>
</author>
<published>2015-05-12T12:56:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=59346afe7a5548ab3e9730aeff33993faa76abbe'/>
<id>59346afe7a5548ab3e9730aeff33993faa76abbe</id>
<content type='text'>
Signed-off-by: Jiri Pirko &lt;jiri@resnulli.us&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>
Signed-off-by: Jiri Pirko &lt;jiri@resnulli.us&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
</feed>
