Переглянути джерело

Kernel: Avoid resetting the IRQ mask for E1000 on each interrupt

Gunnar Beutner 4 роки тому
батько
коміт
eaf8fc90e7
1 змінених файлів з 1 додано та 4 видалено
  1. 1 4
      Kernel/Net/E1000NetworkAdapter.cpp

+ 1 - 4
Kernel/Net/E1000NetworkAdapter.cpp

@@ -206,7 +206,6 @@ UNMAP_AFTER_INIT E1000NetworkAdapter::E1000NetworkAdapter(PCI::Address address,
     initialize_rx_descriptors();
     initialize_rx_descriptors();
     initialize_tx_descriptors();
     initialize_tx_descriptors();
 
 
-    out32(REG_INTERRUPT_MASK_SET, 0x1f6dc);
     out32(REG_INTERRUPT_MASK_SET, INTERRUPT_LSC | INTERRUPT_RXT0 | INTERRUPT_RXO);
     out32(REG_INTERRUPT_MASK_SET, INTERRUPT_LSC | INTERRUPT_RXT0 | INTERRUPT_RXO);
     in32(REG_INTERRUPT_CAUSE_READ);
     in32(REG_INTERRUPT_CAUSE_READ);
 
 
@@ -219,8 +218,6 @@ UNMAP_AFTER_INIT E1000NetworkAdapter::~E1000NetworkAdapter()
 
 
 void E1000NetworkAdapter::handle_irq(const RegisterState&)
 void E1000NetworkAdapter::handle_irq(const RegisterState&)
 {
 {
-    out32(REG_INTERRUPT_MASK_CLEAR, 0xffffffff);
-
     u32 status = in32(REG_INTERRUPT_CAUSE_READ);
     u32 status = in32(REG_INTERRUPT_CAUSE_READ);
 
 
     m_entropy_source.add_random_event(status);
     m_entropy_source.add_random_event(status);
@@ -241,7 +238,7 @@ void E1000NetworkAdapter::handle_irq(const RegisterState&)
 
 
     m_wait_queue.wake_all();
     m_wait_queue.wake_all();
 
 
-    out32(REG_INTERRUPT_MASK_SET, INTERRUPT_LSC | INTERRUPT_RXT0 | INTERRUPT_RXO);
+    out32(REG_INTERRUPT_CAUSE_READ, 0xffffffff);
 }
 }
 
 
 UNMAP_AFTER_INIT void E1000NetworkAdapter::detect_eeprom()
 UNMAP_AFTER_INIT void E1000NetworkAdapter::detect_eeprom()