aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/freescale
diff options
context:
space:
mode:
authorChristoph Müllner <christoph.muellner@theobroma-systems.com>2013-06-27 15:18:23 -0400
committerDavid S. Miller <davem@davemloft.net>2013-07-01 16:29:26 -0400
commit772e42b07fbdc650206746e00cb2914e362594a3 (patch)
tree1060cd815ee6462cb27a8b8edba1c226fb4bbcf4 /drivers/net/ethernet/freescale
parent52bd4c0c1551daa2efa7bb9e01a2f4ea6d1311bb (diff)
net: fec: Fix multicast list setup in fec_restart().
Setup the multicast list of the net_device instead of clearing it blindly. This restores the multicast groups in case of a link down/up event or when resuming from suspend. Signed-off-by: Christoph Muellner <christoph.muellner@theobroma-systems.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/freescale')
-rw-r--r--drivers/net/ethernet/freescale/fec_main.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/drivers/net/ethernet/freescale/fec_main.c b/drivers/net/ethernet/freescale/fec_main.c
index ed6180e7db2f..5664acd8e0f4 100644
--- a/drivers/net/ethernet/freescale/fec_main.c
+++ b/drivers/net/ethernet/freescale/fec_main.c
@@ -59,6 +59,8 @@
59 59
60#include "fec.h" 60#include "fec.h"
61 61
62static void set_multicast_list(struct net_device *ndev);
63
62#if defined(CONFIG_ARM) 64#if defined(CONFIG_ARM)
63#define FEC_ALIGNMENT 0xf 65#define FEC_ALIGNMENT 0xf
64#else 66#else
@@ -470,9 +472,8 @@ fec_restart(struct net_device *ndev, int duplex)
470 /* Clear any outstanding interrupt. */ 472 /* Clear any outstanding interrupt. */
471 writel(0xffc00000, fep->hwp + FEC_IEVENT); 473 writel(0xffc00000, fep->hwp + FEC_IEVENT);
472 474
473 /* Reset all multicast. */ 475 /* Setup multicast filter. */
474 writel(0, fep->hwp + FEC_GRP_HASH_TABLE_HIGH); 476 set_multicast_list(ndev);
475 writel(0, fep->hwp + FEC_GRP_HASH_TABLE_LOW);
476#ifndef CONFIG_M5272 477#ifndef CONFIG_M5272
477 writel(0, fep->hwp + FEC_HASH_TABLE_HIGH); 478 writel(0, fep->hwp + FEC_HASH_TABLE_HIGH);
478 writel(0, fep->hwp + FEC_HASH_TABLE_LOW); 479 writel(0, fep->hwp + FEC_HASH_TABLE_LOW);