s32 igb_read_pcie_cap_reg(struct e1000_hw *hw, u32 reg, u16 *value)
 {
        struct igb_adapter *adapter = hw->back;
-       u16 cap_offset;
 
-       cap_offset = adapter->pdev->pcie_cap;
-       if (!cap_offset)
+       if (pcie_capability_read_word(adapter->pdev, reg, value))
                return -E1000_ERR_CONFIG;
 
-       pci_read_config_word(adapter->pdev, cap_offset + reg, value);
-
        return 0;
 }
 
 s32 igb_write_pcie_cap_reg(struct e1000_hw *hw, u32 reg, u16 *value)
 {
        struct igb_adapter *adapter = hw->back;
-       u16 cap_offset;
 
-       cap_offset = adapter->pdev->pcie_cap;
-       if (!cap_offset)
+       if (pcie_capability_write_word(adapter->pdev, reg, *value))
                return -E1000_ERR_CONFIG;
 
-       pci_write_config_word(adapter->pdev, cap_offset + reg, *value);
-
        return 0;
 }