PCI/VPD: Remove pci_vpd_find_tag() SRDT handling
authorHeiner Kallweit <hkallweit1@gmail.com>
Thu, 1 Apr 2021 16:44:15 +0000 (18:44 +0200)
committerBjorn Helgaas <bhelgaas@google.com>
Fri, 30 Apr 2021 19:38:32 +0000 (14:38 -0500)
Only SRDT tag is the end tag, and no caller is interested in it.  This
allows to remove all SRDT tag handling.

Link: https://lore.kernel.org/r/3f63f06f-734f-8fff-9518-27fe1faf903d@gmail.com
Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
drivers/pci/vpd.c

index 79d4313..562d79b 100644 (file)
@@ -412,33 +412,14 @@ void pcie_vpd_remove_sysfs_dev_files(struct pci_dev *dev)
 
 int pci_vpd_find_tag(const u8 *buf, unsigned int len, u8 rdt)
 {
-       int i;
-
-       for (i = 0; i < len; ) {
-               u8 val = buf[i];
-
-               if (val & PCI_VPD_LRDT) {
-                       /* Don't return success of the tag isn't complete */
-                       if (i + PCI_VPD_LRDT_TAG_SIZE > len)
-                               break;
+       int i = 0;
 
-                       if (val == rdt)
-                               return i;
-
-                       i += PCI_VPD_LRDT_TAG_SIZE +
-                            pci_vpd_lrdt_size(&buf[i]);
-               } else {
-                       u8 tag = val & ~PCI_VPD_SRDT_LEN_MASK;
-
-                       if (tag == rdt)
-                               return i;
-
-                       if (tag == PCI_VPD_SRDT_END)
-                               break;
+       /* look for LRDT tags only, end tag is the only SRDT tag */
+       while (i + PCI_VPD_LRDT_TAG_SIZE <= len && buf[i] & PCI_VPD_LRDT) {
+               if (buf[i] == rdt)
+                       return i;
 
-                       i += PCI_VPD_SRDT_TAG_SIZE +
-                            pci_vpd_srdt_size(&buf[i]);
-               }
+               i += PCI_VPD_LRDT_TAG_SIZE + pci_vpd_lrdt_size(buf + i);
        }
 
        return -ENOENT;