/**
  * pci_irq_vector - return Linux IRQ number of a device vector
- * @dev: PCI device to operate on
- * @nr: device-relative interrupt vector index (0-based).
+ * @dev:       PCI device to operate on
+ * @nr:                Interrupt vector index (0-based)
+ *
+ * @nr has the following meanings depending on the interrupt mode:
+ *   MSI-X:    The index in the MSI-X vector table
+ *   MSI:      The index of the enabled MSI vectors
+ *   INTx:     Must be 0
+ *
+ * Return: The Linux interrupt number or -EINVAl if @nr is out of range.
  */
 int pci_irq_vector(struct pci_dev *dev, unsigned int nr)
 {
        if (dev->msix_enabled) {
                struct msi_desc *entry;
-               int i = 0;
 
                for_each_pci_msi_entry(entry, dev) {
-                       if (i == nr)
+                       if (entry->msi_attrib.entry_nr == nr)
                                return entry->irq;
-                       i++;
                }
                WARN_ON_ONCE(1);
                return -EINVAL;
  * pci_irq_get_affinity - return the affinity of a particular MSI vector
  * @dev:       PCI device to operate on
  * @nr:                device-relative interrupt vector index (0-based).
+ *
+ * @nr has the following meanings depending on the interrupt mode:
+ *   MSI-X:    The index in the MSI-X vector table
+ *   MSI:      The index of the enabled MSI vectors
+ *   INTx:     Must be 0
+ *
+ * Return: A cpumask pointer or NULL if @nr is out of range
  */
 const struct cpumask *pci_irq_get_affinity(struct pci_dev *dev, int nr)
 {
        if (dev->msix_enabled) {
                struct msi_desc *entry;
-               int i = 0;
 
                for_each_pci_msi_entry(entry, dev) {
-                       if (i == nr)
+                       if (entry->msi_attrib.entry_nr == nr)
                                return &entry->affinity->mask;
-                       i++;
                }
                WARN_ON_ONCE(1);
                return NULL;