mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
net: ravb: convert to ndo_hwtstamp API
Convert driver to use .ndo_hwtstamp_set()/.ndo_hwtstamp_get callbacks. ravb_do_ioctl() becomes pure phy_do_ioctl_running(), remove it and replace in callbacks. Reviewed-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se> Reviewed-by: Jacob Keller <jacob.e.keller@intel.com> Signed-off-by: Vadim Fedorenko <vadim.fedorenko@linux.dev> Link: https://patch.msgid.link/20251023220457.3201122-5-vadim.fedorenko@linux.dev Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
committed by
Jakub Kicinski
parent
38efb0ba3c
commit
faac57cddf
@@ -2410,41 +2410,38 @@ static int ravb_close(struct net_device *ndev)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int ravb_hwtstamp_get(struct net_device *ndev, struct ifreq *req)
|
||||
static int ravb_hwtstamp_get(struct net_device *ndev,
|
||||
struct kernel_hwtstamp_config *config)
|
||||
{
|
||||
struct ravb_private *priv = netdev_priv(ndev);
|
||||
struct hwtstamp_config config;
|
||||
|
||||
config.flags = 0;
|
||||
config.tx_type = priv->tstamp_tx_ctrl ? HWTSTAMP_TX_ON :
|
||||
HWTSTAMP_TX_OFF;
|
||||
config->flags = 0;
|
||||
config->tx_type = priv->tstamp_tx_ctrl ? HWTSTAMP_TX_ON :
|
||||
HWTSTAMP_TX_OFF;
|
||||
switch (priv->tstamp_rx_ctrl & RAVB_RXTSTAMP_TYPE) {
|
||||
case RAVB_RXTSTAMP_TYPE_V2_L2_EVENT:
|
||||
config.rx_filter = HWTSTAMP_FILTER_PTP_V2_L2_EVENT;
|
||||
config->rx_filter = HWTSTAMP_FILTER_PTP_V2_L2_EVENT;
|
||||
break;
|
||||
case RAVB_RXTSTAMP_TYPE_ALL:
|
||||
config.rx_filter = HWTSTAMP_FILTER_ALL;
|
||||
config->rx_filter = HWTSTAMP_FILTER_ALL;
|
||||
break;
|
||||
default:
|
||||
config.rx_filter = HWTSTAMP_FILTER_NONE;
|
||||
config->rx_filter = HWTSTAMP_FILTER_NONE;
|
||||
}
|
||||
|
||||
return copy_to_user(req->ifr_data, &config, sizeof(config)) ?
|
||||
-EFAULT : 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Control hardware time stamping */
|
||||
static int ravb_hwtstamp_set(struct net_device *ndev, struct ifreq *req)
|
||||
static int ravb_hwtstamp_set(struct net_device *ndev,
|
||||
struct kernel_hwtstamp_config *config,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct ravb_private *priv = netdev_priv(ndev);
|
||||
struct hwtstamp_config config;
|
||||
u32 tstamp_rx_ctrl = RAVB_RXTSTAMP_ENABLED;
|
||||
u32 tstamp_tx_ctrl;
|
||||
|
||||
if (copy_from_user(&config, req->ifr_data, sizeof(config)))
|
||||
return -EFAULT;
|
||||
|
||||
switch (config.tx_type) {
|
||||
switch (config->tx_type) {
|
||||
case HWTSTAMP_TX_OFF:
|
||||
tstamp_tx_ctrl = 0;
|
||||
break;
|
||||
@@ -2455,7 +2452,7 @@ static int ravb_hwtstamp_set(struct net_device *ndev, struct ifreq *req)
|
||||
return -ERANGE;
|
||||
}
|
||||
|
||||
switch (config.rx_filter) {
|
||||
switch (config->rx_filter) {
|
||||
case HWTSTAMP_FILTER_NONE:
|
||||
tstamp_rx_ctrl = 0;
|
||||
break;
|
||||
@@ -2463,36 +2460,14 @@ static int ravb_hwtstamp_set(struct net_device *ndev, struct ifreq *req)
|
||||
tstamp_rx_ctrl |= RAVB_RXTSTAMP_TYPE_V2_L2_EVENT;
|
||||
break;
|
||||
default:
|
||||
config.rx_filter = HWTSTAMP_FILTER_ALL;
|
||||
config->rx_filter = HWTSTAMP_FILTER_ALL;
|
||||
tstamp_rx_ctrl |= RAVB_RXTSTAMP_TYPE_ALL;
|
||||
}
|
||||
|
||||
priv->tstamp_tx_ctrl = tstamp_tx_ctrl;
|
||||
priv->tstamp_rx_ctrl = tstamp_rx_ctrl;
|
||||
|
||||
return copy_to_user(req->ifr_data, &config, sizeof(config)) ?
|
||||
-EFAULT : 0;
|
||||
}
|
||||
|
||||
/* ioctl to device function */
|
||||
static int ravb_do_ioctl(struct net_device *ndev, struct ifreq *req, int cmd)
|
||||
{
|
||||
struct phy_device *phydev = ndev->phydev;
|
||||
|
||||
if (!netif_running(ndev))
|
||||
return -EINVAL;
|
||||
|
||||
if (!phydev)
|
||||
return -ENODEV;
|
||||
|
||||
switch (cmd) {
|
||||
case SIOCGHWTSTAMP:
|
||||
return ravb_hwtstamp_get(ndev, req);
|
||||
case SIOCSHWTSTAMP:
|
||||
return ravb_hwtstamp_set(ndev, req);
|
||||
}
|
||||
|
||||
return phy_mii_ioctl(phydev, req, cmd);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int ravb_change_mtu(struct net_device *ndev, int new_mtu)
|
||||
@@ -2628,11 +2603,13 @@ static const struct net_device_ops ravb_netdev_ops = {
|
||||
.ndo_get_stats = ravb_get_stats,
|
||||
.ndo_set_rx_mode = ravb_set_rx_mode,
|
||||
.ndo_tx_timeout = ravb_tx_timeout,
|
||||
.ndo_eth_ioctl = ravb_do_ioctl,
|
||||
.ndo_eth_ioctl = phy_do_ioctl_running,
|
||||
.ndo_change_mtu = ravb_change_mtu,
|
||||
.ndo_validate_addr = eth_validate_addr,
|
||||
.ndo_set_mac_address = eth_mac_addr,
|
||||
.ndo_set_features = ravb_set_features,
|
||||
.ndo_hwtstamp_get = ravb_hwtstamp_get,
|
||||
.ndo_hwtstamp_set = ravb_hwtstamp_set,
|
||||
};
|
||||
|
||||
/* MDIO bus init function */
|
||||
|
||||
Reference in New Issue
Block a user