Write Interrupt interval in extended register for 82575 cards.
authorGerd Zellweger <mail@gerdzellweger.com>
Wed, 22 May 2013 14:44:21 +0000 (16:44 +0200)
committerGerd Zellweger <mail@gerdzellweger.com>
Fri, 24 May 2013 09:12:36 +0000 (11:12 +0200)
devices/e1000.dev
usr/drivers/e1000/e1000n_hwinit.c

index a5cbc81..9e6cb63 100644 (file)
@@ -490,7 +490,13 @@ device e1000 lsbfirst ( addr base ) "Intel e1000 Gigabit Ethernet" {
 
   // 13.3.32
   register iam rw addr(base, 0x00e0) "Interrupt ack auto mask" type(intreg);
-  
+
+  regarray eitr addr(base, 0x1680)[9;0x4] "Extended Interrupt Throttle" {
+    _         2 mbz;
+    interval 13 "Interval";
+    _         1 mbz;
+    counter  16 "Down counter";
+  };
 
   /************************************
    * Receive registers
index 13f99de..c85a80a 100644 (file)
@@ -820,7 +820,12 @@ void e1000_hwinit(e1000_device_t *dev, struct device_mem *bar_info,
      * The optimal performance setting for this register is very system and
      * configuration specific. A initial suggested range is 651-5580 (28Bh - 15CCh).
      */
-    e1000_itr_interval_wrf(dev->device, 5580);
+    if (dev->mac_type == e1000_82575 || dev->mac_type == e1000_82576) {
+        e1000_eitr_interval_wrf(dev->device, 0, 5580);
+    }  
+    else {
+        e1000_itr_interval_wrf(dev->device, 5580);
+    }
 
     /* Enable interrupts */
     if (use_interrupt) {