The functions txgbe_up() and txgbe_down() are called in pairs to reset hardware configurations. PTP stop function is not called in txgbe_down(), so there is no need to call PTP init function in txgbe_up().
Fixes: 06e75161b9d4 ("net: wangxun: Add support for PTP clock") Cc: stable@vger.kernel.org Signed-off-by: Jiawen Wu jiawenwu@trustnetic.com --- drivers/net/ethernet/wangxun/txgbe/txgbe_main.c | 1 - 1 file changed, 1 deletion(-)
diff --git a/drivers/net/ethernet/wangxun/txgbe/txgbe_main.c b/drivers/net/ethernet/wangxun/txgbe/txgbe_main.c index daa761e48f9d..114d6f46139b 100644 --- a/drivers/net/ethernet/wangxun/txgbe/txgbe_main.c +++ b/drivers/net/ethernet/wangxun/txgbe/txgbe_main.c @@ -297,7 +297,6 @@ void txgbe_down(struct wx *wx) void txgbe_up(struct wx *wx) { wx_configure(wx); - wx_ptp_init(wx); txgbe_up_complete(wx); }
On 05/11/2025 02:07, Jiawen Wu wrote:
The functions txgbe_up() and txgbe_down() are called in pairs to reset hardware configurations. PTP stop function is not called in txgbe_down(), so there is no need to call PTP init function in txgbe_up().
txgbe_reset() is called during txgbe_down(), and it calls wx_ptp_reset(), which I believe is the reason for wx_ptp_init() call
Fixes: 06e75161b9d4 ("net: wangxun: Add support for PTP clock") Cc: stable@vger.kernel.org Signed-off-by: Jiawen Wu jiawenwu@trustnetic.com
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c | 1 - 1 file changed, 1 deletion(-)
diff --git a/drivers/net/ethernet/wangxun/txgbe/txgbe_main.c b/drivers/net/ethernet/wangxun/txgbe/txgbe_main.c index daa761e48f9d..114d6f46139b 100644 --- a/drivers/net/ethernet/wangxun/txgbe/txgbe_main.c +++ b/drivers/net/ethernet/wangxun/txgbe/txgbe_main.c @@ -297,7 +297,6 @@ void txgbe_down(struct wx *wx) void txgbe_up(struct wx *wx) { wx_configure(wx);
- wx_ptp_init(wx); txgbe_up_complete(wx); }
On Thu, Nov 6, 2025 4:03 AM, Vadim Fedorenko wrote:
On 05/11/2025 02:07, Jiawen Wu wrote:
The functions txgbe_up() and txgbe_down() are called in pairs to reset hardware configurations. PTP stop function is not called in txgbe_down(), so there is no need to call PTP init function in txgbe_up().
txgbe_reset() is called during txgbe_down(), and it calls wx_ptp_reset(), which I believe is the reason for wx_ptp_init() call
wx_ptp_reset() just reset the hardware bits, but does not destroy the PTP clock. wx_ptp_init() should be called after wx_ptp_stop() has been called.
Fixes: 06e75161b9d4 ("net: wangxun: Add support for PTP clock") Cc: stable@vger.kernel.org Signed-off-by: Jiawen Wu jiawenwu@trustnetic.com
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c | 1 - 1 file changed, 1 deletion(-)
diff --git a/drivers/net/ethernet/wangxun/txgbe/txgbe_main.c b/drivers/net/ethernet/wangxun/txgbe/txgbe_main.c index daa761e48f9d..114d6f46139b 100644 --- a/drivers/net/ethernet/wangxun/txgbe/txgbe_main.c +++ b/drivers/net/ethernet/wangxun/txgbe/txgbe_main.c @@ -297,7 +297,6 @@ void txgbe_down(struct wx *wx) void txgbe_up(struct wx *wx) { wx_configure(wx);
- wx_ptp_init(wx); txgbe_up_complete(wx); }
On 06/11/2025 02:05, Jiawen Wu wrote:
On Thu, Nov 6, 2025 4:03 AM, Vadim Fedorenko wrote:
On 05/11/2025 02:07, Jiawen Wu wrote:
The functions txgbe_up() and txgbe_down() are called in pairs to reset hardware configurations. PTP stop function is not called in txgbe_down(), so there is no need to call PTP init function in txgbe_up().
txgbe_reset() is called during txgbe_down(), and it calls wx_ptp_reset(), which I believe is the reason for wx_ptp_init() call
wx_ptp_reset() just reset the hardware bits, but does not destroy the PTP clock. wx_ptp_init() should be called after wx_ptp_stop() has been called.
wx_ptp_init()/wx_ptp_reset() recalculate shift/mul configuration based on link speed. link down/link up sequence may bring new link speed, where these values have to reconfigured, right? I kinda agree that full procedure of wx_ptp_init() might not be needed, but we have to be sure not to reuse old ptp configuration.
Fixes: 06e75161b9d4 ("net: wangxun: Add support for PTP clock") Cc: stable@vger.kernel.org Signed-off-by: Jiawen Wu jiawenwu@trustnetic.com
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c | 1 - 1 file changed, 1 deletion(-)
diff --git a/drivers/net/ethernet/wangxun/txgbe/txgbe_main.c b/drivers/net/ethernet/wangxun/txgbe/txgbe_main.c index daa761e48f9d..114d6f46139b 100644 --- a/drivers/net/ethernet/wangxun/txgbe/txgbe_main.c +++ b/drivers/net/ethernet/wangxun/txgbe/txgbe_main.c @@ -297,7 +297,6 @@ void txgbe_down(struct wx *wx) void txgbe_up(struct wx *wx) { wx_configure(wx);
- wx_ptp_init(wx); txgbe_up_complete(wx); }
On Thu, Nov 6, 2025 7:27 PM, Vadim Fedorenko wrote:
On 06/11/2025 02:05, Jiawen Wu wrote:
On Thu, Nov 6, 2025 4:03 AM, Vadim Fedorenko wrote:
On 05/11/2025 02:07, Jiawen Wu wrote:
The functions txgbe_up() and txgbe_down() are called in pairs to reset hardware configurations. PTP stop function is not called in txgbe_down(), so there is no need to call PTP init function in txgbe_up().
txgbe_reset() is called during txgbe_down(), and it calls wx_ptp_reset(), which I believe is the reason for wx_ptp_init() call
wx_ptp_reset() just reset the hardware bits, but does not destroy the PTP clock. wx_ptp_init() should be called after wx_ptp_stop() has been called.
wx_ptp_init()/wx_ptp_reset() recalculate shift/mul configuration based on link speed. link down/link up sequence may bring new link speed, where these values have to reconfigured, right? I kinda agree that full procedure of wx_ptp_init() might not be needed, but we have to be sure not to reuse old ptp configuration.
This indicates that the original approach was also wrong. wx_ptp_init() would return here: if (wx_ptp_create_clock(wx)).
But for the changing of link speed, wx_ptp_reset_cyclecounter() is called in .mac_link_up() and .mac_link_down().
linux-stable-mirror@lists.linaro.org