mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
net: atlantic: convert to ndo_hwtstamp API
Convert driver to .ndo_hwtstamp_get()/.ndo_hwtstamp_set() callbacks. .ndo_eth_ioctl() becomes empty so remove it. Also simplify code with no functional changes. 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-5-vadim.fedorenko@linux.dev Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
committed by
Jakub Kicinski
parent
149cfae711
commit
8a15a84e80
@@ -258,10 +258,15 @@ static void aq_ndev_set_multicast_settings(struct net_device *ndev)
|
||||
(void)aq_nic_set_multicast_list(aq_nic, ndev);
|
||||
}
|
||||
|
||||
#if IS_REACHABLE(CONFIG_PTP_1588_CLOCK)
|
||||
static int aq_ndev_config_hwtstamp(struct aq_nic_s *aq_nic,
|
||||
struct hwtstamp_config *config)
|
||||
static int aq_ndev_hwtstamp_set(struct net_device *netdev,
|
||||
struct kernel_hwtstamp_config *config,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct aq_nic_s *aq_nic = netdev_priv(netdev);
|
||||
|
||||
if (!IS_REACHABLE(CONFIG_PTP_1588_CLOCK) || !aq_nic->aq_ptp)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
switch (config->tx_type) {
|
||||
case HWTSTAMP_TX_OFF:
|
||||
case HWTSTAMP_TX_ON:
|
||||
@@ -290,59 +295,17 @@ static int aq_ndev_config_hwtstamp(struct aq_nic_s *aq_nic,
|
||||
|
||||
return aq_ptp_hwtstamp_config_set(aq_nic->aq_ptp, config);
|
||||
}
|
||||
#endif
|
||||
|
||||
static int aq_ndev_hwtstamp_set(struct aq_nic_s *aq_nic, struct ifreq *ifr)
|
||||
{
|
||||
struct hwtstamp_config config;
|
||||
#if IS_REACHABLE(CONFIG_PTP_1588_CLOCK)
|
||||
int ret_val;
|
||||
#endif
|
||||
|
||||
if (!aq_nic->aq_ptp)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
if (copy_from_user(&config, ifr->ifr_data, sizeof(config)))
|
||||
return -EFAULT;
|
||||
#if IS_REACHABLE(CONFIG_PTP_1588_CLOCK)
|
||||
ret_val = aq_ndev_config_hwtstamp(aq_nic, &config);
|
||||
if (ret_val)
|
||||
return ret_val;
|
||||
#endif
|
||||
|
||||
return copy_to_user(ifr->ifr_data, &config, sizeof(config)) ?
|
||||
-EFAULT : 0;
|
||||
}
|
||||
|
||||
#if IS_REACHABLE(CONFIG_PTP_1588_CLOCK)
|
||||
static int aq_ndev_hwtstamp_get(struct aq_nic_s *aq_nic, struct ifreq *ifr)
|
||||
{
|
||||
struct hwtstamp_config config;
|
||||
|
||||
if (!aq_nic->aq_ptp)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
aq_ptp_hwtstamp_config_get(aq_nic->aq_ptp, &config);
|
||||
return copy_to_user(ifr->ifr_data, &config, sizeof(config)) ?
|
||||
-EFAULT : 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
static int aq_ndev_ioctl(struct net_device *netdev, struct ifreq *ifr, int cmd)
|
||||
static int aq_ndev_hwtstamp_get(struct net_device *netdev,
|
||||
struct kernel_hwtstamp_config *config)
|
||||
{
|
||||
struct aq_nic_s *aq_nic = netdev_priv(netdev);
|
||||
|
||||
switch (cmd) {
|
||||
case SIOCSHWTSTAMP:
|
||||
return aq_ndev_hwtstamp_set(aq_nic, ifr);
|
||||
if (!aq_nic->aq_ptp)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
#if IS_REACHABLE(CONFIG_PTP_1588_CLOCK)
|
||||
case SIOCGHWTSTAMP:
|
||||
return aq_ndev_hwtstamp_get(aq_nic, ifr);
|
||||
#endif
|
||||
}
|
||||
|
||||
return -EOPNOTSUPP;
|
||||
aq_ptp_hwtstamp_config_get(aq_nic->aq_ptp, config);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int aq_ndo_vlan_rx_add_vid(struct net_device *ndev, __be16 proto,
|
||||
@@ -500,12 +463,13 @@ static const struct net_device_ops aq_ndev_ops = {
|
||||
.ndo_set_mac_address = aq_ndev_set_mac_address,
|
||||
.ndo_set_features = aq_ndev_set_features,
|
||||
.ndo_fix_features = aq_ndev_fix_features,
|
||||
.ndo_eth_ioctl = aq_ndev_ioctl,
|
||||
.ndo_vlan_rx_add_vid = aq_ndo_vlan_rx_add_vid,
|
||||
.ndo_vlan_rx_kill_vid = aq_ndo_vlan_rx_kill_vid,
|
||||
.ndo_setup_tc = aq_ndo_setup_tc,
|
||||
.ndo_bpf = aq_xdp,
|
||||
.ndo_xdp_xmit = aq_xdp_xmit,
|
||||
.ndo_hwtstamp_get = aq_ndev_hwtstamp_get,
|
||||
.ndo_hwtstamp_set = aq_ndev_hwtstamp_set,
|
||||
};
|
||||
|
||||
static int __init aq_ndev_init_module(void)
|
||||
|
||||
@@ -51,7 +51,7 @@ struct ptp_tx_timeout {
|
||||
|
||||
struct aq_ptp_s {
|
||||
struct aq_nic_s *aq_nic;
|
||||
struct hwtstamp_config hwtstamp_config;
|
||||
struct kernel_hwtstamp_config hwtstamp_config;
|
||||
spinlock_t ptp_lock;
|
||||
spinlock_t ptp_ring_lock;
|
||||
struct ptp_clock *ptp_clock;
|
||||
@@ -567,7 +567,7 @@ static void aq_ptp_rx_hwtstamp(struct aq_ptp_s *aq_ptp, struct skb_shared_hwtsta
|
||||
}
|
||||
|
||||
void aq_ptp_hwtstamp_config_get(struct aq_ptp_s *aq_ptp,
|
||||
struct hwtstamp_config *config)
|
||||
struct kernel_hwtstamp_config *config)
|
||||
{
|
||||
*config = aq_ptp->hwtstamp_config;
|
||||
}
|
||||
@@ -588,7 +588,7 @@ static void aq_ptp_prepare_filters(struct aq_ptp_s *aq_ptp)
|
||||
}
|
||||
|
||||
int aq_ptp_hwtstamp_config_set(struct aq_ptp_s *aq_ptp,
|
||||
struct hwtstamp_config *config)
|
||||
struct kernel_hwtstamp_config *config)
|
||||
{
|
||||
struct aq_nic_s *aq_nic = aq_ptp->aq_nic;
|
||||
const struct aq_hw_ops *hw_ops;
|
||||
|
||||
@@ -60,9 +60,9 @@ void aq_ptp_tx_hwtstamp(struct aq_nic_s *aq_nic, u64 timestamp);
|
||||
|
||||
/* Must be to check available of PTP before call */
|
||||
void aq_ptp_hwtstamp_config_get(struct aq_ptp_s *aq_ptp,
|
||||
struct hwtstamp_config *config);
|
||||
struct kernel_hwtstamp_config *config);
|
||||
int aq_ptp_hwtstamp_config_set(struct aq_ptp_s *aq_ptp,
|
||||
struct hwtstamp_config *config);
|
||||
struct kernel_hwtstamp_config *config);
|
||||
|
||||
/* Return either ring is belong to PTP or not*/
|
||||
bool aq_ptp_ring(struct aq_nic_s *aq_nic, struct aq_ring_s *ring);
|
||||
@@ -130,9 +130,9 @@ static inline int aq_ptp_xmit(struct aq_nic_s *aq_nic, struct sk_buff *skb)
|
||||
|
||||
static inline void aq_ptp_tx_hwtstamp(struct aq_nic_s *aq_nic, u64 timestamp) {}
|
||||
static inline void aq_ptp_hwtstamp_config_get(struct aq_ptp_s *aq_ptp,
|
||||
struct hwtstamp_config *config) {}
|
||||
struct kernel_hwtstamp_config *config) {}
|
||||
static inline int aq_ptp_hwtstamp_config_set(struct aq_ptp_s *aq_ptp,
|
||||
struct hwtstamp_config *config)
|
||||
struct kernel_hwtstamp_config *config)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user