mirror of
https://github.com/torvalds/linux.git
synced 2026-05-28 00:53:34 +02:00
octeontx2: convert to ndo_hwtstamp API
Convert driver to use .ndo_hwtstamp_get()/.ndo_hwtstamp_set() callbacks. otx2_ioctl() becomes empty, remove it. 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-2-vadim.fedorenko@linux.dev Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
05e090620b
commit
a5c12b060e
|
|
@ -527,7 +527,7 @@ struct otx2_nic {
|
|||
u32 nix_lmt_size;
|
||||
|
||||
struct otx2_ptp *ptp;
|
||||
struct hwtstamp_config tstamp;
|
||||
struct kernel_hwtstamp_config tstamp;
|
||||
|
||||
unsigned long rq_bmap;
|
||||
|
||||
|
|
@ -1098,8 +1098,11 @@ int otx2_open(struct net_device *netdev);
|
|||
int otx2_stop(struct net_device *netdev);
|
||||
int otx2_set_real_num_queues(struct net_device *netdev,
|
||||
int tx_queues, int rx_queues);
|
||||
int otx2_ioctl(struct net_device *netdev, struct ifreq *req, int cmd);
|
||||
int otx2_config_hwtstamp(struct net_device *netdev, struct ifreq *ifr);
|
||||
int otx2_config_hwtstamp_get(struct net_device *netdev,
|
||||
struct kernel_hwtstamp_config *config);
|
||||
int otx2_config_hwtstamp_set(struct net_device *netdev,
|
||||
struct kernel_hwtstamp_config *config,
|
||||
struct netlink_ext_ack *extack);
|
||||
|
||||
/* MCAM filter related APIs */
|
||||
int otx2_mcam_flow_init(struct otx2_nic *pf);
|
||||
|
|
|
|||
|
|
@ -2445,18 +2445,26 @@ static int otx2_config_hw_tx_tstamp(struct otx2_nic *pfvf, bool enable)
|
|||
return 0;
|
||||
}
|
||||
|
||||
int otx2_config_hwtstamp(struct net_device *netdev, struct ifreq *ifr)
|
||||
int otx2_config_hwtstamp_get(struct net_device *netdev,
|
||||
struct kernel_hwtstamp_config *config)
|
||||
{
|
||||
struct otx2_nic *pfvf = netdev_priv(netdev);
|
||||
|
||||
*config = pfvf->tstamp;
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL(otx2_config_hwtstamp_get);
|
||||
|
||||
int otx2_config_hwtstamp_set(struct net_device *netdev,
|
||||
struct kernel_hwtstamp_config *config,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct otx2_nic *pfvf = netdev_priv(netdev);
|
||||
struct hwtstamp_config config;
|
||||
|
||||
if (!pfvf->ptp)
|
||||
return -ENODEV;
|
||||
|
||||
if (copy_from_user(&config, ifr->ifr_data, sizeof(config)))
|
||||
return -EFAULT;
|
||||
|
||||
switch (config.tx_type) {
|
||||
switch (config->tx_type) {
|
||||
case HWTSTAMP_TX_OFF:
|
||||
if (pfvf->flags & OTX2_FLAG_PTP_ONESTEP_SYNC)
|
||||
pfvf->flags &= ~OTX2_FLAG_PTP_ONESTEP_SYNC;
|
||||
|
|
@ -2465,8 +2473,11 @@ int otx2_config_hwtstamp(struct net_device *netdev, struct ifreq *ifr)
|
|||
otx2_config_hw_tx_tstamp(pfvf, false);
|
||||
break;
|
||||
case HWTSTAMP_TX_ONESTEP_SYNC:
|
||||
if (!test_bit(CN10K_PTP_ONESTEP, &pfvf->hw.cap_flag))
|
||||
if (!test_bit(CN10K_PTP_ONESTEP, &pfvf->hw.cap_flag)) {
|
||||
NL_SET_ERR_MSG_MOD(extack,
|
||||
"One-step time stamping is not supported");
|
||||
return -ERANGE;
|
||||
}
|
||||
pfvf->flags |= OTX2_FLAG_PTP_ONESTEP_SYNC;
|
||||
schedule_delayed_work(&pfvf->ptp->synctstamp_work,
|
||||
msecs_to_jiffies(500));
|
||||
|
|
@ -2478,7 +2489,7 @@ int otx2_config_hwtstamp(struct net_device *netdev, struct ifreq *ifr)
|
|||
return -ERANGE;
|
||||
}
|
||||
|
||||
switch (config.rx_filter) {
|
||||
switch (config->rx_filter) {
|
||||
case HWTSTAMP_FILTER_NONE:
|
||||
otx2_config_hw_rx_tstamp(pfvf, false);
|
||||
break;
|
||||
|
|
@ -2497,35 +2508,17 @@ int otx2_config_hwtstamp(struct net_device *netdev, struct ifreq *ifr)
|
|||
case HWTSTAMP_FILTER_PTP_V2_SYNC:
|
||||
case HWTSTAMP_FILTER_PTP_V2_DELAY_REQ:
|
||||
otx2_config_hw_rx_tstamp(pfvf, true);
|
||||
config.rx_filter = HWTSTAMP_FILTER_ALL;
|
||||
config->rx_filter = HWTSTAMP_FILTER_ALL;
|
||||
break;
|
||||
default:
|
||||
return -ERANGE;
|
||||
}
|
||||
|
||||
memcpy(&pfvf->tstamp, &config, sizeof(config));
|
||||
pfvf->tstamp = *config;
|
||||
|
||||
return copy_to_user(ifr->ifr_data, &config,
|
||||
sizeof(config)) ? -EFAULT : 0;
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL(otx2_config_hwtstamp);
|
||||
|
||||
int otx2_ioctl(struct net_device *netdev, struct ifreq *req, int cmd)
|
||||
{
|
||||
struct otx2_nic *pfvf = netdev_priv(netdev);
|
||||
struct hwtstamp_config *cfg = &pfvf->tstamp;
|
||||
|
||||
switch (cmd) {
|
||||
case SIOCSHWTSTAMP:
|
||||
return otx2_config_hwtstamp(netdev, req);
|
||||
case SIOCGHWTSTAMP:
|
||||
return copy_to_user(req->ifr_data, cfg,
|
||||
sizeof(*cfg)) ? -EFAULT : 0;
|
||||
default:
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
}
|
||||
EXPORT_SYMBOL(otx2_ioctl);
|
||||
EXPORT_SYMBOL(otx2_config_hwtstamp_set);
|
||||
|
||||
static int otx2_do_set_vf_mac(struct otx2_nic *pf, int vf, const u8 *mac)
|
||||
{
|
||||
|
|
@ -2942,7 +2935,6 @@ static const struct net_device_ops otx2_netdev_ops = {
|
|||
.ndo_set_features = otx2_set_features,
|
||||
.ndo_tx_timeout = otx2_tx_timeout,
|
||||
.ndo_get_stats64 = otx2_get_stats64,
|
||||
.ndo_eth_ioctl = otx2_ioctl,
|
||||
.ndo_set_vf_mac = otx2_set_vf_mac,
|
||||
.ndo_set_vf_vlan = otx2_set_vf_vlan,
|
||||
.ndo_get_vf_config = otx2_get_vf_config,
|
||||
|
|
@ -2951,6 +2943,8 @@ static const struct net_device_ops otx2_netdev_ops = {
|
|||
.ndo_xdp_xmit = otx2_xdp_xmit,
|
||||
.ndo_setup_tc = otx2_setup_tc,
|
||||
.ndo_set_vf_trust = otx2_ndo_set_vf_trust,
|
||||
.ndo_hwtstamp_get = otx2_config_hwtstamp_get,
|
||||
.ndo_hwtstamp_set = otx2_config_hwtstamp_set,
|
||||
};
|
||||
|
||||
int otx2_wq_init(struct otx2_nic *pf)
|
||||
|
|
|
|||
|
|
@ -534,8 +534,9 @@ static const struct net_device_ops otx2vf_netdev_ops = {
|
|||
.ndo_set_features = otx2vf_set_features,
|
||||
.ndo_get_stats64 = otx2_get_stats64,
|
||||
.ndo_tx_timeout = otx2_tx_timeout,
|
||||
.ndo_eth_ioctl = otx2_ioctl,
|
||||
.ndo_setup_tc = otx2_setup_tc,
|
||||
.ndo_hwtstamp_get = otx2_config_hwtstamp_get,
|
||||
.ndo_hwtstamp_set = otx2_config_hwtstamp_set,
|
||||
};
|
||||
|
||||
static int otx2_vf_wq_init(struct otx2_nic *vf)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user