]> git.baikalelectronics.ru Git - kernel.git/commit
vmxnet3: avoid xmit reset due to a race in vmxnet3
authorRonak Doshi <doshir@vmware.com>
Fri, 16 Mar 2018 21:47:54 +0000 (14:47 -0700)
committerDavid S. Miller <davem@davemloft.net>
Sun, 18 Mar 2018 00:03:53 +0000 (20:03 -0400)
commit058e1c1cca1236ce131064d8602b5557415f0dcf
treeaea16a315528e4d9dc4e1367e63958c6e9cec0d8
parent058ff7fcbfbb40a1f20e9750343d35e93aa358d8
vmxnet3: avoid xmit reset due to a race in vmxnet3

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 <ntanaka@vmware.com>
Signed-off-by: Ronak Doshi <doshir@vmware.com>
Acked-by: Shrikrishna Khare <skhare@vmware.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/vmxnet3/vmxnet3_drv.c
drivers/net/vmxnet3/vmxnet3_int.h