[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20230721084039.9728-1-18500469033@163.com>
Date: Fri, 21 Jul 2023 16:40:39 +0800
From: Dingyan Li <18500469033@....com>
To: gregkh@...uxfoundation.org, stern@...land.harvard.edu,
sebastian.reichel@...labora.com
Cc: linux-usb@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: [PATCH] USB: add usbfs ioctl to get specific superspeedplus rates
The usbfs interface does not provide any way to get specific
superspeedplus rate, like Gen2x1, Gen1x2 or Gen2x2. Current
API include an USBDEVFS_GET_SPEED ioctl, but it can only return
general superspeedplus speed instead of any specific rates.
Therefore we can't tell whether it's a Gen2x2(20Gbps) device.
This patch introduce a new ioctl USBDEVFS_GET_SSP_RATE to fix
it. Similar information is already available via sysfs, it's
good to add it for usbfs too.
Signed-off-by: Dingyan Li <18500469033@....com>
---
drivers/usb/core/devio.c | 3 +++
include/uapi/linux/usbdevice_fs.h | 1 +
2 files changed, 4 insertions(+)
diff --git a/drivers/usb/core/devio.c b/drivers/usb/core/devio.c
index 1a16a8bdea60..2f57eb163360 100644
--- a/drivers/usb/core/devio.c
+++ b/drivers/usb/core/devio.c
@@ -2783,6 +2783,9 @@ static long usbdev_do_ioctl(struct file *file, unsigned int cmd,
case USBDEVFS_GET_SPEED:
ret = ps->dev->speed;
break;
+ case USBDEVFS_GET_SSP_RATE:
+ ret = ps->dev->ssp_rate;
+ break;
case USBDEVFS_FORBID_SUSPEND:
ret = proc_forbid_suspend(ps);
break;
diff --git a/include/uapi/linux/usbdevice_fs.h b/include/uapi/linux/usbdevice_fs.h
index 74a84e02422a..f5522e910329 100644
--- a/include/uapi/linux/usbdevice_fs.h
+++ b/include/uapi/linux/usbdevice_fs.h
@@ -227,5 +227,6 @@ struct usbdevfs_streams {
#define USBDEVFS_FORBID_SUSPEND _IO('U', 33)
#define USBDEVFS_ALLOW_SUSPEND _IO('U', 34)
#define USBDEVFS_WAIT_FOR_RESUME _IO('U', 35)
+#define USBDEVFS_GET_SSP_RATE _IO('U', 36)
#endif /* _UAPI_LINUX_USBDEVICE_FS_H */
--
2.25.1
Powered by blists - more mailing lists