<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel/linux.git/drivers/net/vmxnet3, branch v4.17.1</title>
<subtitle>Linux kernel stable tree (mirror)</subtitle>
<id>https://git.radix-linux.su/kernel/linux.git/atom?h=v4.17.1</id>
<link rel='self' href='https://git.radix-linux.su/kernel/linux.git/atom?h=v4.17.1'/>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/'/>
<updated>2018-05-15T02:43:57+00:00</updated>
<entry>
<title>vmxnet3: use DMA memory barriers where required</title>
<updated>2018-05-15T02:43:57+00:00</updated>
<author>
<name>hpreg@vmware.com</name>
<email>hpreg@vmware.com</email>
</author>
<published>2018-05-14T12:14:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=f3002c1374fb2367c9d8dbb28852791ef90d2bac'/>
<id>urn:sha1:f3002c1374fb2367c9d8dbb28852791ef90d2bac</id>
<content type='text'>
The gen bits must be read first from (resp. written last to) DMA memory.
The proper way to enforce this on Linux is to call dma_rmb() (resp.
dma_wmb()).

Signed-off-by: Regis Duchesne &lt;hpreg@vmware.com&gt;
Acked-by: Ronak Doshi &lt;doshir@vmware.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>vmxnet3: set the DMA mask before the first DMA map operation</title>
<updated>2018-05-15T02:43:57+00:00</updated>
<author>
<name>hpreg@vmware.com</name>
<email>hpreg@vmware.com</email>
</author>
<published>2018-05-14T12:14:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=61aeecea40afb2b89933e27cd4adb10fc2e75cfd'/>
<id>urn:sha1:61aeecea40afb2b89933e27cd4adb10fc2e75cfd</id>
<content type='text'>
The DMA mask must be set before, not after, the first DMA map operation, or
the first DMA map operation could in theory fail on some systems.

Fixes: b0eb57cb97e78 ("VMXNET3: Add support for virtual IOMMU")
Signed-off-by: Regis Duchesne &lt;hpreg@vmware.com&gt;
Acked-by: Ronak Doshi &lt;doshir@vmware.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>vmxnet3: fix incorrect dereference when rxvlan is disabled</title>
<updated>2018-04-19T17:59:05+00:00</updated>
<author>
<name>Ronak Doshi</name>
<email>doshir@vmware.com</email>
</author>
<published>2018-04-18T19:48:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=65ec0bd1c7c14522670a5294de35710fb577a7fd'/>
<id>urn:sha1:65ec0bd1c7c14522670a5294de35710fb577a7fd</id>
<content type='text'>
vmxnet3_get_hdr_len() is used to calculate the header length which in
turn is used to calculate the gso_size for skb. When rxvlan offload is
disabled, vlan tag is present in the header and the function references
ip header from sizeof(ethhdr) and leads to incorrect pointer reference.

This patch fixes this issue by taking sizeof(vlan_ethhdr) into account
if vlan tag is present and correctly references the ip hdr.

Signed-off-by: Ronak Doshi &lt;doshir@vmware.com&gt;
Acked-by: Guolin Yang &lt;gyang@vmware.com&gt;
Acked-by: Louis Luo &lt;llouis@vmware.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>vmxnet3: remove unused flag "rxcsum" from struct vmxnet3_adapter</title>
<updated>2018-03-20T14:56:25+00:00</updated>
<author>
<name>Igor Pylypiv</name>
<email>ipylypiv@silver-peak.com</email>
</author>
<published>2018-03-18T01:17:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=8137a8e2190975ed9060111ce13000792360aba3'/>
<id>urn:sha1:8137a8e2190975ed9060111ce13000792360aba3</id>
<content type='text'>
Signed-off-by: Igor Pylypiv &lt;ipylypiv@silver-peak.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>vmxnet3: use correct flag to indicate LRO feature</title>
<updated>2018-03-18T00:03:53+00:00</updated>
<author>
<name>Ronak Doshi</name>
<email>doshir@vmware.com</email>
</author>
<published>2018-03-16T21:49:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=034f405793897a3c8f642935f5494b86c340cde7'/>
<id>urn:sha1:034f405793897a3c8f642935f5494b86c340cde7</id>
<content type='text'>
'Commit 45dac1d6ea04 ("vmxnet3: Changes for vmxnet3 adapter version 2
(fwd)")' introduced a flag "lro" in structure vmxnet3_adapter which is
used to indicate whether LRO is enabled or not. However, the patch
did not set the flag and hence it was never exercised.

