<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-stable.git/drivers/net/vmxnet3, branch linux-3.12.y</title>
<subtitle>Linux kernel stable tree</subtitle>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/'/>
<entry>
<title>vmxnet3: Wake queue from reset work</title>
<updated>2017-01-27T10:16:00+00:00</updated>
<author>
<name>Benjamin Poirier</name>
<email>bpoirier@suse.com</email>
</author>
<published>2016-10-03T02:47:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=669b0c45e0349c66c2621cb8b9e5d8669efe4662'/>
<id>669b0c45e0349c66c2621cb8b9e5d8669efe4662</id>
<content type='text'>
commit 277964e19e1416ca31301e113edb2580c81a8b66 upstream.

vmxnet3_reset_work() expects tx queues to be stopped (via
vmxnet3_quiesce_dev -&gt; netif_tx_disable). However, this races with the
netif_wake_queue() call in netif_tx_timeout() such that the driver's
start_xmit routine may be called unexpectedly, triggering one of the BUG_ON
in vmxnet3_map_pkt with a stack trace like this:

RIP: 0010:[&lt;ffffffffa00cf4bc&gt;] vmxnet3_map_pkt+0x3ac/0x4c0 [vmxnet3]
 [&lt;ffffffffa00cf7e0&gt;] vmxnet3_tq_xmit+0x210/0x4e0 [vmxnet3]
 [&lt;ffffffff813ab144&gt;] dev_hard_start_xmit+0x2e4/0x4c0
 [&lt;ffffffff813c956e&gt;] sch_direct_xmit+0x17e/0x1e0
 [&lt;ffffffff813c96a7&gt;] __qdisc_run+0xd7/0x130
 [&lt;ffffffff813a6a7a&gt;] net_tx_action+0x10a/0x200
 [&lt;ffffffff810691df&gt;] __do_softirq+0x11f/0x260
 [&lt;ffffffff81472fdc&gt;] call_softirq+0x1c/0x30
 [&lt;ffffffff81004695&gt;] do_softirq+0x65/0xa0
 [&lt;ffffffff81069b89&gt;] local_bh_enable_ip+0x99/0xa0
 [&lt;ffffffffa031ff36&gt;] destroy_conntrack+0x96/0x110 [nf_conntrack]
 [&lt;ffffffff813d65e2&gt;] nf_conntrack_destroy+0x12/0x20
 [&lt;ffffffff8139c6d5&gt;] skb_release_head_state+0xb5/0xf0
 [&lt;ffffffff8139d299&gt;] skb_release_all+0x9/0x20
 [&lt;ffffffff8139cfe9&gt;] __kfree_skb+0x9/0x90
 [&lt;ffffffffa00d0069&gt;] vmxnet3_quiesce_dev+0x209/0x340 [vmxnet3]
 [&lt;ffffffffa00d020a&gt;] vmxnet3_reset_work+0x6a/0xa0 [vmxnet3]
 [&lt;ffffffff8107d7cc&gt;] process_one_work+0x16c/0x350
 [&lt;ffffffff810804fa&gt;] worker_thread+0x17a/0x410
 [&lt;ffffffff810848c6&gt;] kthread+0x96/0xa0
 [&lt;ffffffff81472ee4&gt;] kernel_thread_helper+0x4/0x10

Signed-off-by: Benjamin Poirier &lt;bpoirier@suse.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 277964e19e1416ca31301e113edb2580c81a8b66 upstream.

vmxnet3_reset_work() expects tx queues to be stopped (via
vmxnet3_quiesce_dev -&gt; netif_tx_disable). However, this races with the
netif_wake_queue() call in netif_tx_timeout() such that the driver's
start_xmit routine may be called unexpectedly, triggering one of the BUG_ON
in vmxnet3_map_pkt with a stack trace like this:

RIP: 0010:[&lt;ffffffffa00cf4bc&gt;] vmxnet3_map_pkt+0x3ac/0x4c0 [vmxnet3]
 [&lt;ffffffffa00cf7e0&gt;] vmxnet3_tq_xmit+0x210/0x4e0 [vmxnet3]
 [&lt;ffffffff813ab144&gt;] dev_hard_start_xmit+0x2e4/0x4c0
 [&lt;ffffffff813c956e&gt;] sch_direct_xmit+0x17e/0x1e0
 [&lt;ffffffff813c96a7&gt;] __qdisc_run+0xd7/0x130
 [&lt;ffffffff813a6a7a&gt;] net_tx_action+0x10a/0x200
 [&lt;ffffffff810691df&gt;] __do_softirq+0x11f/0x260
 [&lt;ffffffff81472fdc&gt;] call_softirq+0x1c/0x30
 [&lt;ffffffff81004695&gt;] do_softirq+0x65/0xa0
 [&lt;ffffffff81069b89&gt;] local_bh_enable_ip+0x99/0xa0
 [&lt;ffffffffa031ff36&gt;] destroy_conntrack+0x96/0x110 [nf_conntrack]
 [&lt;ffffffff813d65e2&gt;] nf_conntrack_destroy+0x12/0x20
 [&lt;ffffffff8139c6d5&gt;] skb_release_head_state+0xb5/0xf0
 [&lt;ffffffff8139d299&gt;] skb_release_all+0x9/0x20
 [&lt;ffffffff8139cfe9&gt;] __kfree_skb+0x9/0x90
 [&lt;ffffffffa00d0069&gt;] vmxnet3_quiesce_dev+0x209/0x340 [vmxnet3]
 [&lt;ffffffffa00d020a&gt;] vmxnet3_reset_work+0x6a/0xa0 [vmxnet3]
 [&lt;ffffffff8107d7cc&gt;] process_one_work+0x16c/0x350
 [&lt;ffffffff810804fa&gt;] worker_thread+0x17a/0x410
 [&lt;ffffffff810848c6&gt;] kthread+0x96/0xa0
 [&lt;ffffffff81472ee4&gt;] kernel_thread_helper+0x4/0x10

Signed-off-by: Benjamin Poirier &lt;bpoirier@suse.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>vmxnet3: fix building without CONFIG_PCI_MSI</title>
<updated>2014-03-24T08:44:58+00:00</updated>
<author>
<name>Arnd Bergmann</name>
<email>arnd@arndb.de</email>
</author>
<published>2014-03-13T09:44:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=e468205ed8decafbfb61fce73753826fe679a10b'/>
<id>e468205ed8decafbfb61fce73753826fe679a10b</id>
<content type='text'>
commit 0a8d8c446b5429d15ff2d48f46e00d8a08552303 upstream.

Since commit d25f06ea466e "vmxnet3: fix netpoll race condition",
the vmxnet3 driver fails to build when CONFIG_PCI_MSI is disabled,
because it unconditionally references the vmxnet3_msix_rx()
function.

To fix this, use the same #ifdef in the caller that exists around
the function definition.

Signed-off-by: Arnd Bergmann &lt;arnd@arndb.de&gt;
Cc: Neil Horman &lt;nhorman@tuxdriver.com&gt;
Cc: Shreyas Bhatewara &lt;sbhatewara@vmware.com&gt;
Cc: "VMware, Inc." &lt;pv-drivers@vmware.com&gt;
Cc: "David S. Miller" &lt;davem@davemloft.net&gt;
Acked-by: Neil Horman &lt;nhorman@tuxdriver.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 0a8d8c446b5429d15ff2d48f46e00d8a08552303 upstream.

Since commit d25f06ea466e "vmxnet3: fix netpoll race condition",
the vmxnet3 driver fails to build when CONFIG_PCI_MSI is disabled,
because it unconditionally references the vmxnet3_msix_rx()
function.

To fix this, use the same #ifdef in the caller that exists around
the function definition.

