Message ID | 1549368920-1989-1-git-send-email-ilias.apalodimas@linaro.org |
---|---|
State | New |
Headers | show |
Series | [net-next] net: stmmac: fix ptp timestamping on Rx on gmac4 | expand |
On 2/5/2019 12:15 PM, Ilias Apalodimas wrote: > The current driver only enables Pdelay_Req and Pdelay_Resp when > HWTSTAMP_FILTER_PTP_V2_EVENT, HWTSTAMP_FILTER_PTP_V1_L4_EVENT or > HWTSTAMP_FILTER_PTP_V2_L4_EVENT is requested. This results in ptp sync on > slave mode to report 'received SYNC without timestamp' when using ptp4l. > > Although the hardware can support Sync, Pdelay_Req and Pdelay_resp by > setting bit14 annd bits 17/16 to 01 this leaves Delay_Req timestamps out. > > Fix this by enabling all event and general messages timestamps. > This includes SYNC, Follow_Up, Delay_Req, Delay_Resp, Pdelay_Req, > Pdelay_Resp and Pdelay_Resp_Follow_Up messages. > > Signed-off-by: Ilias Apalodimas <ilias.apalodimas@linaro.org> Acked-by: Jose Abreu <joabreu@synopsys.com> and, on XGMAC2: Tested-by: Jose Abreu <joabreu@synopsys.com> Thanks, Jose Miguel Abreu
Hi Ilias On 2/5/19 1:15 PM, Ilias Apalodimas wrote: > The current driver only enables Pdelay_Req and Pdelay_Resp when > HWTSTAMP_FILTER_PTP_V2_EVENT, HWTSTAMP_FILTER_PTP_V1_L4_EVENT or > HWTSTAMP_FILTER_PTP_V2_L4_EVENT is requested. This results in ptp sync on > slave mode to report 'received SYNC without timestamp' when using ptp4l. > > Although the hardware can support Sync, Pdelay_Req and Pdelay_resp by > setting bit14 annd bits 17/16 to 01 this leaves Delay_Req timestamps out. > > Fix this by enabling all event and general messages timestamps. > This includes SYNC, Follow_Up, Delay_Req, Delay_Resp, Pdelay_Req, > Pdelay_Resp and Pdelay_Resp_Follow_Up messages. > > Signed-off-by: Ilias Apalodimas <ilias.apalodimas@linaro.org> For GMAC4 part: Tested-by: Alexandre TORGUE <alexandre.torgue@st.com>
From: Ilias Apalodimas <ilias.apalodimas@linaro.org> Date: Tue, 5 Feb 2019 14:15:20 +0200 > The current driver only enables Pdelay_Req and Pdelay_Resp when > HWTSTAMP_FILTER_PTP_V2_EVENT, HWTSTAMP_FILTER_PTP_V1_L4_EVENT or > HWTSTAMP_FILTER_PTP_V2_L4_EVENT is requested. This results in ptp sync on > slave mode to report 'received SYNC without timestamp' when using ptp4l. > > Although the hardware can support Sync, Pdelay_Req and Pdelay_resp by > setting bit14 annd bits 17/16 to 01 this leaves Delay_Req timestamps out. > > Fix this by enabling all event and general messages timestamps. > This includes SYNC, Follow_Up, Delay_Req, Delay_Resp, Pdelay_Req, > Pdelay_Resp and Pdelay_Resp_Follow_Up messages. > > Signed-off-by: Ilias Apalodimas <ilias.apalodimas@linaro.org> Applied to net-next, thanks.
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c index 517555b..effff17 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c @@ -597,12 +597,13 @@ static int stmmac_hwtstamp_set(struct net_device *dev, struct ifreq *ifr) case HWTSTAMP_FILTER_PTP_V1_L4_EVENT: /* PTP v1, UDP, any kind of event packet */ config.rx_filter = HWTSTAMP_FILTER_PTP_V1_L4_EVENT; - /* take time stamp for all event messages */ - if (xmac) - snap_type_sel = PTP_GMAC4_TCR_SNAPTYPSEL_1; - else - snap_type_sel = PTP_TCR_SNAPTYPSEL_1; - + /* 'xmac' hardware can support Sync, Pdelay_Req and + * Pdelay_resp by setting bit14 and bits17/16 to 01 + * This leaves Delay_Req timestamps out. + * Enable all events *and* general purpose message + * timestamping + */ + snap_type_sel = PTP_TCR_SNAPTYPSEL_1; ptp_over_ipv4_udp = PTP_TCR_TSIPV4ENA; ptp_over_ipv6_udp = PTP_TCR_TSIPV6ENA; break; @@ -633,10 +634,7 @@ static int stmmac_hwtstamp_set(struct net_device *dev, struct ifreq *ifr) config.rx_filter = HWTSTAMP_FILTER_PTP_V2_L4_EVENT; ptp_v2 = PTP_TCR_TSVER2ENA; /* take time stamp for all event messages */ - if (xmac) - snap_type_sel = PTP_GMAC4_TCR_SNAPTYPSEL_1; - else - snap_type_sel = PTP_TCR_SNAPTYPSEL_1; + snap_type_sel = PTP_TCR_SNAPTYPSEL_1; ptp_over_ipv4_udp = PTP_TCR_TSIPV4ENA; ptp_over_ipv6_udp = PTP_TCR_TSIPV6ENA; @@ -669,12 +667,7 @@ static int stmmac_hwtstamp_set(struct net_device *dev, struct ifreq *ifr) /* PTP v2/802.AS1 any layer, any kind of event packet */ config.rx_filter = HWTSTAMP_FILTER_PTP_V2_EVENT; ptp_v2 = PTP_TCR_TSVER2ENA; - /* take time stamp for all event messages */ - if (xmac) - snap_type_sel = PTP_GMAC4_TCR_SNAPTYPSEL_1; - else - snap_type_sel = PTP_TCR_SNAPTYPSEL_1; - + snap_type_sel = PTP_TCR_SNAPTYPSEL_1; ptp_over_ipv4_udp = PTP_TCR_TSIPV4ENA; ptp_over_ipv6_udp = PTP_TCR_TSIPV6ENA; ptp_over_ethernet = PTP_TCR_TSIPENA; diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_ptp.h b/drivers/net/ethernet/stmicro/stmmac/stmmac_ptp.h index ecccf89..e852821 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_ptp.h +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_ptp.h @@ -59,9 +59,14 @@ #define PTP_TCR_TSEVNTENA BIT(14) /* Enable Snapshot for Messages Relevant to Master */ #define PTP_TCR_TSMSTRENA BIT(15) -/* Select PTP packets for Taking Snapshots */ +/* Select PTP packets for Taking Snapshots + * On gmac4 specifically: + * Enable SYNC, Pdelay_Req, Pdelay_Resp when TSEVNTENA is enabled. + * or + * Enable SYNC, Follow_Up, Delay_Req, Delay_Resp, Pdelay_Req, Pdelay_Resp, + * Pdelay_Resp_Follow_Up if TSEVNTENA is disabled + */ #define PTP_TCR_SNAPTYPSEL_1 BIT(16) -#define PTP_GMAC4_TCR_SNAPTYPSEL_1 GENMASK(17, 16) /* Enable MAC address for PTP Frame Filtering */ #define PTP_TCR_TSENMACADDR BIT(18)
The current driver only enables Pdelay_Req and Pdelay_Resp when HWTSTAMP_FILTER_PTP_V2_EVENT, HWTSTAMP_FILTER_PTP_V1_L4_EVENT or HWTSTAMP_FILTER_PTP_V2_L4_EVENT is requested. This results in ptp sync on slave mode to report 'received SYNC without timestamp' when using ptp4l. Although the hardware can support Sync, Pdelay_Req and Pdelay_resp by setting bit14 annd bits 17/16 to 01 this leaves Delay_Req timestamps out. Fix this by enabling all event and general messages timestamps. This includes SYNC, Follow_Up, Delay_Req, Delay_Resp, Pdelay_Req, Pdelay_Resp and Pdelay_Resp_Follow_Up messages. Signed-off-by: Ilias Apalodimas <ilias.apalodimas@linaro.org> --- drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 25 ++++++++--------------- drivers/net/ethernet/stmicro/stmmac/stmmac_ptp.h | 9 ++++++-- 2 files changed, 16 insertions(+), 18 deletions(-) -- 2.7.4