OpenCloudOS-Kernel/drivers/net/ethernet/stmicro/stmmac
Niklas Cassel 1e88f6e01b net: stmmac: make dwmac4_release_tx_desc() clear all descriptor fields
Make dwmac4_release_tx_desc() clear all descriptor fields, not just
TDES2 and TDES3.

I'm suspecting that TDES0 and TDES1 wasn't cleared because the DMA
engine uses them to store the tx hardware timestamp (if PTP is enabled).

However, stmmac_tx_clean() calls stmmac_get_tx_hwtstamp(), which reads
and saves the timestamp, before it calls release_tx_desc(), so this
is not an issue.

stmmac_xmit() and stmmac_tso_xmit() both always overwrite TDES0,
however, stmmac_tso_xmit() sometimes sets TDES1, and since neither
stmmac_xmit() nor stmmac_tso_xmit() explicitly clears TDES1, both
functions might reuse a DMA descriptor with old TDES1 data.

I haven't observed any misbehavior even though TDES1 sometimes
point to an old skb, however, explicitly clearing both TDES0 and TDES1
in dwmac4_release_tx_desc() minimizes the chances of undefined behavior.

Signed-off-by: Niklas Cassel <niklas.cassel@axis.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2018-02-27 14:28:10 -05:00
..
Kconfig net: stmmac: dwmac-sun8i: Handle integrated/external MDIOs 2017-10-27 11:58:49 +09:00
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
altr_tse_pcs.c net: ethernet: stmmac: Convert timers to use timer_setup() 2017-10-18 12:39:37 +01:00
altr_tse_pcs.h net: ethernet: Add TSE PCS support to dwmac-socfpga 2016-07-10 22:07:50 -07:00
chain_mode.c net: stmmac: set total length of the packet to be transmitted in TDES3 2017-04-13 12:40:09 -04:00
common.h net: stmmac: Fix reception of Broadcom switches tags 2018-01-22 16:12:11 -05:00
descs.h net: stmmac: remove freesoftware address 2017-02-08 15:11:23 -05:00
descs_com.h net: stmmac: remove freesoftware address 2017-02-08 15:11:23 -05:00
dwmac-anarion.c net: stmmac: Add Adaptrum Anarion GMAC glue layer 2017-08-06 21:31:32 -07:00
dwmac-dwc-qos-eth.c net: stmmac: dwc-qos-eth: Fix typo in DT bindings parsing 2017-10-27 23:23:19 +09:00
dwmac-generic.c net: stmmac: dwmac-generic: add missing compatible strings 2016-12-08 11:35:37 -05:00
dwmac-ipq806x.c net: ethernet: stmmac: Clean up dead code 2017-10-08 21:19:07 -07:00
dwmac-lpc18xx.c net: ethernet: stmmac: fix of-node and fixed-link-phydev leaks 2016-12-02 10:42:47 -05:00
dwmac-meson.c net: ethernet: stmmac: fix of-node and fixed-link-phydev leaks 2016-12-02 10:42:47 -05:00
dwmac-meson8b.c net: stmmac: dwmac-meson8b: make the clock configurations private 2018-02-19 11:26:31 -05:00
dwmac-oxnas.c net: stmmac: dwmac-oxnas: use generic pm implementation 2017-01-03 09:33:00 -05:00
dwmac-rk.c net: stmmac: dwmac-rk: Add RK3128 GMAC support 2017-10-03 15:39:56 -07:00
dwmac-socfpga.c net: stmmac: socfgpa: Ensure emac bit set in sys manager for MII/GMII/SGMII. 2017-08-23 20:26:58 -07:00
dwmac-sti.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2016-12-03 12:29:53 -05:00
dwmac-stm32.c ethernet: dwmac-stm32: Fix copyright 2017-11-29 10:08:09 -05:00
dwmac-sun8i.c net: stmmac: Fix reception of Broadcom switches tags 2018-01-22 16:12:11 -05:00
dwmac-sunxi.c net: ethernet: stmmac: fix of-node and fixed-link-phydev leaks 2016-12-02 10:42:47 -05:00
dwmac4.h net: stmmac: rename GMAC_INT_DEFAULT_MASK for dwmac4 2018-02-09 14:23:04 -05:00
dwmac4_core.c net: stmmac: rename dwmac4_tx_queue_routing() to match reality 2018-02-20 14:13:19 -05:00
dwmac4_descs.c net: stmmac: make dwmac4_release_tx_desc() clear all descriptor fields 2018-02-27 14:28:10 -05:00
dwmac4_descs.h stmmac: fix PTP support for GMAC4 2016-11-15 19:56:17 -05:00
dwmac4_dma.c net: stmmac: Disable flow ctrl for RX AVB queues and really enable TX AVB queues 2017-10-14 11:12:08 -07:00
dwmac4_dma.h net: stmmac: rx and tx ring length prepared for multiple queues 2017-03-15 14:44:32 -07:00
dwmac4_lib.c net: stmmac: prepare rx/tx set tail function for multiple queues 2017-03-15 14:44:32 -07:00
dwmac100.h net: stmmac: remove freesoftware address 2017-02-08 15:11:23 -05:00
dwmac100_core.c net: stmmac: Fix reception of Broadcom switches tags 2018-01-22 16:12:11 -05:00
dwmac100_dma.c net: stmmac: Adjust dump offset of DMA registers for ethtool 2017-07-24 16:19:10 -07:00
dwmac1000.h net: stmmac: remove freesoftware address 2017-02-08 15:11:23 -05:00
dwmac1000_core.c net: stmmac: remove redundant enable of PMT irq 2018-02-09 14:23:04 -05:00
dwmac1000_dma.c net: stmmac: Adjust dump offset of DMA registers for ethtool 2017-07-24 16:19:10 -07:00
dwmac_dma.h net: stmmac: Adjust dump offset of DMA registers for ethtool 2017-07-24 16:19:10 -07:00
dwmac_lib.c net: stmmac: dwmac_lib: fix interchanged sleep/timeout values in DMA reset function 2017-10-13 10:19:52 -07:00
enh_desc.c net: stmmac: do not use a bitwise AND operator with a bool operand 2018-01-24 16:28:07 -05:00
mmc.h net: stmmac: remove freesoftware address 2017-02-08 15:11:23 -05:00
mmc_core.c net: stmmac: remove freesoftware address 2017-02-08 15:11:23 -05:00
norm_desc.c net: stmmac: Pad ring number with zeroes in display_ring() 2018-01-02 21:54:56 -05:00
ring_mode.c net: stmmac: set total length of the packet to be transmitted in TDES3 2017-04-13 12:40:09 -04:00
stmmac.h net: stmmac: set MSS for each tx DMA channel 2018-02-20 14:13:17 -05:00
stmmac_ethtool.c net: stmmac: Adjust dump offset of DMA registers for ethtool 2017-07-24 16:19:10 -07:00
stmmac_hwtstamp.c net: stmmac: Fix TX timestamp calculation 2017-12-19 14:12:14 -05:00
stmmac_main.c net: stmmac: ensure that the device has released ownership before reading data 2018-02-27 14:28:10 -05:00
stmmac_mdio.c net: stmmac: Delete dead code for MDIO registration 2017-09-05 14:36:18 -07:00
stmmac_pci.c stmmac: pci: Use dmi_system_id table for retrieving PHY addresses 2017-06-22 13:39:57 -04:00
stmmac_pcs.h drivers: net: stmmac: reworking the PCS code. 2016-06-28 08:54:23 -04:00
stmmac_platform.c net: stmmac: honor error code from stmmac_dt_phy() 2018-02-20 14:13:22 -05:00
stmmac_platform.h net: ethernet: stmmac: fix of-node and fixed-link-phydev leaks 2016-12-02 10:42:47 -05:00
stmmac_ptp.c net: ethernet: make ptp_clock_info const 2017-08-22 11:04:51 -07:00
stmmac_ptp.h stmmac: fix ptp header for GMAC3 hw timestamp 2017-06-09 12:39:25 -04:00