Signed-off-by: Arnd Bergmann &lt;arnd@arndb.de&gt;
Cc: Neil Horman &lt;nhorman@tuxdriver.com&gt;
Cc: Shreyas Bhatewara &lt;sbhatewara@vmware.com&gt;
Cc: "VMware, Inc." &lt;pv-drivers@vmware.com&gt;
Cc: "David S. Miller" &lt;davem@davemloft.net&gt;
Acked-by: Neil Horman &lt;nhorman@tuxdriver.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>vmxnet3: fix netpoll race condition</title>
<updated>2014-03-24T08:44:58+00:00</updated>
<author>
<name>Neil Horman</name>
<email>nhorman@tuxdriver.com</email>
</author>
<published>2014-03-10T10:55:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=56ee1332074b525adba1fab6ce99c97403b665ae'/>
<id>56ee1332074b525adba1fab6ce99c97403b665ae</id>
<content type='text'>
commit d25f06ea466ea521b563b76661180b4e44714ae6 upstream.

vmxnet3's netpoll driver is incorrectly coded.  It directly calls
vmxnet3_do_poll, which is the driver internal napi poll routine.  As the netpoll
controller method doesn't block real napi polls in any way, there is a potential
for race conditions in which the netpoll controller method and the napi poll
method run concurrently.  The result is data corruption causing panics such as this
one recently observed:
PID: 1371   TASK: ffff88023762caa0  CPU: 1   COMMAND: "rs:main Q:Reg"
 #0 [ffff88023abd5780] machine_kexec at ffffffff81038f3b
 #1 [ffff88023abd57e0] crash_kexec at ffffffff810c5d92
 #2 [ffff88023abd58b0] oops_end at ffffffff8152b570
 #3 [ffff88023abd58e0] die at ffffffff81010e0b
 #4 [ffff88023abd5910] do_trap at ffffffff8152add4
 #5 [ffff88023abd5970] do_invalid_op at ffffffff8100cf95
 #6 [ffff88023abd5a10] invalid_op at ffffffff8100bf9b
    [exception RIP: vmxnet3_rq_rx_complete+1968]
    RIP: ffffffffa00f1e80  RSP: ffff88023abd5ac8  RFLAGS: 00010086
    RAX: 0000000000000000  RBX: ffff88023b5dcee0  RCX: 00000000000000c0
    RDX: 0000000000000000  RSI: 00000000000005f2  RDI: ffff88023b5dcee0
    RBP: ffff88023abd5b48   R8: 0000000000000000   R9: ffff88023a3b6048
    R10: 0000000000000000  R11: 0000000000000002  R12: ffff8802398d4cd8
    R13: ffff88023af35140  R14: ffff88023b60c890  R15: 0000000000000000
    ORIG_RAX: ffffffffffffffff  CS: 0010  SS: 0018
 #7 [ffff88023abd5b50] vmxnet3_do_poll at ffffffffa00f204a [vmxnet3]
 #8 [ffff88023abd5b80] vmxnet3_netpoll at ffffffffa00f209c [vmxnet3]
 #9 [ffff88023abd5ba0] netpoll_poll_dev at ffffffff81472bb7

The fix is to do as other drivers do, and have the poll controller call the top
half interrupt handler, which schedules a napi poll properly to recieve frames

Tested by myself, successfully.

Signed-off-by: Neil Horman &lt;nhorman@tuxdriver.com&gt;
CC: Shreyas Bhatewara &lt;sbhatewara@vmware.com&gt;
CC: "VMware, Inc." &lt;pv-drivers@vmware.com&gt;
CC: "David S. Miller" &lt;davem@davemloft.net&gt;
Reviewed-by: Shreyas N Bhatewara &lt;sbhatewara@vmware.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit d25f06ea466ea521b563b76661180b4e44714ae6 upstream.

