net: phy: Introduce helper functions for time stamping support.
Some parts of the networking stack and at least one driver test fields within the 'struct phy_device' in order to query time stamping capabilities and to invoke time stamping methods. This patch adds a functional interface around the time stamping fields. This will allow insulating the callers from future changes to the details of the time stamping implemenation. Signed-off-by: Richard Cochran <richardcochran@gmail.com> Reviewed-by: Andrew Lunn <andrew@lunn.ch> Reviewed-by: Florian Fainelli <f.fainelli@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: hongrongxuan <hongrongxuan@huawei.com>
This commit is contained in:
parent
10df70c759
commit
6dd1986bfb
|
@ -932,6 +932,66 @@ static inline bool phy_polling_mode(struct phy_device *phydev)
|
|||
return phydev->irq == PHY_POLL;
|
||||
}
|
||||
|
||||
/**
|
||||
* phy_has_hwtstamp - Tests whether a PHY time stamp configuration.
|
||||
* @phydev: the phy_device struct
|
||||
*/
|
||||
static inline bool phy_has_hwtstamp(struct phy_device *phydev)
|
||||
{
|
||||
return phydev && phydev->drv && phydev->drv->hwtstamp;
|
||||
}
|
||||
|
||||
/**
|
||||
* phy_has_rxtstamp - Tests whether a PHY supports receive time stamping.
|
||||
* @phydev: the phy_device struct
|
||||
*/
|
||||
static inline bool phy_has_rxtstamp(struct phy_device *phydev)
|
||||
{
|
||||
return phydev && phydev->drv && phydev->drv->rxtstamp;
|
||||
}
|
||||
|
||||
/**
|
||||
* phy_has_tsinfo - Tests whether a PHY reports time stamping and/or
|
||||
* PTP hardware clock capabilities.
|
||||
* @phydev: the phy_device struct
|
||||
*/
|
||||
static inline bool phy_has_tsinfo(struct phy_device *phydev)
|
||||
{
|
||||
return phydev && phydev->drv && phydev->drv->ts_info;
|
||||
}
|
||||
|
||||
/**
|
||||
* phy_has_txtstamp - Tests whether a PHY supports transmit time stamping.
|
||||
* @phydev: the phy_device struct
|
||||
*/
|
||||
static inline bool phy_has_txtstamp(struct phy_device *phydev)
|
||||
{
|
||||
return phydev && phydev->drv && phydev->drv->txtstamp;
|
||||
}
|
||||
|
||||
static inline int phy_hwtstamp(struct phy_device *phydev, struct ifreq *ifr)
|
||||
{
|
||||
return phydev->drv->hwtstamp(phydev, ifr);
|
||||
}
|
||||
|
||||
static inline bool phy_rxtstamp(struct phy_device *phydev, struct sk_buff *skb,
|
||||
int type)
|
||||
{
|
||||
return phydev->drv->rxtstamp(phydev, skb, type);
|
||||
}
|
||||
|
||||
static inline int phy_ts_info(struct phy_device *phydev,
|
||||
struct ethtool_ts_info *tsinfo)
|
||||
{
|
||||
return phydev->drv->ts_info(phydev, tsinfo);
|
||||
}
|
||||
|
||||
static inline void phy_txtstamp(struct phy_device *phydev, struct sk_buff *skb,
|
||||
int type)
|
||||
{
|
||||
phydev->drv->txtstamp(phydev, skb, type);
|
||||
}
|
||||
|
||||
/**
|
||||
* phy_is_internal - Convenience function for testing if a PHY is internal
|
||||
* @phydev: the phy_device struct
|
||||
|
|
Loading…
Reference in New Issue