So, when LRO is enabled, it resulted in poor TCP performance due to
delayed acks. This issue is seen with packets which are larger than
the mss getting a delayed ack rather than an immediate ack, thus
resulting in high latency.

This patch removes the lro flag and directly uses device features
against NETIF_F_LRO to check if lro is enabled.

Fixes: 45dac1d6ea04 ("vmxnet3: Changes for vmxnet3 adapter version 2 (fwd)")
Reported-by: Rachel Lunnon &lt;rachel_lunnon@stormagic.com&gt;
Signed-off-by: Ronak Doshi &lt;doshir@vmware.com&gt;
Acked-by: Shrikrishna Khare &lt;skhare@vmware.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>vmxnet3: avoid xmit reset due to a race in vmxnet3</title>
<updated>2018-03-18T00:03:53+00:00</updated>
<author>
<name>Ronak Doshi</name>
<email>doshir@vmware.com</email>
</author>
<published>2018-03-16T21:47:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=7a4c003d6921e2af215f4790aa43a292bdc78be0'/>
<id>urn:sha1:7a4c003d6921e2af215f4790aa43a292bdc78be0</id>
<content type='text'>
The field txNumDeferred is used by the driver to keep track of the number
of packets it has pushed to the emulation. The driver increments it on
pushing the packet to the emulation and the emulation resets it to 0 at
the end of the transmit.

There is a possibility of a race either when (a) ESX is under heavy load or
(b) workload inside VM is of low packet rate.

This race results in xmit hangs when network coalescing is disabled. This
change creates a local copy of txNumDeferred and uses it to perform ring
arithmetic.

Reported-by: Noriho Tanaka &lt;ntanaka@vmware.com&gt;
Signed-off-by: Ronak Doshi &lt;doshir@vmware.com&gt;
Acked-by: Shrikrishna Khare &lt;skhare@vmware.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>vmxnet3: remove redundant initialization of pointer 'rq'</title>
<updated>2018-02-01T19:54:28+00:00</updated>
<author>
<name>Colin Ian King</name>
<email>colin.king@canonical.com</email>
</author>
<published>2018-02-01T17:29:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=5e264e2b532966bfcfe8869a3fccc9876ec2122c'/>
<id>urn:sha1:5e264e2b532966bfcfe8869a3fccc9876ec2122c</id>
<content type='text'>
Pointer rq is being initialized but this value is never read, it
is being updated inside a for-loop. Remove the initialization and
move it into the scope of the for-loop.

Cleans up clang warning:
drivers/net/vmxnet3/vmxnet3_drv.c:2763:27: warning: Value stored
to 'rq' during its initialization is never read