vmxnet3's netpoll driver is incorrectly coded.  It directly calls
vmxnet3_do_poll, which is the driver internal napi poll routine.  As the netpoll
controller method doesn't block real napi polls in any way, there is a potential
for race conditions in which the netpoll controller method and the napi poll
method run concurrently.  The result is data corruption causing panics such as this
one recently observed:
PID: 1371   TASK: ffff88023762caa0  CPU: 1   COMMAND: "rs:main Q:Reg"
 #0 [ffff88023abd5780] machine_kexec at ffffffff81038f3b
 #1 [ffff88023abd57e0] crash_kexec at ffffffff810c5d92
 #2 [ffff88023abd58b0] oops_end at ffffffff8152b570
 #3 [ffff88023abd58e0] die at ffffffff81010e0b
 #4 [ffff88023abd5910] do_trap at ffffffff8152add4
 #5 [ffff88023abd5970] do_invalid_op at ffffffff8100cf95
 #6 [ffff88023abd5a10] invalid_op at ffffffff8100bf9b
    [exception RIP: vmxnet3_rq_rx_complete+1968]
    RIP: ffffffffa00f1e80  RSP: ffff88023abd5ac8  RFLAGS: 00010086
    RAX: 0000000000000000  RBX: ffff88023b5dcee0  RCX: 00000000000000c0
    RDX: 0000000000000000  RSI: 00000000000005f2  RDI: ffff88023b5dcee0
    RBP: ffff88023abd5b48   R8: 0000000000000000   R9: ffff88023a3b6048
    R10: 0000000000000000  R11: 0000000000000002  R12: ffff8802398d4cd8
    R13: ffff88023af35140  R14: ffff88023b60c890  R15: 0000000000000000
    ORIG_RAX: ffffffffffffffff  CS: 0010  SS: 0018
 #7 [ffff88023abd5b50] vmxnet3_do_poll at ffffffffa00f204a [vmxnet3]
 #8 [ffff88023abd5b80] vmxnet3_netpoll at ffffffffa00f209c [vmxnet3]
 #9 [ffff88023abd5ba0] netpoll_poll_dev at ffffffff81472bb7

The fix is to do as other drivers do, and have the poll controller call the top
half interrupt handler, which schedules a napi poll properly to recieve frames

Tested by myself, successfully.

Signed-off-by: Neil Horman &lt;nhorman@tuxdriver.com&gt;
CC: Shreyas Bhatewara &lt;sbhatewara@vmware.com&gt;
CC: "VMware, Inc." &lt;pv-drivers@vmware.com&gt;
CC: "David S. Miller" &lt;davem@davemloft.net&gt;
Reviewed-by: Shreyas N Bhatewara &lt;sbhatewara@vmware.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>VMXNET3: Add support for virtual IOMMU</title>
<updated>2013-08-27T20:02:02+00:00</updated>
<author>
<name>Andy King</name>
<email>acking@vmware.com</email>
</author>
<published>2013-08-23T16:33:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=b0eb57cb97e7837ebb746404c2c58c6f536f23fa'/>
<id>b0eb57cb97e7837ebb746404c2c58c6f536f23fa</id>
<content type='text'>
This patch adds support for virtual IOMMU to the vmxnet3 module.  We
switch to DMA consistent mappings for anything we pass to the device.
There were a few places where we already did this, but using pci_blah();
these have been fixed to use dma_blah(), along with all new occurrences
where we've replaced kmalloc() and friends.

Also fix two small bugs:
1) use after free of rq-&gt;buf_info in vmxnet3_rq_destroy()
2) a cpu_to_le32() that should have been a cpu_to_le64()

Acked-by: George Zhang &lt;georgezhang@vmware.com&gt;
Acked-by: Aditya Sarwade &lt;asarwade@vmware.com&gt;
Signed-off-by: Andy King &lt;acking@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 patch adds support for virtual IOMMU to the vmxnet3 module.  We
switch to DMA consistent mappings for anything we pass to the device.
There were a few places where we already did this, but using pci_blah();
these have been fixed to use dma_blah(), along with all new occurrences
where we've replaced kmalloc() and friends.

