summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatheos Worku <Matheos.Worku@Sun.COM>2008-02-20 09:18:09 +0100
committerDavid S. Miller <davem@davemloft.net>2008-02-20 09:18:09 +0100
commitfa907895b7b776208a1406efe5ba7ffe0f49f507 (patch)
tree5f5665b64c007f40e89f47027bae080de69b0d7d
parent[NETFILTER]: Use __u32 in struct nf_inet_addr (diff)
downloadlinux-fa907895b7b776208a1406efe5ba7ffe0f49f507.tar.xz
linux-fa907895b7b776208a1406efe5ba7ffe0f49f507.zip
[NIU]: More BMAC alt MAC address fixes.
From: Matheos Worku <Matheos.Worku@Sun.COM> 1) niu_enable_alt_mac() needs to be adjusted so that the mask is computed properly for the BMAC case. 2) BMAC has 6 alt MAC addresses available, not 7. Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/niu.c9
-rw-r--r--drivers/net/niu.h2
2 files changed, 6 insertions, 5 deletions
diff --git a/drivers/net/niu.c b/drivers/net/niu.c
index e98ce1e4965b..d11ba61baa4f 100644
--- a/drivers/net/niu.c
+++ b/drivers/net/niu.c
@@ -1616,12 +1616,13 @@ static int niu_enable_alt_mac(struct niu *np, int index, int on)
if (index >= niu_num_alt_addr(np))
return -EINVAL;
- if (np->flags & NIU_FLAGS_XMAC)
+ if (np->flags & NIU_FLAGS_XMAC) {
reg = XMAC_ADDR_CMPEN;
- else
+ mask = 1 << index;
+ } else {
reg = BMAC_ADDR_CMPEN;
-
- mask = 1 << index;
+ mask = 1 << (index + 1);
+ }
val = nr64_mac(reg);
if (on)
diff --git a/drivers/net/niu.h b/drivers/net/niu.h
index 0e8626adc573..59dc05fcd371 100644
--- a/drivers/net/niu.h
+++ b/drivers/net/niu.h
@@ -499,7 +499,7 @@
#define BMAC_ADDR2 0x00110UL
#define BMAC_ADDR2_ADDR2 0x000000000000ffffULL
-#define BMAC_NUM_ALT_ADDR 7
+#define BMAC_NUM_ALT_ADDR 6
#define BMAC_ALT_ADDR0(NUM) (0x00118UL + (NUM)*0x18UL)
#define BMAC_ALT_ADDR0_ADDR0 0x000000000000ffffULL