[NIU]: More BMAC alt MAC address fixes.
authorMatheos Worku <Matheos.Worku@Sun.COM>
Wed, 20 Feb 2008 08:18:09 +0000 (00:18 -0800)
committerDavid S. Miller <davem@davemloft.net>
Wed, 20 Feb 2008 08:18:09 +0000 (00:18 -0800)
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>
drivers/net/niu.c
drivers/net/niu.h

index e98ce1e..d11ba61 100644 (file)
@@ -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)
index 0e8626a..59dc05f 100644 (file)
 #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