From 38227b2177ae4f23e5e0a0ed59bb180837f95d71 Mon Sep 17 00:00:00 2001 From: Narayan Reddy Date: Mon, 19 May 2025 19:07:13 +0000 Subject: [PATCH] nvethernet: add SIOCGHWTSTAMP support issue: facing an unsupported ioctl error while launching the ptp4l, since get timestamp configuration support is not there. fix: add get timestamp configuration ioctl support Bug 5274698 Bug 5287071 Signed-off-by: Narayan Reddy Change-Id: I9254b041d4d3b9dc2cddebc14dc6100ed1b76807 Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/3366858 Reviewed-by: Rakesh Goyal Reviewed-by: Bhadram Varka GVS: buildbot_gerritrpt Tested-by: mobile promotions Reviewed-by: mobile promotions Reviewed-by: Srinivas Ramachandran --- .../net/ethernet/nvidia/nvethernet/ether_callback_export.h | 1 + drivers/net/ethernet/nvidia/nvethernet/ether_linux.c | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/nvidia/nvethernet/ether_callback_export.h b/drivers/net/ethernet/nvidia/nvethernet/ether_callback_export.h index 3a60154c..b585f083 100644 --- a/drivers/net/ethernet/nvidia/nvethernet/ether_callback_export.h +++ b/drivers/net/ethernet/nvidia/nvethernet/ether_callback_export.h @@ -473,6 +473,7 @@ irqreturn_t ether_vm_isr(int irq, void *data); * - SIOCGMIIREG: read register from the specified PHY. * - SIOCSMIIREG: set a register on the specified PHY. * - SIOCSHWTSTAMP: Configure hardware time stamping. + * - SIOCGHWTSTAMP: Get hardware time stamp configuration. * * @usage * - Allowed context for the API call diff --git a/drivers/net/ethernet/nvidia/nvethernet/ether_linux.c b/drivers/net/ethernet/nvidia/nvethernet/ether_linux.c index a9160be7..f571ed2b 100644 --- a/drivers/net/ethernet/nvidia/nvethernet/ether_linux.c +++ b/drivers/net/ethernet/nvidia/nvethernet/ether_linux.c @@ -4369,6 +4369,7 @@ int ether_ioctl(struct net_device *dev, struct ifreq *rq, int cmd) int ret = -EOPNOTSUPP; struct ether_priv_data *pdata; struct mii_ioctl_data *mii_data; + struct hwtstamp_config *config; if (!dev || !rq) { pr_err("%s: Invalid arg\n", __func__); @@ -4452,7 +4453,10 @@ int ether_ioctl(struct net_device *dev, struct ifreq *rq, int cmd) case SIOCSHWTSTAMP: ret = ether_handle_hwtstamp_ioctl(pdata, rq); break; - + case SIOCGHWTSTAMP: + config = &pdata->ptp_config; + ret = copy_to_user(rq->ifr_data, config, sizeof(*config)) ? -EFAULT : 0; + break; default: netdev_err(dev, "%s: Unsupported ioctl %d\n", __func__, cmd);