linux-omap.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] net: ethernet: ti: cpsw: disable PTPv1 hw timestamping advertisement
@ 2020-10-29 19:09 Grygorii Strashko
  2020-10-31 18:40 ` Jakub Kicinski
  0 siblings, 1 reply; 4+ messages in thread
From: Grygorii Strashko @ 2020-10-29 19:09 UTC (permalink / raw)
  To: David S. Miller, netdev, Jakub Kicinski, Vignesh Raghavendra
  Cc: Sekhar Nori, linux-kernel, linux-omap, Grygorii Strashko

The TI CPTS does not natively support PTPv1, only PTPv2. But, as it
happens, the CPTS can provide HW timestamp for PTPv1 Sync messages, because
CPTS HW parser looks for PTP messageType id in PTP message octet 0 which
value is 0 for PTPv1. As result, CPTS HW can detect Sync messages for PTPv1
and PTPv2 (Sync messageType = 0 for both), but it fails for any other PTPv1
messages (Delay_req/resp) and will return PTP messageType id 0 for them.

The commit e9523a5a32a1 ("net: ethernet: ti: cpsw: enable
HWTSTAMP_FILTER_PTP_V1_L4_EVENT filter") added PTPv1 hw timestamping
advertisement by mistake, only to make Linux Kernel "timestamping" utility
work, and this causes issues with only PTPv1 compatible HW/SW - Sync HW
timestamped, but Delay_req/resp are not.

Hence, fix it disabling PTPv1 hw timestamping advertisement, so only PTPv1
compatible HW/SW can properly roll back to SW timestamping.

Fixes: e9523a5a32a1 ("net: ethernet: ti: cpsw: enable HWTSTAMP_FILTER_PTP_V1_L4_EVENT filter")
Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
---
 drivers/net/ethernet/ti/cpsw_ethtool.c | 1 -
 drivers/net/ethernet/ti/cpsw_priv.c    | 5 +----
 2 files changed, 1 insertion(+), 5 deletions(-)

diff --git a/drivers/net/ethernet/ti/cpsw_ethtool.c b/drivers/net/ethernet/ti/cpsw_ethtool.c
index 4d02c5135611..4619c3a950b0 100644
--- a/drivers/net/ethernet/ti/cpsw_ethtool.c
+++ b/drivers/net/ethernet/ti/cpsw_ethtool.c
@@ -728,7 +728,6 @@ int cpsw_get_ts_info(struct net_device *ndev, struct ethtool_ts_info *info)
 		(1 << HWTSTAMP_TX_ON);
 	info->rx_filters =
 		(1 << HWTSTAMP_FILTER_NONE) |
-		(1 << HWTSTAMP_FILTER_PTP_V1_L4_EVENT) |
 		(1 << HWTSTAMP_FILTER_PTP_V2_EVENT);
 	return 0;
 }
diff --git a/drivers/net/ethernet/ti/cpsw_priv.c b/drivers/net/ethernet/ti/cpsw_priv.c
index 51cc29f39038..31c5e36ff706 100644
--- a/drivers/net/ethernet/ti/cpsw_priv.c
+++ b/drivers/net/ethernet/ti/cpsw_priv.c
@@ -639,13 +639,10 @@ static int cpsw_hwtstamp_set(struct net_device *dev, struct ifreq *ifr)
 		break;
 	case HWTSTAMP_FILTER_ALL:
 	case HWTSTAMP_FILTER_NTP_ALL:
-		return -ERANGE;
 	case HWTSTAMP_FILTER_PTP_V1_L4_EVENT:
 	case HWTSTAMP_FILTER_PTP_V1_L4_SYNC:
 	case HWTSTAMP_FILTER_PTP_V1_L4_DELAY_REQ:
-		priv->rx_ts_enabled = HWTSTAMP_FILTER_PTP_V1_L4_EVENT;
-		cfg.rx_filter = HWTSTAMP_FILTER_PTP_V1_L4_EVENT;
-		break;
+		return -ERANGE;
 	case HWTSTAMP_FILTER_PTP_V2_L4_EVENT:
 	case HWTSTAMP_FILTER_PTP_V2_L4_SYNC:
 	case HWTSTAMP_FILTER_PTP_V2_L4_DELAY_REQ:
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH] net: ethernet: ti: cpsw: disable PTPv1 hw timestamping advertisement
  2020-10-29 19:09 [PATCH] net: ethernet: ti: cpsw: disable PTPv1 hw timestamping advertisement Grygorii Strashko
@ 2020-10-31 18:40 ` Jakub Kicinski
  2020-11-01  2:02   ` Richard Cochran
  0 siblings, 1 reply; 4+ messages in thread
From: Jakub Kicinski @ 2020-10-31 18:40 UTC (permalink / raw)
  To: Grygorii Strashko
  Cc: David S. Miller, netdev, Vignesh Raghavendra, Sekhar Nori,
	linux-kernel, linux-omap, Richard Cochran

On Thu, 29 Oct 2020 21:09:10 +0200 Grygorii Strashko wrote:
> The TI CPTS does not natively support PTPv1, only PTPv2. But, as it
> happens, the CPTS can provide HW timestamp for PTPv1 Sync messages, because
> CPTS HW parser looks for PTP messageType id in PTP message octet 0 which
> value is 0 for PTPv1. As result, CPTS HW can detect Sync messages for PTPv1
> and PTPv2 (Sync messageType = 0 for both), but it fails for any other PTPv1
> messages (Delay_req/resp) and will return PTP messageType id 0 for them.
> 
> The commit e9523a5a32a1 ("net: ethernet: ti: cpsw: enable
> HWTSTAMP_FILTER_PTP_V1_L4_EVENT filter") added PTPv1 hw timestamping
> advertisement by mistake, only to make Linux Kernel "timestamping" utility
> work, and this causes issues with only PTPv1 compatible HW/SW - Sync HW
> timestamped, but Delay_req/resp are not.
> 
> Hence, fix it disabling PTPv1 hw timestamping advertisement, so only PTPv1
> compatible HW/SW can properly roll back to SW timestamping.
> 
> Fixes: e9523a5a32a1 ("net: ethernet: ti: cpsw: enable HWTSTAMP_FILTER_PTP_V1_L4_EVENT filter")
> Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>

CC: Richard

> diff --git a/drivers/net/ethernet/ti/cpsw_ethtool.c b/drivers/net/ethernet/ti/cpsw_ethtool.c
> index 4d02c5135611..4619c3a950b0 100644
> --- a/drivers/net/ethernet/ti/cpsw_ethtool.c
> +++ b/drivers/net/ethernet/ti/cpsw_ethtool.c
> @@ -728,7 +728,6 @@ int cpsw_get_ts_info(struct net_device *ndev, struct ethtool_ts_info *info)
>  		(1 << HWTSTAMP_TX_ON);
>  	info->rx_filters =
>  		(1 << HWTSTAMP_FILTER_NONE) |
> -		(1 << HWTSTAMP_FILTER_PTP_V1_L4_EVENT) |
>  		(1 << HWTSTAMP_FILTER_PTP_V2_EVENT);
>  	return 0;
>  }
> diff --git a/drivers/net/ethernet/ti/cpsw_priv.c b/drivers/net/ethernet/ti/cpsw_priv.c
> index 51cc29f39038..31c5e36ff706 100644
> --- a/drivers/net/ethernet/ti/cpsw_priv.c
> +++ b/drivers/net/ethernet/ti/cpsw_priv.c
> @@ -639,13 +639,10 @@ static int cpsw_hwtstamp_set(struct net_device *dev, struct ifreq *ifr)
>  		break;
>  	case HWTSTAMP_FILTER_ALL:
>  	case HWTSTAMP_FILTER_NTP_ALL:
> -		return -ERANGE;
>  	case HWTSTAMP_FILTER_PTP_V1_L4_EVENT:
>  	case HWTSTAMP_FILTER_PTP_V1_L4_SYNC:
>  	case HWTSTAMP_FILTER_PTP_V1_L4_DELAY_REQ:
> -		priv->rx_ts_enabled = HWTSTAMP_FILTER_PTP_V1_L4_EVENT;
> -		cfg.rx_filter = HWTSTAMP_FILTER_PTP_V1_L4_EVENT;
> -		break;
> +		return -ERANGE;
>  	case HWTSTAMP_FILTER_PTP_V2_L4_EVENT:
>  	case HWTSTAMP_FILTER_PTP_V2_L4_SYNC:
>  	case HWTSTAMP_FILTER_PTP_V2_L4_DELAY_REQ:


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] net: ethernet: ti: cpsw: disable PTPv1 hw timestamping advertisement
  2020-10-31 18:40 ` Jakub Kicinski
