linux/drivers/net
Daniel Mack 9a81cc23df wcn36xx: fix buffer commit logic on TX path
When wcn36xx_dxe_tx_frame() is entered while the device is still processing
the queue asyncronously, we are racing against the firmware code with
updates to the buffer descriptors. Presumably, the firmware scans the ring
buffer that holds the descriptors and scans for a valid control descriptor,
and then assumes that the next descriptor contains the payload. If, however,
the control descriptor is marked valid, but the payload descriptor isn't,
the packet is not sent out.

Another issue with the current code is that is lacks memory barriers before
descriptors are marked valid. This is important because the CPU may reorder
writes to memory, even if it is allocated as coherent DMA area, and hence
the device may see incompletely written data.

To fix this, the code in wcn36xx_dxe_tx_frame() was restructured a bit so
that the payload descriptor is made valid before the control descriptor.
Memory barriers are added to ensure coherency of shared memory areas.

Signed-off-by: Daniel Mack <daniel@zonque.org>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
2018-05-25 13:06:59 +03:00
..
appletalk
arcnet
bonding bonding: introduce link change helper 2018-05-17 15:51:13 -04:00
caif
can can: hi311x: Work around TX complete interrupt erratum 2018-05-10 18:25:30 +02:00
dsa Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2018-05-21 16:01:54 -04:00
ethernet ti: ethernet: davinci: Fix cast to int warnings 2018-05-21 16:17:10 -04:00
fddi
fjes
hamradio
hippi hippi: fix spelling mistake: "Framming" -> "Framing" 2018-05-18 13:44:08 -04:00
hyperv Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2018-05-11 20:53:22 -04:00
ieee802154
ipvlan ipvlan: call netdevice notifier when master mac address changed 2018-05-16 11:59:41 -04:00
netdevsim
phy Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2018-05-21 16:01:54 -04:00
plip
ppp
slip
team
usb drivers: net: Remove device_node checks with of_mdiobus_register() 2018-05-16 14:20:36 -04:00
vmxnet3 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2018-05-21 16:01:54 -04:00
wan
wimax
wireless wcn36xx: fix buffer commit logic on TX path 2018-05-25 13:06:59 +03:00
xen-netback
dummy.c
eql.c
geneve.c
gtp.c
ifb.c
Kconfig
LICENSE.SRC
loopback.c
macsec.c
macvlan.c
macvtap.c
Makefile
mdio.c
mii.c
netconsole.c
nlmon.c
ntb_netdev.c
rionet.c
sb1000.c
Space.c
sungem_phy.c
tap.c
thunderbolt.c
tun.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2018-05-21 16:01:54 -04:00
veth.c
virtio_net.c
vrf.c
vsockmon.c
vxlan.c
xen-netfront.c