| From d0b8c64248c65936574faa37ff76530cdf94fedc Mon Sep 17 00:00:00 2001 |
| From: Fugang Duan <fugang.duan@nxp.com> |
| Date: Mon, 25 May 2020 16:18:14 +0800 |
| Subject: [PATCH] net: stmmac: enable timestamp snapshot for required PTP |
| packets in dwmac v5.10a |
| MIME-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| commit f2fb6b6275eba9d312957ca44c487bd780da6169 upstream. |
| |
| 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> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c |
| index 2a9a96f0400d..7ecd0ec39dcb 100644 |
| --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c |
| +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c |
| @@ -665,7 +665,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; |
| -- |
| 2.27.0 |
| |