mirror of
https://github.com/genodelabs/genode.git
synced 2024-12-20 06:07:59 +00:00
1cc3472e1d
Fixes #3201
81 lines
2.9 KiB
Diff
81 lines
2.9 KiB
Diff
diff --git a/src/drivers/net/intel.c b/src/drivers/net/intel.c
|
|
index c3a7d407..8e8cea67 100644
|
|
--- a/src/drivers/net/intel.c
|
|
+++ b/src/drivers/net/intel.c
|
|
@@ -219,16 +219,16 @@ static int intel_fetch_mac ( struct intel_nic *intel, uint8_t *hw_addr ) {
|
|
DBGC ( intel, "INTEL %p has autoloaded MAC address %s\n",
|
|
intel, eth_ntoa ( mac.raw ) );
|
|
|
|
- /* Try to read address from EEPROM */
|
|
- if ( ( rc = intel_fetch_mac_eeprom ( intel, hw_addr ) ) == 0 )
|
|
- return 0;
|
|
-
|
|
/* Use current address if valid */
|
|
if ( is_valid_ether_addr ( mac.raw ) ) {
|
|
memcpy ( hw_addr, mac.raw, ETH_ALEN );
|
|
return 0;
|
|
}
|
|
|
|
+ /* Otherwise, try to read address from EEPROM */
|
|
+ if ( ( rc = intel_fetch_mac_eeprom ( intel, hw_addr ) ) == 0 )
|
|
+ return 0;
|
|
+
|
|
DBGC ( intel, "INTEL %p has no MAC address to use\n", intel );
|
|
return -ENOENT;
|
|
}
|
|
@@ -305,6 +305,9 @@ static int intel_reset ( struct intel_nic *intel ) {
|
|
return 0;
|
|
}
|
|
|
|
+ /* XXX skip MAC/PHY reset */
|
|
+ return 0;
|
|
+
|
|
/* Reset PHY and MAC simultaneously */
|
|
writel ( ( ctrl | INTEL_CTRL_RST | INTEL_CTRL_PHY_RST ),
|
|
intel->regs + INTEL_CTRL );
|
|
@@ -953,6 +956,18 @@ static struct pci_device_id intel_nics[] = {
|
|
PCI_ROM ( 0x8086, 0x1526, "82576-5", "82576", 0 ),
|
|
PCI_ROM ( 0x8086, 0x1527, "82580-f2", "82580 Fiber", 0 ),
|
|
PCI_ROM ( 0x8086, 0x1533, "i210", "I210", 0 ),
|
|
+ PCI_ROM ( 0x8086, 0x1539, "i211", "I211", 0 ),
|
|
+ PCI_ROM ( 0x8086, 0x153a, "i217lm", "I217LM", 0 ),
|
|
+ PCI_ROM ( 0x8086, 0x1559, "i218v", "I218V", 0 ),
|
|
+ PCI_ROM ( 0x8086, 0x155a, "i218lm", "I218LM", 0 ),
|
|
+ PCI_ROM ( 0x8086, 0x15a1, "i218v", "I218V", 0 ),
|
|
+ PCI_ROM ( 0x8086, 0x15a2, "i218lm-3", "I218-LM", 0 ),
|
|
+ PCI_ROM ( 0x8086, 0x156f, "i219lm", "I219-LM", 0 ),
|
|
+ PCI_ROM ( 0x8086, 0x15b7, "i219lm", "I219-LM", 0 ),
|
|
+ PCI_ROM ( 0x8086, 0x15d7, "i219lm", "I219-LM", 0 ),
|
|
+ PCI_ROM ( 0x8086, 0x15e3, "i219lm", "I219-LM", 0 ),
|
|
+ PCI_ROM ( 0x8086, 0x1570, "i219v", "I219V", 0 ),
|
|
+ PCI_ROM ( 0x8086, 0x157b, "i210-2", "I210", 0 ),
|
|
PCI_ROM ( 0x8086, 0x294c, "82566dc-2", "82566DC-2", 0 ),
|
|
PCI_ROM ( 0x8086, 0x2e6e, "cemedia", "CE Media Processor", 0 ),
|
|
};
|
|
diff --git a/src/drivers/net/intel.h b/src/drivers/net/intel.h
|
|
index 20b4255e..2a11e1df 100644
|
|
--- a/src/drivers/net/intel.h
|
|
+++ b/src/drivers/net/intel.h
|
|
@@ -138,10 +138,10 @@ enum intel_descriptor_status {
|
|
* Minimum value is 8, since the descriptor ring length must be a
|
|
* multiple of 128.
|
|
*/
|
|
-#define INTEL_NUM_RX_DESC 8
|
|
+#define INTEL_NUM_RX_DESC 256
|
|
|
|
/** Receive descriptor ring fill level */
|
|
-#define INTEL_RX_FILL 4
|
|
+#define INTEL_RX_FILL (INTEL_NUM_RX_DESC / 2)
|
|
|
|
/** Receive buffer length */
|
|
#define INTEL_RX_MAX_LEN 2048
|
|
@@ -154,7 +154,7 @@ enum intel_descriptor_status {
|
|
* Descriptor ring length must be a multiple of 16. ICH8/9/10
|
|
* requires a minimum of 16 TX descriptors.
|
|
*/
|
|
-#define INTEL_NUM_TX_DESC 16
|
|
+#define INTEL_NUM_TX_DESC 256
|
|
|
|
/** Receive/Transmit Descriptor Base Address Low (offset) */
|
|
#define INTEL_xDBAL 0x00
|