|
@@ -572,6 +572,13 @@ static int intel_open ( struct net_device *netdev ) {
|
572
|
572
|
/* Update link state */
|
573
|
573
|
intel_check_link ( netdev );
|
574
|
574
|
|
|
575
|
+ /* Apply required errata */
|
|
576
|
+ if ( intel->flags & INTEL_VMWARE ) {
|
|
577
|
+ DBGC ( intel, "INTEL %p applying VMware errata workaround\n",
|
|
578
|
+ intel );
|
|
579
|
+ intel->force_icr = INTEL_IRQ_RXT0;
|
|
580
|
+ }
|
|
581
|
+
|
575
|
582
|
return 0;
|
576
|
583
|
|
577
|
584
|
intel_destroy_ring ( intel, &intel->rx );
|
|
@@ -740,6 +747,7 @@ static void intel_poll ( struct net_device *netdev ) {
|
740
|
747
|
icr = readl ( intel->regs + INTEL_ICR );
|
741
|
748
|
profile_stop ( &intel_vm_poll_profiler );
|
742
|
749
|
profile_exclude ( &intel_vm_poll_profiler );
|
|
750
|
+ icr |= intel->force_icr;
|
743
|
751
|
if ( ! icr )
|
744
|
752
|
return;
|
745
|
753
|
|
|
@@ -907,7 +915,7 @@ static struct pci_device_id intel_nics[] = {
|
907
|
915
|
PCI_ROM ( 0x8086, 0x100c, "82544gc", "82544GC (Copper)", 0 ),
|
908
|
916
|
PCI_ROM ( 0x8086, 0x100d, "82544gc-l", "82544GC (LOM)", 0 ),
|
909
|
917
|
PCI_ROM ( 0x8086, 0x100e, "82540em", "82540EM", 0 ),
|
910
|
|
- PCI_ROM ( 0x8086, 0x100f, "82545em", "82545EM (Copper)", 0 ),
|
|
918
|
+ PCI_ROM ( 0x8086, 0x100f, "82545em", "82545EM (Copper)", INTEL_VMWARE ),
|
911
|
919
|
PCI_ROM ( 0x8086, 0x1010, "82546eb", "82546EB (Copper)", 0 ),
|
912
|
920
|
PCI_ROM ( 0x8086, 0x1011, "82545em-f", "82545EM (Fiber)", 0 ),
|
913
|
921
|
PCI_ROM ( 0x8086, 0x1012, "82546eb-f", "82546EB (Fiber)", 0 ),
|