Patch "net: stmmac: Fix bad RX timestamp extraction" has been added to the 4.14-stable tree
Subsystems (4)
This is a note to let you know that I've just added the patch titled
net: stmmac: Fix bad RX timestamp extraction
to the 4.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
net-stmmac-fix-bad-rx-timestamp-extraction.patch
and it can be found in the queue-4.14 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From foo@baz Wed Feb 28 16:23:28 CET 2018
From: Fredrik Hallenberg <[email protected]>
Date: Mon, 18 Dec 2017 23:34:00 +0100
Subject: net: stmmac: Fix bad RX timestamp extraction
From: Fredrik Hallenberg <[email protected]>
[ Upstream commit a1762456993893795030d911106a7650481db0ef ]
As noted in dwmac4_wrback_get_rx_timestamp_status the timestamp is found in the context descriptor following the current descriptor. However the current code looks for the context descriptor in the current descriptor, which will always fail.
--- drivers/net/ethernet/stmicro/stmmac/common.h | 2 +- drivers/net/ethernet/stmicro/stmmac/dwmac4_descs.c | 5 +++-- drivers/net/ethernet/stmicro/stmmac/enh_desc.c | 3 ++- drivers/net/ethernet/stmicro/stmmac/norm_desc.c | 2 +- drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 2 +- 5 files changed, 8 insertions(+), 6 deletions(-)
drivers/net/ethernet/stmicro/stmmac/common.h +1 -1
@@ -409,7 +409,7 @@ struct stmmac_desc_ops {/* get timestamp value */ u64 (*get_timestamp) (void *desc,u32 ats);/* get rx timestamp status */ -int (*get_rx_timestamp_status) (void *desc,u32 ats); +int (*get_rx_timestamp_status)(void *desc,void *next_desc,u32 ats);/* Display ring */ void (*display_ring)(void *head,unsigned int size,bool rx);/* set MSS via context descriptor */
drivers/net/ethernet/stmicro/stmmac/dwmac4_descs.c +3 -2
@@ -258,7 +258,8 @@ static int dwmac4_rx_check_timestamp(voireturn ret; } -static int dwmac4_wrback_get_rx_timestamp_status (void *desc,u32 ats) +static int dwmac4_wrback_get_rx_timestamp_status (void *desc,void *next_desc, +u32 ats) {struct dma_desc *p = (struct dma_desc *)desc;int ret = -EINVAL ;
@@ -270,7 +271,7 @@ static int dwmac4_wrback_get_rx_timestam/* Check if timestamp is OK from context descriptor */ do { - ret = dwmac4_rx_check_timestamp(desc); + ret = dwmac4_rx_check_timestamp(next_desc); if (ret < 0) goto exit; i++;
drivers/net/ethernet/stmicro/stmmac/enh_desc.c +2 -1
@@ -400,7 +400,8 @@ static u64 enh_desc_get_timestamp(void *return ns; } -static int enh_desc_get_rx_timestamp_status (void *desc,u32 ats) +static int enh_desc_get_rx_timestamp_status (void *desc,void *next_desc, +u32 ats) {if (ats) {struct dma_extended_desc *p = (struct dma_extended_desc *)desc;
drivers/net/ethernet/stmicro/stmmac/norm_desc.c +1 -1
@@ -265,7 +265,7 @@ static u64 ndesc_get_timestamp(void *desreturn ns; } -static int ndesc_get_rx_timestamp_status (void *desc,u32 ats) +static int ndesc_get_rx_timestamp_status (void *desc,void *next_desc,u32 ats) {struct dma_desc *p = (struct dma_desc *)desc;
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +1 -1
@@ -489,7 +489,7 @@ static void stmmac_get_rx_hwtstamp(struc desc = np;/* Check if timestamp is available */ -if (priv->hw->desc->get_rx_timestamp_status (desc, priv->adv_ts)) { +if (priv->hw->desc->get_rx_timestamp_status (p, np, priv->adv_ts)) { ns = priv->hw->desc->get_timestamp (desc, priv->adv_ts);netdev_dbg (priv->dev,"get valid RX hw timestamp %llu\n" , ns); shhwtstamp =skb_hwtstamps (skb);
Patches currently in stable-queue which might be from [email protected] are
queue-4.14/net-stmmac-fix-tx-timestamp-calculation.patch queue-4.14/net-stmmac-fix-bad-rx-timestamp-extraction.patch