Re: [PATCH v5 2/3] PCI: Move pci_bus_speed2lnkctl2() to public header
From: Hans Zhang
Date: Tue Apr 07 2026 - 08:10:21 EST
On 4/7/26 16:11, Ilpo Järvinen wrote:
On Mon, 6 Apr 2026, Hans Zhang wrote:
Move the static array-based pci_bus_speed2lnkctl2() function from
bwctrl.c to pci.h as a public inline function.
This provides efficient O(1) speed-to-LNKCTL2 value conversion using
static array lookup, maintaining optimal performance while enabling
code reuse by other PCIe drivers.
Signed-off-by: Hans Zhang <18255117159@xxxxxxx>
---
drivers/pci/pci.h | 17 +++++++++++++++++
drivers/pci/pcie/bwctrl.c | 17 -----------------
2 files changed, 17 insertions(+), 17 deletions(-)
diff --git a/drivers/pci/pci.h b/drivers/pci/pci.h
index f0a082bfd6f1..db91878a86ac 100644
--- a/drivers/pci/pci.h
+++ b/drivers/pci/pci.h
@@ -611,6 +611,23 @@ static inline bool pcie_valid_speed(enum pci_bus_speed speed)
return (speed >= PCIE_SPEED_2_5GT) && (speed <= PCIE_SPEED_64_0GT);
}
+static inline u16 pci_bus_speed2lnkctl2(enum pci_bus_speed speed)
+{
+ static const u8 speed_conv[] = {
+ [PCIE_SPEED_2_5GT] = PCI_EXP_LNKCTL2_TLS_2_5GT,
+ [PCIE_SPEED_5_0GT] = PCI_EXP_LNKCTL2_TLS_5_0GT,
+ [PCIE_SPEED_8_0GT] = PCI_EXP_LNKCTL2_TLS_8_0GT,
+ [PCIE_SPEED_16_0GT] = PCI_EXP_LNKCTL2_TLS_16_0GT,
+ [PCIE_SPEED_32_0GT] = PCI_EXP_LNKCTL2_TLS_32_0GT,
+ [PCIE_SPEED_64_0GT] = PCI_EXP_LNKCTL2_TLS_64_0GT,
+ };
+
+ if (WARN_ON_ONCE(!pcie_valid_speed(speed)))
drivers/pci/pci.h doesn't seem to have include for WARN_ON_ONCE() so you
should add it.
Hi Ilpo,
In the file "drivers/pci/pcie/bwctrl.c", there is no reference to the header file of WARN_ON_ONCE(). It seems that no error was reported. I think it might be that some other header files have indirectly referenced the header file of WARN_ON_ONCE(). However, when I compiled it locally, no errors were reported.
I think if we want to add a header file, it should be #include <asm-generic/bug.h> ?
Best regards,
Hans