@ 2020-11-01  2:02   ` Richard Cochran
  2020-11-02 22:20     ` Jakub Kicinski
  0 siblings, 1 reply; 4+ messages in thread
From: Richard Cochran @ 2020-11-01  2:02 UTC (permalink / raw)
  To: Jakub Kicinski
  Cc: Grygorii Strashko, David S. Miller, netdev, Vignesh Raghavendra,
	Sekhar Nori, linux-kernel, linux-omap

On Sat, Oct 31, 2020 at 11:40:42AM -0700, Jakub Kicinski wrote:
> On Thu, 29 Oct 2020 21:09:10 +0200 Grygorii Strashko wrote:
> > The TI CPTS does not natively support PTPv1, only PTPv2. But, as it
> > happens, the CPTS can provide HW timestamp for PTPv1 Sync messages, because
> > CPTS HW parser looks for PTP messageType id in PTP message octet 0 which
> > value is 0 for PTPv1. As result, CPTS HW can detect Sync messages for PTPv1
> > and PTPv2 (Sync messageType = 0 for both), but it fails for any other PTPv1
> > messages (Delay_req/resp) and will return PTP messageType id 0 for them.
> > 
> > The commit e9523a5a32a1 ("net: ethernet: ti: cpsw: enable
> > HWTSTAMP_FILTER_PTP_V1_L4_EVENT filter") added PTPv1 hw timestamping
> > advertisement by mistake, only to make Linux Kernel "timestamping" utility
> > work, and this causes issues with only PTPv1 compatible HW/SW - Sync HW
> > timestamped, but Delay_req/resp are not.
> > 
> > Hence, fix it disabling PTPv1 hw timestamping advertisement, so only PTPv1
> > compatible HW/SW can properly roll back to SW timestamping.
> > 
> > Fixes: e9523a5a32a1 ("net: ethernet: ti: cpsw: enable HWTSTAMP_FILTER_PTP_V1_L4_EVENT filter")
> > Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
> 
> CC: Richard

Acked-by: Richard Cochran <richardcochran@gmail.com>

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] net: ethernet: ti: cpsw: disable PTPv1 hw timestamping advertisement
  2020-11-01  2:02   ` Richard Cochran
@ 2020-11-02 22:20     ` Jakub Kicinski
  0 siblings, 0 replies; 4+ messages in thread
