Skip the shitty e1000s on c89
authorBarret Rhoden <brho@cs.berkeley.edu>
Sat, 29 Mar 2014 01:54:41 +0000 (18:54 -0700)
committerBarret Rhoden <brho@cs.berkeley.edu>
Sat, 29 Mar 2014 01:54:41 +0000 (18:54 -0700)
The e1000s don't work with MSI.  One doesn't support it, and the other
flips out when MSI is used.  Those happen to be NICs l0 and l1.  Could
be more robust and fallback to l0 or something, etc.

kern/arch/x86/ioapic.c
kern/kfs/ifconfig

index ea31140..2509619 100644 (file)
@@ -395,7 +395,7 @@ static int msi_irq_enable(struct irq_handler *irq_h, struct pci_device *p)
        irq_h->unmask = msi_unmask_irq;
        irq_h->route_irq = msi_route_irq;
        irq_h->type = "msi";
        irq_h->unmask = msi_unmask_irq;
        irq_h->route_irq = msi_route_irq;
        irq_h->type = "msi";
-       printd("msiirq: (%d,%d,%d): enabling %.16llp %s irq %d vno %d\n",
+       printk("msiirq: (%d,%d,%d): enabling %.16llp %s irq %d vno %d\n",
               p->bus, p->dev, p->func, msivec,
                   irq_h->name, irq_h->apic_vector, vno);
        return vno;
               p->bus, p->dev, p->func, msivec,
                   irq_h->name, irq_h->apic_vector, vno);
        return vno;
index 0bee91a..ab9d446 100755 (executable)
@@ -22,6 +22,7 @@ export rootdir=/root
 export rootspec=''
 export rootsrv=boot
 
 export rootspec=''
 export rootsrv=boot
 
+NIC="0"
 #authentication='nvram=/boot/adm/nvram auth/factotum -sfactotum -S'      # -a ...
 # test xyzip=(0 0 0 104.9.33)
 # test fsaddr='tcp!135.$xyzip(4)^!564'
 #authentication='nvram=/boot/adm/nvram auth/factotum -sfactotum -S'      # -a ...
 # test xyzip=(0 0 0 104.9.33)
 # test fsaddr='tcp!135.$xyzip(4)^!564'
@@ -47,6 +48,8 @@ then
        mask=255.255.255.0
        remote=169.229.49.0
        route=169.229.49.1
        mask=255.255.255.0
        remote=169.229.49.0
        route=169.229.49.1
+       # skip the shitty e1000s
+       NIC="2"
 fi
 
 if [ "x$MACHINE" = "xhossin" ]
 fi
 
 if [ "x$MACHINE" = "xhossin" ]
@@ -81,13 +84,13 @@ bind -b '#s' /srv
 # Configure the networks.
 #
 bind -a '#I' /net
 # Configure the networks.
 #
 bind -a '#I' /net
-bind -a '#l0' /net
+bind -a \#l$NIC /net
 
 # note: dhcp is possible, just not done yet.
 #get an instance of a network stack
 i=`cat /net/ipifc/clone`
 # bind the ether0 to it
 
 # note: dhcp is possible, just not done yet.
 #get an instance of a network stack
 i=`cat /net/ipifc/clone`
 # bind the ether0 to it
-echo "bind ether /net/ether0 " > /net/ipifc/$i/ctl
+echo "bind ether /net/ether$NIC " > /net/ipifc/$i/ctl
 # ifconfig it
 echo "add $me $mask $remote" > /net/ipifc/$i/ctl
 echo "add 0 0 $route" > /net/iproute
 # ifconfig it
 echo "add $me $mask $remote" > /net/ipifc/$i/ctl
 echo "add 0 0 $route" > /net/iproute