On 3.3.2025 12.56, raoxu wrote:
From: Xu Rao <raoxu@xxxxxxxxxxxxx> In many projects, you need to obtain the available bandwidth of the xhci roothub port. Refer to xhci rev1_2 and use the TRB_GET_BW command to obtain it. hardware tested: 03:00.3 USB controller: Advanced Micro Devices, Inc. [AMD] Raven USB 3.1 (prog-if 30 [XHCI]) Subsystem: Huawei Technologies Co., Ltd. Raven USB 3.1 Flags: bus master, fast devsel, latency 0, IRQ 30 Memory at c0300000 (64-bit, non-prefetchable) [size=1M] Capabilities: [48] Vendor Specific Information: Len=08 <?> Capabilities: [50] Power Management version 3 Capabilities: [64] Express Endpoint, MSI 00 Capabilities: [a0] MSI: Enable- Count=1/8 Maskable- 64bit+ Capabilities: [c0] MSI-X: Enable+ Count=8 Masked- Kernel driver in use: xhci_hcd test progress: 1.cd /sys/kernel/debug/usb/xhci/0000:03:00.3 cat port_bandwidth /sys/kernel/debug/usb/xhci/0000:03:00.3# cat port_bandwidth port[1] available bw: 79%. port[2] available bw: 79%. port[3] available bw: 79%. port[4] available bw: 79%. port[5] available bw: 90%. port[6] available bw: 90%. port[7] available bw: 90%. port[8] available bw: 90%. 2.plug in usb video cammer open it cat port_bandwidth port[1] available bw: 39%. port[2] available bw: 39%. port[3] available bw: 39%. port[4] available bw: 39%. port[5] available bw: 90%. port[6] available bw: 90%. port[7] available bw: 90%. port[8] available bw: 90%. Signed-off-by: Xu Rao <raoxu@xxxxxxxxxxxxx>
Thanks Xy Rao, Nice to see support for 'Get Port Bandwidth' feature in xhci. I do however have some larger rework suggestions to this. Instead of queuing three commands on one file read, parsing and copy the content from each context dma into an array on stack, we could have separate files in debugfs for each speed, and queue one command for each. we could also skip the array on stack and print values from context directly. Something is also very off with the locks in this patch. Looks like every lock/unlock got replaced with an unlock Thanks Mathias