int pcie_retrain_link(struct pci_dev *pdev, bool use_lt)
 {
        int rc;
-       u16 lnkctl;
 
        /*
         * Ensure the updated LNKCTL parameters are used during link
        if (rc)
                return rc;
 
-       pcie_capability_read_word(pdev, PCI_EXP_LNKCTL, &lnkctl);
-       lnkctl |= PCI_EXP_LNKCTL_RL;
-       pcie_capability_write_word(pdev, PCI_EXP_LNKCTL, lnkctl);
+       pcie_capability_set_word(pdev, PCI_EXP_LNKCTL, PCI_EXP_LNKCTL_RL);
        if (pdev->clear_retrain_link) {
                /*
                 * Due to an erratum in some devices the Retrain Link bit
                 * needs to be cleared again manually to allow the link
                 * training to succeed.
                 */
-               lnkctl &= ~PCI_EXP_LNKCTL_RL;
-               pcie_capability_write_word(pdev, PCI_EXP_LNKCTL, lnkctl);
+               pcie_capability_clear_word(pdev, PCI_EXP_LNKCTL, PCI_EXP_LNKCTL_RL);
        }
 
        return pcie_wait_for_link_status(pdev, use_lt, !use_lt);