summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys/pci/if_ste.c12
-rw-r--r--sys/pci/if_stereg.h4
2 files changed, 11 insertions, 5 deletions
diff --git a/sys/pci/if_ste.c b/sys/pci/if_ste.c
index 2458c44..b68ccdd 100644
--- a/sys/pci/if_ste.c
+++ b/sys/pci/if_ste.c
@@ -583,8 +583,10 @@ static void ste_setmulti(sc)
}
/* first, zot all the existing hash bits */
- CSR_WRITE_4(sc, STE_MAR0, 0);
- CSR_WRITE_4(sc, STE_MAR1, 0);
+ CSR_WRITE_2(sc, STE_MAR0, 0);
+ CSR_WRITE_2(sc, STE_MAR1, 0);
+ CSR_WRITE_2(sc, STE_MAR2, 0);
+ CSR_WRITE_2(sc, STE_MAR3, 0);
/* now program new ones */
TAILQ_FOREACH(ifma, &ifp->if_multiaddrs, ifma_link) {
@@ -597,8 +599,10 @@ static void ste_setmulti(sc)
hashes[1] |= (1 << (h - 32));
}
- CSR_WRITE_4(sc, STE_MAR0, hashes[0]);
- CSR_WRITE_4(sc, STE_MAR1, hashes[1]);
+ CSR_WRITE_2(sc, STE_MAR0, hashes[0] & 0xFFFF);
+ CSR_WRITE_2(sc, STE_MAR1, (hashes[0] >> 16) & 0xFFFF);
+ CSR_WRITE_2(sc, STE_MAR2, hashes[1] & 0xFFFF);
+ CSR_WRITE_2(sc, STE_MAR3, (hashes[1] >> 16) & 0xFFFF);
STE_CLRBIT1(sc, STE_RX_MODE, STE_RXMODE_ALLMULTI);
STE_SETBIT1(sc, STE_RX_MODE, STE_RXMODE_MULTIHASH);
diff --git a/sys/pci/if_stereg.h b/sys/pci/if_stereg.h
index 6081ec0..b369d6d 100644
--- a/sys/pci/if_stereg.h
+++ b/sys/pci/if_stereg.h
@@ -88,7 +88,9 @@
#define STE_TX_RECLAIM_THRESH 0x5D
#define STE_PHYCTL 0x5E
#define STE_MAR0 0x60
-#define STE_MAR1 0x64
+#define STE_MAR1 0x62
+#define STE_MAR2 0x64
+#define STE_MAR3 0x66
#define STE_STATS 0x68
#define STE_DMACTL_RXDMA_STOPPED 0x00000001
OpenPOWER on IntegriCloud