|
@@ -871,10 +871,6 @@ e1000_init_hw(struct e1000_hw *hw)
|
|
|
uint32_t ctrl;
|
|
|
uint32_t i;
|
|
|
int32_t ret_val;
|
|
|
- uint16_t pcix_cmd_word;
|
|
|
- uint16_t pcix_stat_hi_word;
|
|
|
- uint16_t cmd_mmrbc;
|
|
|
- uint16_t stat_mmrbc;
|
|
|
uint32_t mta_size;
|
|
|
uint32_t reg_data;
|
|
|
uint32_t ctrl_ext;
|
|
@@ -964,24 +960,9 @@ e1000_init_hw(struct e1000_hw *hw)
|
|
|
break;
|
|
|
default:
|
|
|
/* Workaround for PCI-X problem when BIOS sets MMRBC incorrectly. */
|
|
|
- if (hw->bus_type == e1000_bus_type_pcix) {
|
|
|
- e1000_read_pci_cfg(hw, PCIX_COMMAND_REGISTER, &pcix_cmd_word);
|
|
|
- e1000_read_pci_cfg(hw, PCIX_STATUS_REGISTER_HI,
|
|
|
- &pcix_stat_hi_word);
|
|
|
- cmd_mmrbc = (pcix_cmd_word & PCIX_COMMAND_MMRBC_MASK) >>
|
|
|
- PCIX_COMMAND_MMRBC_SHIFT;
|
|
|
- stat_mmrbc = (pcix_stat_hi_word & PCIX_STATUS_HI_MMRBC_MASK) >>
|
|
|
- PCIX_STATUS_HI_MMRBC_SHIFT;
|
|
|
- if (stat_mmrbc == PCIX_STATUS_HI_MMRBC_4K)
|
|
|
- stat_mmrbc = PCIX_STATUS_HI_MMRBC_2K;
|
|
|
- if (cmd_mmrbc > stat_mmrbc) {
|
|
|
- pcix_cmd_word &= ~PCIX_COMMAND_MMRBC_MASK;
|
|
|
- pcix_cmd_word |= stat_mmrbc << PCIX_COMMAND_MMRBC_SHIFT;
|
|
|
- e1000_write_pci_cfg(hw, PCIX_COMMAND_REGISTER,
|
|
|
- &pcix_cmd_word);
|
|
|
- }
|
|
|
- }
|
|
|
- break;
|
|
|
+ if (hw->bus_type == e1000_bus_type_pcix && e1000_pcix_get_mmrbc(hw) > 2048)
|
|
|
+ e1000_pcix_set_mmrbc(hw, 2048);
|
|
|
+ break;
|
|
|
}
|
|
|
|
|
|
/* More time needed for PHY to initialize */
|