Also fix two small bugs:
1) use after free of rq-&gt;buf_info in vmxnet3_rq_destroy()
2) a cpu_to_le32() that should have been a cpu_to_le64()

Acked-by: George Zhang &lt;georgezhang@vmware.com&gt;
Acked-by: Aditya Sarwade &lt;asarwade@vmware.com&gt;
Signed-off-by: Andy King &lt;acking@vmware.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>net: vlan: add protocol argument to packet tagging functions</title>
<updated>2013-04-19T18:46:06+00:00</updated>
<author>
<name>Patrick McHardy</name>
<email>kaber@trash.net</email>
</author>
<published>2013-04-19T02:04:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=86a9bad3ab6b6f858fd4443b48738cabbb6d094c'/>
<id>86a9bad3ab6b6f858fd4443b48738cabbb6d094c</id>
<content type='text'>
Add a protocol argument to the VLAN packet tagging functions. In case of HW
tagging, we need that protocol available in the ndo_start_xmit functions,
so it is stored in a new field in the skb. The new field fits into a hole
(on 64 bit) and doesn't increase the sks's size.

Signed-off-by: Patrick McHardy &lt;kaber@trash.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>
Add a protocol argument to the VLAN packet tagging functions. In case of HW
tagging, we need that protocol available in the ndo_start_xmit functions,
so it is stored in a new field in the skb. The new field fits into a hole
(on 64 bit) and doesn't increase the sks's size.

Signed-off-by: Patrick McHardy &lt;kaber@trash.net&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>net: vlan: prepare for 802.1ad VLAN filtering offload</title>
<updated>2013-04-19T18:45:27+00:00</updated>
<author>
<name>Patrick McHardy</name>
<email>kaber@trash.net</email>
</author>
<published>2013-04-19T02:04:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=80d5c3689b886308247da295a228a54df49a44f6'/>
<id>80d5c3689b886308247da295a228a54df49a44f6</id>
<content type='text'>
Change the rx_{add,kill}_vid callbacks to take a protocol argument in
preparation of 802.1ad support. The protocol argument used so far is
always htons(ETH_P_8021Q).

Signed-off-by: Patrick McHardy &lt;kaber@trash.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>
Change the rx_{add,kill}_vid callbacks to take a protocol argument in
preparation of 802.1ad support. The protocol argument used so far is
always htons(ETH_P_8021Q).

Signed-off-by: Patrick McHardy &lt;kaber@trash.net&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>net: vlan: rename NETIF_F_HW_VLAN_* feature flags to NETIF_F_HW_VLAN_CTAG_*</title>
<updated>2013-04-19T18:45:26+00:00</updated>
<author>
<name>Patrick McHardy</name>
<email>kaber@trash.net</email>
</author>
<published>2013-04-19T02:04:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=f646968f8f7c624587de729115d802372b9063dd'/>
<id>f646968f8f7c624587de729115d802372b9063dd</id>
<content type='text'>
Rename the hardware VLAN acceleration features to include "CTAG" to indicate
that they only support CTAGs. Follow up patches will introduce 802.1ad
server provider tagging (STAGs) and require the distinction for hardware not
supporting acclerating both.

Signed-off-by: Patrick McHardy &lt;kaber@trash.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>
Rename the hardware VLAN acceleration features to include "CTAG" to indicate
that they only support CTAGs. Follow up patches will introduce 802.1ad
server provider tagging (STAGs) and require the distinction for hardware not
supporting acclerating both.