From: Jakub Kicinski @ 2020-11-02 22:20 UTC (permalink / raw)
  To: Richard Cochran
  Cc: Grygorii Strashko, David S. Miller, netdev, Vignesh Raghavendra,
	Sekhar Nori, linux-kernel, linux-omap

On Sat, 31 Oct 2020 19:02:27 -0700 Richard Cochran wrote:
> On Sat, Oct 31, 2020 at 11:40:42AM -0700, Jakub Kicinski wrote:
> > On Thu, 29 Oct 2020 21:09:10 +0200 Grygorii Strashko wrote:  
> > > The TI CPTS does not natively support PTPv1, only PTPv2. But, as it
> > > happens, the CPTS can provide HW timestamp for PTPv1 Sync messages, because
> > > CPTS HW parser looks for PTP messageType id in PTP message octet 0 which
> > > value is 0 for PTPv1. As result, CPTS HW can detect Sync messages for PTPv1
> > > and PTPv2 (Sync messageType = 0 for both), but it fails for any other PTPv1
> > > messages (Delay_req/resp) and will return PTP messageType id 0 for them.
> > > 
> > > The commit e9523a5a32a1 ("net: ethernet: ti: cpsw: enable
> > > HWTSTAMP_FILTER_PTP_V1_L4_EVENT filter") added PTPv1 hw timestamping
> > > advertisement by mistake, only to make Linux Kernel "timestamping" utility
> > > work, and this causes issues with only PTPv1 compatible HW/SW - Sync HW
> > > timestamped, but Delay_req/resp are not.
> > > 
> > > Hence, fix it disabling PTPv1 hw timestamping advertisement, so only PTPv1
> > > compatible HW/SW can properly roll back to SW timestamping.
> > > 
> > > Fixes: e9523a5a32a1 ("net: ethernet: ti: cpsw: enable HWTSTAMP_FILTER_PTP_V1_L4_EVENT filter")
> > > Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>  
> > 
> > CC: Richard  
> 
> Acked-by: Richard Cochran <richardcochran@gmail.com>

Applied, thanks!

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2020-11-02 22:20 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-10-29 19:09 [PATCH] net: ethernet: ti: cpsw: disable PTPv1 hw timestamping advertisement Grygorii Strashko
2020-10-31 18:40 ` Jakub Kicinski
2020-11-01  2:02   ` Richard Cochran
2020-11-02 22:20     ` Jakub Kicinski

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).