Signed-off-by: Colin Ian King &lt;colin.king@canonical.com&gt;
Acked-by: Shrikrishna Khare &lt;skhare@vmware.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net</title>
<updated>2018-01-25T04:44:15+00:00</updated>
<author>
<name>David S. Miller</name>
<email>davem@davemloft.net</email>
</author>
<published>2018-01-25T04:44:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=955bd1d216c6ce4f40b181cfd369f4116e0627f2'/>
<id>urn:sha1:955bd1d216c6ce4f40b181cfd369f4116e0627f2</id>
<content type='text'>
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>vmxnet3: repair memory leak</title>
<updated>2018-01-24T00:57:52+00:00</updated>
<author>
<name>Neil Horman</name>
<email>nhorman@tuxdriver.com</email>
</author>
<published>2018-01-22T21:06:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=848b159835ddef99cc4193083f7e786c3992f580'/>
<id>urn:sha1:848b159835ddef99cc4193083f7e786c3992f580</id>
<content type='text'>
with the introduction of commit
b0eb57cb97e7837ebb746404c2c58c6f536f23fa, it appears that rq-&gt;buf_info
is improperly handled.  While it is heap allocated when an rx queue is
setup, and freed when torn down, an old line of code in
vmxnet3_rq_destroy was not properly removed, leading to rq-&gt;buf_info[0]
being set to NULL prior to its being freed, causing a memory leak, which
eventually exhausts the system on repeated create/destroy operations
(for example, when  the mtu of a vmxnet3 interface is changed
frequently.

Fix is pretty straight forward, just move the NULL set to after the
free.

Tested by myself with successful results

Applies to net, and should likely be queued for stable, please

Signed-off-by: Neil Horman &lt;nhorman@tuxdriver.com&gt;
Reported-By: boyang@redhat.com
CC: boyang@redhat.com
CC: Shrikrishna Khare &lt;skhare@vmware.com&gt;
CC: "VMware, Inc." &lt;pv-drivers@vmware.com&gt;
CC: David S. Miller &lt;davem@davemloft.net&gt;
Acked-by: Shrikrishna Khare &lt;skhare@vmware.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>vmxnet3: increase default rx ring sizes</title>
<updated>2017-11-30T19:06:58+00:00</updated>
<author>
<name>Shrikrishna Khare</name>
<email>skhare@vmware.com</email>
</author>
<published>2017-11-30T18:29:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=7475908fbe5d9e669c40d9a4ceee6d4c4fedbbdc'/>
<id>urn:sha1:7475908fbe5d9e669c40d9a4ceee6d4c4fedbbdc</id>
<content type='text'>
There are several reasons for increasing the receive ring sizes:

1. The original ring size of 256 was chosen about 10 years ago when
vmxnet3 was first created. At that time, 10Gbps Ethernet was not prevalent
and servers were dominated by 1Gbps Ethernet. Now 10Gbps is common place,
and higher bandwidth links -- 25Gbps, 40Gbps, 50Gbps -- are starting
to appear. 256 Rx ring entries are simply not enough to keep up with
higher link speed when there is a burst of network frames coming from
these high speed links. Even with full MTU size frames, they are gone
in a short time. It is also more common to have a mix of frame sizes,
and more likely bi-modal distribution of frame sizes so the average frame
size is not close to full MTU. If we consider average frame size of 800B,
1024 frames that come in a burst takes ~0.65 ms to arrive at 10Gbps. With
256 entires, it takes ~0.16 ms to arrive at 10Gbps.  At 25Gbps or 40Gbps,
this time is reduced accordingly.

2. On a hypervisor where there are many VMs and CPU is over committed,
i.e. the number of VCPUs is more than the number of VCPUs, each PCPU is
in effect time shared between multiple VMs/VCPUs. The time granularity at
which this multiplexing occurs is typically coarser than between processes
on a guest OS. Trying to time slice more finely is not efficient, for
example, if memory cache is barely warmed up when switching from one VM
to another occurs. This CPU overcommit adds delay to when the driver
in a VM can service incoming packets. Whether CPU is over committed
really depends on customer workloads. For certain situations, it is very
common. For example, workloads of desktop VMs and product testing setups.
Consolidation and sharing is what drives efficiency of a customer setup
for such workloads. In these situations, the raw network bandwidth may
not be very high, but the delays between when a VM is running or not
running can also be relatively long.

Signed-off-by: Shrikrishna Khare &lt;skhare@vmware.com&gt;
Acked-by: Jin Heo &lt;heoj@vmware.com&gt;
Acked-by: Guolin Yang &lt;gyang@vmware.com&gt;
Acked-by: Boon Ang &lt;bang@vmware.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
</feed>
