mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-16 12:31:52 -04:00
ti: icssg: convert to ndo_hwtstamp API
Convert driver to use .ndo_hwtstamp_get()/.ndo_hwtstamp_set() API. .ndo_eth_ioctl() implementation becomes pure phy_do_ioctl(), remove it from common module, remove exported symbol and replace ndo callback. Reviewed-by: Simon Horman <horms@kernel.org> Reviewed-by: Jacob Keller <jacob.e.keller@intel.com> Signed-off-by: Vadim Fedorenko <vadim.fedorenko@linux.dev> Link: https://patch.msgid.link/20251016152515.3510991-3-vadim.fedorenko@linux.dev Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
committed by
Jakub Kicinski
parent
ed5d5928bd
commit
b8fa98ea4a
@@ -1223,15 +1223,13 @@ void icssg_ndo_tx_timeout(struct net_device *ndev, unsigned int txqueue)
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(icssg_ndo_tx_timeout);
|
||||
|
||||
static int emac_set_ts_config(struct net_device *ndev, struct ifreq *ifr)
|
||||
int icssg_ndo_set_ts_config(struct net_device *ndev,
|
||||
struct kernel_hwtstamp_config *config,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct prueth_emac *emac = netdev_priv(ndev);
|
||||
struct hwtstamp_config config;
|
||||
|
||||
if (copy_from_user(&config, ifr->ifr_data, sizeof(config)))
|
||||
return -EFAULT;
|
||||
|
||||
switch (config.tx_type) {
|
||||
switch (config->tx_type) {
|
||||
case HWTSTAMP_TX_OFF:
|
||||
emac->tx_ts_enabled = 0;
|
||||
break;
|
||||
@@ -1242,7 +1240,7 @@ static int emac_set_ts_config(struct net_device *ndev, struct ifreq *ifr)
|
||||
return -ERANGE;
|
||||
}
|
||||
|
||||
switch (config.rx_filter) {
|
||||
switch (config->rx_filter) {
|
||||
case HWTSTAMP_FILTER_NONE:
|
||||
emac->rx_ts_enabled = 0;
|
||||
break;
|
||||
@@ -1262,43 +1260,28 @@ static int emac_set_ts_config(struct net_device *ndev, struct ifreq *ifr)
|
||||
case HWTSTAMP_FILTER_PTP_V2_DELAY_REQ:
|
||||
case HWTSTAMP_FILTER_NTP_ALL:
|
||||
emac->rx_ts_enabled = 1;
|
||||
config.rx_filter = HWTSTAMP_FILTER_ALL;
|
||||
config->rx_filter = HWTSTAMP_FILTER_ALL;
|
||||
break;
|
||||
default:
|
||||
return -ERANGE;
|
||||
}
|
||||
|
||||
return copy_to_user(ifr->ifr_data, &config, sizeof(config)) ?
|
||||
-EFAULT : 0;
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(icssg_ndo_set_ts_config);
|
||||
|
||||
static int emac_get_ts_config(struct net_device *ndev, struct ifreq *ifr)
|
||||
int icssg_ndo_get_ts_config(struct net_device *ndev,
|
||||
struct kernel_hwtstamp_config *config)
|
||||
{
|
||||
struct prueth_emac *emac = netdev_priv(ndev);
|
||||
struct hwtstamp_config config;
|
||||
|
||||
config.flags = 0;
|
||||
config.tx_type = emac->tx_ts_enabled ? HWTSTAMP_TX_ON : HWTSTAMP_TX_OFF;
|
||||
config.rx_filter = emac->rx_ts_enabled ? HWTSTAMP_FILTER_ALL : HWTSTAMP_FILTER_NONE;
|
||||
config->flags = 0;
|
||||
config->tx_type = emac->tx_ts_enabled ? HWTSTAMP_TX_ON : HWTSTAMP_TX_OFF;
|
||||
config->rx_filter = emac->rx_ts_enabled ? HWTSTAMP_FILTER_ALL : HWTSTAMP_FILTER_NONE;
|
||||
|
||||
return copy_to_user(ifr->ifr_data, &config, sizeof(config)) ?
|
||||
-EFAULT : 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int icssg_ndo_ioctl(struct net_device *ndev, struct ifreq *ifr, int cmd)
|
||||
{
|
||||
switch (cmd) {
|
||||
case SIOCGHWTSTAMP:
|
||||
return emac_get_ts_config(ndev, ifr);
|
||||
case SIOCSHWTSTAMP:
|
||||
return emac_set_ts_config(ndev, ifr);
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return phy_do_ioctl(ndev, ifr, cmd);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(icssg_ndo_ioctl);
|
||||
EXPORT_SYMBOL_GPL(icssg_ndo_get_ts_config);
|
||||
|
||||
void icssg_ndo_get_stats64(struct net_device *ndev,
|
||||
struct rtnl_link_stats64 *stats)
|
||||
|
||||
@@ -1168,7 +1168,7 @@ static const struct net_device_ops emac_netdev_ops = {
|
||||
.ndo_validate_addr = eth_validate_addr,
|
||||
.ndo_tx_timeout = icssg_ndo_tx_timeout,
|
||||
.ndo_set_rx_mode = emac_ndo_set_rx_mode,
|
||||
.ndo_eth_ioctl = icssg_ndo_ioctl,
|
||||
.ndo_eth_ioctl = phy_do_ioctl,
|
||||
.ndo_get_stats64 = icssg_ndo_get_stats64,
|
||||
.ndo_get_phys_port_name = icssg_ndo_get_phys_port_name,
|
||||
.ndo_fix_features = emac_ndo_fix_features,
|
||||
@@ -1176,6 +1176,8 @@ static const struct net_device_ops emac_netdev_ops = {
|
||||
.ndo_vlan_rx_kill_vid = emac_ndo_vlan_rx_del_vid,
|
||||
.ndo_bpf = emac_ndo_bpf,
|
||||
.ndo_xdp_xmit = emac_xdp_xmit,
|
||||
.ndo_hwtstamp_get = icssg_ndo_get_ts_config,
|
||||
.ndo_hwtstamp_set = icssg_ndo_set_ts_config,
|
||||
};
|
||||
|
||||
static int prueth_netdev_init(struct prueth *prueth,
|
||||
|
||||
@@ -479,7 +479,11 @@ void prueth_reset_tx_chan(struct prueth_emac *emac, int ch_num,
|
||||
void prueth_reset_rx_chan(struct prueth_rx_chn *chn,
|
||||
int num_flows, bool disable);
|
||||
void icssg_ndo_tx_timeout(struct net_device *ndev, unsigned int txqueue);
|
||||
int icssg_ndo_ioctl(struct net_device *ndev, struct ifreq *ifr, int cmd);
|
||||
int icssg_ndo_get_ts_config(struct net_device *ndev,
|
||||
struct kernel_hwtstamp_config *config);
|
||||
int icssg_ndo_set_ts_config(struct net_device *ndev,
|
||||
struct kernel_hwtstamp_config *config,
|
||||
struct netlink_ext_ack *extack);
|
||||
void icssg_ndo_get_stats64(struct net_device *ndev,
|
||||
struct rtnl_link_stats64 *stats);
|
||||
int icssg_ndo_get_phys_port_name(struct net_device *ndev, char *name,
|
||||
|
||||
@@ -747,9 +747,11 @@ static const struct net_device_ops emac_netdev_ops = {
|
||||
.ndo_validate_addr = eth_validate_addr,
|
||||
.ndo_tx_timeout = icssg_ndo_tx_timeout,
|
||||
.ndo_set_rx_mode = emac_ndo_set_rx_mode_sr1,
|
||||
.ndo_eth_ioctl = icssg_ndo_ioctl,
|
||||
.ndo_eth_ioctl = phy_do_ioctl,
|
||||
.ndo_get_stats64 = icssg_ndo_get_stats64,
|
||||
.ndo_get_phys_port_name = icssg_ndo_get_phys_port_name,
|
||||
.ndo_hwtstamp_get = icssg_ndo_get_ts_config,
|
||||
.ndo_hwtstamp_set = icssg_ndo_set_ts_config,
|
||||
};
|
||||
|
||||
static int prueth_netdev_init(struct prueth *prueth,
|
||||
|
||||
Reference in New Issue
Block a user