Unregister PTP clock when the driver is removed. Purge the RX and TX skb queues.
Fixes: 514def5dd339 ("phy: nxp-c45-tja11xx: add timestamping support") CC: stable@vger.kernel.org # 5.15+ Signed-off-by: Radu Pirea (OSS) radu-nicolae.pirea@oss.nxp.com --- drivers/net/phy/nxp-c45-tja11xx.c | 12 ++++++++++++ 1 file changed, 12 insertions(+)
diff --git a/drivers/net/phy/nxp-c45-tja11xx.c b/drivers/net/phy/nxp-c45-tja11xx.c index 5813b07242ce..27738d1ae9ea 100644 --- a/drivers/net/phy/nxp-c45-tja11xx.c +++ b/drivers/net/phy/nxp-c45-tja11xx.c @@ -1337,6 +1337,17 @@ static int nxp_c45_probe(struct phy_device *phydev) return ret; }
+static void nxp_c45_remove(struct phy_device *phydev) +{ + struct nxp_c45_phy *priv = phydev->priv; + + if (priv->ptp_clock) + ptp_clock_unregister(priv->ptp_clock); + + skb_queue_purge(&priv->tx_queue); + skb_queue_purge(&priv->rx_queue); +} + static struct phy_driver nxp_c45_driver[] = { { PHY_ID_MATCH_MODEL(PHY_ID_TJA_1103), @@ -1359,6 +1370,7 @@ static struct phy_driver nxp_c45_driver[] = { .set_loopback = genphy_c45_loopback, .get_sqi = nxp_c45_get_sqi, .get_sqi_max = nxp_c45_get_sqi_max, + .remove = nxp_c45_remove, }, };
On Thu, Apr 06, 2023 at 12:59:04PM +0300, Radu Pirea (OSS) wrote:
Unregister PTP clock when the driver is removed. Purge the RX and TX skb queues.
Fixes: 514def5dd339 ("phy: nxp-c45-tja11xx: add timestamping support") CC: stable@vger.kernel.org # 5.15+ Signed-off-by: Radu Pirea (OSS) radu-nicolae.pirea@oss.nxp.com
drivers/net/phy/nxp-c45-tja11xx.c | 12 ++++++++++++ 1 file changed, 12 insertions(+)
diff --git a/drivers/net/phy/nxp-c45-tja11xx.c b/drivers/net/phy/nxp-c45-tja11xx.c index 5813b07242ce..27738d1ae9ea 100644 --- a/drivers/net/phy/nxp-c45-tja11xx.c +++ b/drivers/net/phy/nxp-c45-tja11xx.c @@ -1337,6 +1337,17 @@ static int nxp_c45_probe(struct phy_device *phydev) return ret; } +static void nxp_c45_remove(struct phy_device *phydev) +{
- struct nxp_c45_phy *priv = phydev->priv;
- if (priv->ptp_clock)
ptp_clock_unregister(priv->ptp_clock);
- skb_queue_purge(&priv->tx_queue);
- skb_queue_purge(&priv->rx_queue);
Do you need to disable interrupts? I suppose the real question is, is it guaranteed phy_disconnect() is called before the driver is removed?
Andrew
On 07.04.2023 17:20, Andrew Lunn wrote:
On Thu, Apr 06, 2023 at 12:59:04PM +0300, Radu Pirea (OSS) wrote:
Unregister PTP clock when the driver is removed. Purge the RX and TX skb queues.
Fixes: 514def5dd339 ("phy: nxp-c45-tja11xx: add timestamping support") CC: stable@vger.kernel.org # 5.15+ Signed-off-by: Radu Pirea (OSS) radu-nicolae.pirea@oss.nxp.com
drivers/net/phy/nxp-c45-tja11xx.c | 12 ++++++++++++ 1 file changed, 12 insertions(+)
diff --git a/drivers/net/phy/nxp-c45-tja11xx.c b/drivers/net/phy/nxp-c45-tja11xx.c index 5813b07242ce..27738d1ae9ea 100644 --- a/drivers/net/phy/nxp-c45-tja11xx.c +++ b/drivers/net/phy/nxp-c45-tja11xx.c @@ -1337,6 +1337,17 @@ static int nxp_c45_probe(struct phy_device *phydev) return ret; } +static void nxp_c45_remove(struct phy_device *phydev) +{
- struct nxp_c45_phy *priv = phydev->priv;
- if (priv->ptp_clock)
ptp_clock_unregister(priv->ptp_clock);
- skb_queue_purge(&priv->tx_queue);
- skb_queue_purge(&priv->rx_queue);
Do you need to disable interrupts? I suppose the real question is, is it guaranteed phy_disconnect() is called before the driver is removed?
The MAC driver should call phy_disconnect() when it is removed. Also, the user should not be able to remove the PHY driver if is in uses.
Radu P.
Andrew
Do you need to disable interrupts? I suppose the real question is, is it guaranteed phy_disconnect() is called before the driver is removed?
The MAC driver should call phy_disconnect() when it is removed. Also, the user should not be able to remove the PHY driver if is in uses.
That was what i was thinking. But i've never unloaded a PHY driver, so i've no idea what actually happens.
Andrew
On Thu, 2023-04-06 at 12:59 +0300, Radu Pirea (OSS) wrote:
Unregister PTP clock when the driver is removed. Purge the RX and TX skb queues.
Fixes: 514def5dd339 ("phy: nxp-c45-tja11xx: add timestamping support") CC: stable@vger.kernel.org # 5.15+ Signed-off-by: Radu Pirea (OSS) radu-nicolae.pirea@oss.nxp.com
Andrew: my understanding is that a connected phy, maintains a reference to the relevant driver via phydev->mdio.dev.driver->owner, and such reference is dropped by phy_disconnect() via phy_detach().
So remove can invoked only after phy_disconnect
Does the above sounds reasonable/answer your question?
Thanks
Paolo
Andrew: my understanding is that a connected phy, maintains a reference to the relevant driver via phydev->mdio.dev.driver->owner, and such reference is dropped by phy_disconnect() via phy_detach().
So remove can invoked only after phy_disconnect
Does the above sounds reasonable/answer your question?
Yes, that does seem logical.
Reviewed-by: Andrew Lunn andrew@lunn.ch
Andrew
Hello:
This patch was applied to netdev/net.git (main) by Paolo Abeni pabeni@redhat.com:
On Thu, 6 Apr 2023 12:59:04 +0300 you wrote:
Unregister PTP clock when the driver is removed. Purge the RX and TX skb queues.
Fixes: 514def5dd339 ("phy: nxp-c45-tja11xx: add timestamping support") CC: stable@vger.kernel.org # 5.15+ Signed-off-by: Radu Pirea (OSS) radu-nicolae.pirea@oss.nxp.com
[...]
Here is the summary with links: - [net] net: phy: nxp-c45-tja11xx: add remove callback https://git.kernel.org/netdev/net/c/a4506722dc39
You are awesome, thank you!
linux-stable-mirror@lists.linaro.org