aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/chelsio/pm3393.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/chelsio/pm3393.c')
-rw-r--r--drivers/net/chelsio/pm3393.c23
1 files changed, 13 insertions, 10 deletions
diff --git a/drivers/net/chelsio/pm3393.c b/drivers/net/chelsio/pm3393.c
index 2117c4fbb107..9e631b9d3948 100644
--- a/drivers/net/chelsio/pm3393.c
+++ b/drivers/net/chelsio/pm3393.c
@@ -44,6 +44,7 @@
44#include "suni1x10gexp_regs.h" 44#include "suni1x10gexp_regs.h"
45 45
46#include <linux/crc32.h> 46#include <linux/crc32.h>
47#include <linux/slab.h>
47 48
48#define OFFSET(REG_ADDR) ((REG_ADDR) << 2) 49#define OFFSET(REG_ADDR) ((REG_ADDR) << 2)
49 50
@@ -251,8 +252,9 @@ static int pm3393_interrupt_handler(struct cmac *cmac)
251 /* Read the master interrupt status register. */ 252 /* Read the master interrupt status register. */
252 pmread(cmac, SUNI1x10GEXP_REG_MASTER_INTERRUPT_STATUS, 253 pmread(cmac, SUNI1x10GEXP_REG_MASTER_INTERRUPT_STATUS,
253 &master_intr_status); 254 &master_intr_status);
254 CH_DBG(cmac->adapter, INTR, "PM3393 intr cause 0x%x\n", 255 if (netif_msg_intr(cmac->adapter))
255 master_intr_status); 256 dev_dbg(&cmac->adapter->pdev->dev, "PM3393 intr cause 0x%x\n",
257 master_intr_status);
256 258
257 /* TBD XXX Lets just clear everything for now */ 259 /* TBD XXX Lets just clear everything for now */
258 pm3393_interrupt_clear(cmac); 260 pm3393_interrupt_clear(cmac);
@@ -375,12 +377,12 @@ static int pm3393_set_rx_mode(struct cmac *cmac, struct t1_rx_mode *rm)
375 rx_mode |= SUNI1x10GEXP_BITMSK_RXXG_MHASH_EN; 377 rx_mode |= SUNI1x10GEXP_BITMSK_RXXG_MHASH_EN;
376 } else if (t1_rx_mode_mc_cnt(rm)) { 378 } else if (t1_rx_mode_mc_cnt(rm)) {
377 /* Accept one or more multicast(s). */ 379 /* Accept one or more multicast(s). */
378 u8 *addr; 380 struct dev_mc_list *dmi;
379 int bit; 381 int bit;
380 u16 mc_filter[4] = { 0, }; 382 u16 mc_filter[4] = { 0, };
381 383
382 while ((addr = t1_get_next_mcaddr(rm))) { 384 netdev_for_each_mc_addr(dmi, t1_get_netdev(rm)) {
383 bit = (ether_crc(ETH_ALEN, addr) >> 23) & 0x3f; /* bit[23:28] */ 385 bit = (ether_crc(ETH_ALEN, dmi->dmi_addr) >> 23) & 0x3f; /* bit[23:28] */
384 mc_filter[bit >> 4] |= 1 << (bit & 0xf); 386 mc_filter[bit >> 4] |= 1 << (bit & 0xf);
385 } 387 }
386 pmwrite(cmac, SUNI1x10GEXP_REG_RXXG_MULTICAST_HASH_LOW, mc_filter[0]); 388 pmwrite(cmac, SUNI1x10GEXP_REG_RXXG_MULTICAST_HASH_LOW, mc_filter[0]);
@@ -776,11 +778,12 @@ static int pm3393_mac_reset(adapter_t * adapter)
776 successful_reset = (is_pl4_reset_finished && !is_pl4_outof_lock 778 successful_reset = (is_pl4_reset_finished && !is_pl4_outof_lock
777 && is_xaui_mabc_pll_locked); 779 && is_xaui_mabc_pll_locked);
778 780
779 CH_DBG(adapter, HW, 781 if (netif_msg_hw(adapter))
780 "PM3393 HW reset %d: pl4_reset 0x%x, val 0x%x, " 782 dev_dbg(&adapter->pdev->dev,
781 "is_pl4_outof_lock 0x%x, xaui_locked 0x%x\n", 783 "PM3393 HW reset %d: pl4_reset 0x%x, val 0x%x, "
782 i, is_pl4_reset_finished, val, is_pl4_outof_lock, 784 "is_pl4_outof_lock 0x%x, xaui_locked 0x%x\n",
783 is_xaui_mabc_pll_locked); 785 i, is_pl4_reset_finished, val,
786 is_pl4_outof_lock, is_xaui_mabc_pll_locked);
784 } 787 }
785 return successful_reset ? 0 : 1; 788 return successful_reset ? 0 : 1;
786} 789}