Signed-off-by: Patrick McHardy &lt;kaber@trash.net&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>vmxnet3: prevent div-by-zero panic when ring resizing uninitialized dev</title>
<updated>2013-03-07T21:10:47+00:00</updated>
<author>
<name>Bhavesh Davda</name>
<email>bhavesh@vmware.com</email>
</author>
<published>2013-03-06T12:04:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=e4fabf2b6e6d75752d5eede57f23ff8e9c6aa09b'/>
<id>e4fabf2b6e6d75752d5eede57f23ff8e9c6aa09b</id>
<content type='text'>
Linux is free to call ethtool ops as soon as a netdev exists when probe
finishes. However, we only allocate vmxnet3 tx/rx queues and initialize the
rx_buf_per_pkt field in struct vmxnet3_adapter when the interface is
opened (UP).

Signed-off-by: Bhavesh Davda &lt;bhavesh@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>
Linux is free to call ethtool ops as soon as a netdev exists when probe
finishes. However, we only allocate vmxnet3 tx/rx queues and initialize the
rx_buf_per_pkt field in struct vmxnet3_adapter when the interface is
opened (UP).

Signed-off-by: Bhavesh Davda &lt;bhavesh@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: fix ethtool ring buffer size setting</title>
<updated>2013-02-25T01:18:55+00:00</updated>
<author>
<name>Neil Horman</name>
<email>nhorman@tuxdriver.com</email>
</author>
<published>2013-02-22T10:32:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=48412a7e7db656b6a1e52799c39f461a06292395'/>
<id>48412a7e7db656b6a1e52799c39f461a06292395</id>
<content type='text'>
Noticed that vmxnet3's get_ringparam function was returning the summation of all
ring buffers on a NIC, rather than just the size of any one ring.  This causes
problems when a vmxnet3 instance has multiple queues, as ethtool, when setting
ring parameters, first gets the current ring parameters to set the existing
values in the set_ringparm commannd.  The result is, that unless both rx and tx
ring sizes are set in a single operation, which ever ring is not set will
silently have its ring count multiplied by the number of queues on the NIC until
it reaches a driver defined maxiumum value.

Fix it by not multiplying the rx and tx ring sizes by the number of queues in
the system, like every other driver.  Tested by myself successfully.

Signed-off-by: Neil Horman &lt;nhorman@tuxdriver.com&gt;
CC: Shreyas Bhatewara &lt;sbhatewara@vmware.com&gt;
CC: "VMware, Inc." &lt;pv-drivers@vmware.com&gt;
CC: "David S. 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>
Noticed that vmxnet3's get_ringparam function was returning the summation of all
ring buffers on a NIC, rather than just the size of any one ring.  This causes
problems when a vmxnet3 instance has multiple queues, as ethtool, when setting
ring parameters, first gets the current ring parameters to set the existing
values in the set_ringparm commannd.  The result is, that unless both rx and tx
ring sizes are set in a single operation, which ever ring is not set will
silently have its ring count multiplied by the number of queues on the NIC until
it reaches a driver defined maxiumum value.

Fix it by not multiplying the rx and tx ring sizes by the number of queues in
the system, like every other driver.  Tested by myself successfully.

Signed-off-by: Neil Horman &lt;nhorman@tuxdriver.com&gt;
CC: Shreyas Bhatewara &lt;sbhatewara@vmware.com&gt;
CC: "VMware, Inc." &lt;pv-drivers@vmware.com&gt;
CC: "David S. Miller" &lt;davem@davemloft.net&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>vmxnet3: make local function static</title>
<updated>2013-02-25T01:18:55+00:00</updated>
<author>
<name>stephen hemminger</name>
<email>stephen@networkplumber.org</email>
</author>
<published>2013-02-22T08:26:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=280b74f7f957130385a0f5184b50fc5800520146'/>
<id>280b74f7f957130385a0f5184b50fc5800520146</id>
<content type='text'>
Signed-off-by: Stephen Hemminger &lt;stephen@networkplumber.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>
Signed-off-by: Stephen Hemminger &lt;stephen@networkplumber.org&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
</feed>
