Message ID | 1590394694-5505-1-git-send-email-fugang.duan@nxp.com (mailing list archive) |
---|---|
State | Mainlined |
Commit | f2fb6b6275eba9d312957ca44c487bd780da6169 |
Headers | show |
Series | [net,1/1] net: stmmac: enable timestamp snapshot for required PTP packets in dwmac v5.10a | expand |
From: Fugang Duan <fugang.duan@nxp.com> Date: Mon, 25 May 2020 16:18:14 +0800 > For rx filter 'HWTSTAMP_FILTER_PTP_V2_EVENT', it should be > PTP v2/802.AS1, any layer, any kind of event packet, but HW only > take timestamp snapshot for below PTP message: sync, Pdelay_req, > Pdelay_resp. > > Then it causes below issue when test E2E case: > ptp4l[2479.534]: port 1: received DELAY_REQ without timestamp > ptp4l[2481.423]: port 1: received DELAY_REQ without timestamp > ptp4l[2481.758]: port 1: received DELAY_REQ without timestamp > ptp4l[2483.524]: port 1: received DELAY_REQ without timestamp > ptp4l[2484.233]: port 1: received DELAY_REQ without timestamp > ptp4l[2485.750]: port 1: received DELAY_REQ without timestamp > ptp4l[2486.888]: port 1: received DELAY_REQ without timestamp > ptp4l[2487.265]: port 1: received DELAY_REQ without timestamp > ptp4l[2487.316]: port 1: received DELAY_REQ without timestamp > > Timestamp snapshot dependency on register bits in received path: > SNAPTYPSEL TSMSTRENA TSEVNTENA PTP_Messages > 01 x 0 SYNC, Follow_Up, Delay_Req, > Delay_Resp, Pdelay_Req, Pdelay_Resp, > Pdelay_Resp_Follow_Up > 01 0 1 SYNC, Pdelay_Req, Pdelay_Resp > > For dwmac v5.10a, enabling all events by setting register > DWC_EQOS_TIME_STAMPING[SNAPTYPSEL] to 2’b01, clearing bit [TSEVNTENA] > to 0’b0, which can support all required events. > > Signed-off-by: Fugang Duan <fugang.duan@nxp.com> Applied and queued up for -stable, thanks.
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c index b6f92c7..73677c3 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c @@ -630,7 +630,8 @@ static int stmmac_hwtstamp_set(struct net_device *dev, struct ifreq *ifr) config.rx_filter = HWTSTAMP_FILTER_PTP_V2_EVENT; ptp_v2 = PTP_TCR_TSVER2ENA; snap_type_sel = PTP_TCR_SNAPTYPSEL_1; - ts_event_en = PTP_TCR_TSEVNTENA; + if (priv->synopsys_id != DWMAC_CORE_5_10) + ts_event_en = PTP_TCR_TSEVNTENA; ptp_over_ipv4_udp = PTP_TCR_TSIPV4ENA; ptp_over_ipv6_udp = PTP_TCR_TSIPV6ENA; ptp_over_ethernet = PTP_TCR_TSIPENA;
For rx filter 'HWTSTAMP_FILTER_PTP_V2_EVENT', it should be PTP v2/802.AS1, any layer, any kind of event packet, but HW only take timestamp snapshot for below PTP message: sync, Pdelay_req, Pdelay_resp. Then it causes below issue when test E2E case: ptp4l[2479.534]: port 1: received DELAY_REQ without timestamp ptp4l[2481.423]: port 1: received DELAY_REQ without timestamp ptp4l[2481.758]: port 1: received DELAY_REQ without timestamp ptp4l[2483.524]: port 1: received DELAY_REQ without timestamp ptp4l[2484.233]: port 1: received DELAY_REQ without timestamp ptp4l[2485.750]: port 1: received DELAY_REQ without timestamp ptp4l[2486.888]: port 1: received DELAY_REQ without timestamp ptp4l[2487.265]: port 1: received DELAY_REQ without timestamp ptp4l[2487.316]: port 1: received DELAY_REQ without timestamp Timestamp snapshot dependency on register bits in received path: SNAPTYPSEL TSMSTRENA TSEVNTENA PTP_Messages 01 x 0 SYNC, Follow_Up, Delay_Req, Delay_Resp, Pdelay_Req, Pdelay_Resp, Pdelay_Resp_Follow_Up 01 0 1 SYNC, Pdelay_Req, Pdelay_Resp For dwmac v5.10a, enabling all events by setting register DWC_EQOS_TIME_STAMPING[SNAPTYPSEL] to 2’b01, clearing bit [TSEVNTENA] to 0’b0, which can support all required events. Signed-off-by: Fugang Duan <fugang.duan@nxp.com> --- drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)