The sis 900 only works if promiscuous mode is set. Notes: Thu Feb 16 09:20:58 EST 2006 rsc I am skeptical about this. Do other drivers for the sis900 take this step? Surely there's just something we're not initializing right. Reference: /n/sources/patch/sorry/sis900-hack Date: Wed Feb 15 13:34:02 CET 2006 Reviewed-by: rsc --- /sys/src/9/pc/ether83815.c Wed Feb 15 13:32:17 2006 +++ /sys/src/9/pc/ether83815.c Wed Feb 15 13:32:10 2006 @@ -81,7 +81,7 @@ enum { /* Variants */ Nat83815 = (0x0020<<16)|0x100B, - Sis900 = (0x0630<<16)|0x1039, /* untested */ + Sis900 = (0x0900<<16)|0x1039, /* untested */ }; typedef struct Ctlr Ctlr; @@ -301,6 +301,7 @@ Ctlr *ctlr; ulong w; + debug("promiscuous: %s\n", on ? "on" : "of"); ctlr = ((Ether*)arg)->ctlr; ilock(&ctlr->lock); w = csr32r(ctlr, Rrfcr); @@ -971,6 +972,12 @@ ctlr->ntdr = Ntde; pcisetbme(ctlr->pcidev); ctlrinit(ether); + + /* + * The sis 900 only works in promiscuous mode. + */ + if(ctlr->id == Sis900) + promiscuous(ether, 1); /* * Linkage to the generic ethernet driver.