aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoachim Eastwood <manabian@gmail.com>2012-11-11 08:56:28 -0500
committerDavid S. Miller <davem@davemloft.net>2012-11-14 18:51:03 -0500
commit3629a6cebcdcfe16f3dbbffcaab25583285a7125 (patch)
tree3b9a312a6c9919e5f1fd0305a0f09aec1a9d8108
parent2dbfdbb912c4b53f022649a7affb0691da1e9bc4 (diff)
net/macb: clear unused address register
Only the first register set is used for matching but we support getting the initial hw addr from any of the registers. To prevent stale entries and false matches clear unused register sets. This most important for the at91_ether driver where u-boot always uses the 2nd register set. Signed-off-by: Joachim Eastwood <manabian@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/ethernet/cadence/macb.c8
-rw-r--r--drivers/net/ethernet/cadence/macb.h6
2 files changed, 14 insertions, 0 deletions
diff --git a/drivers/net/ethernet/cadence/macb.c b/drivers/net/ethernet/cadence/macb.c
index ca34efc62ba..edb2aba9045 100644
--- a/drivers/net/ethernet/cadence/macb.c
+++ b/drivers/net/ethernet/cadence/macb.c
@@ -108,6 +108,14 @@ void macb_set_hwaddr(struct macb *bp)
108 macb_or_gem_writel(bp, SA1B, bottom); 108 macb_or_gem_writel(bp, SA1B, bottom);
109 top = cpu_to_le16(*((u16 *)(bp->dev->dev_addr + 4))); 109 top = cpu_to_le16(*((u16 *)(bp->dev->dev_addr + 4)));
110 macb_or_gem_writel(bp, SA1T, top); 110 macb_or_gem_writel(bp, SA1T, top);
111
112 /* Clear unused address register sets */
113 macb_or_gem_writel(bp, SA2B, 0);
114 macb_or_gem_writel(bp, SA2T, 0);
115 macb_or_gem_writel(bp, SA3B, 0);
116 macb_or_gem_writel(bp, SA3T, 0);
117 macb_or_gem_writel(bp, SA4B, 0);
118 macb_or_gem_writel(bp, SA4T, 0);
111} 119}
112EXPORT_SYMBOL_GPL(macb_set_hwaddr); 120EXPORT_SYMBOL_GPL(macb_set_hwaddr);
113 121
diff --git a/drivers/net/ethernet/cadence/macb.h b/drivers/net/ethernet/cadence/macb.h
index 864e38042b2..44144218dd3 100644
--- a/drivers/net/ethernet/cadence/macb.h
+++ b/drivers/net/ethernet/cadence/macb.h
@@ -74,6 +74,12 @@
74#define GEM_HRT 0x0084 74#define GEM_HRT 0x0084
75#define GEM_SA1B 0x0088 75#define GEM_SA1B 0x0088
76#define GEM_SA1T 0x008C 76#define GEM_SA1T 0x008C
77#define GEM_SA2B 0x0090
78#define GEM_SA2T 0x0094
79#define GEM_SA3B 0x0098
80#define GEM_SA3T 0x009C
81#define GEM_SA4B 0x00A0
82#define GEM_SA4T 0x00A4
77#define GEM_OTX 0x0100 83#define GEM_OTX 0x0100
78#define GEM_DCFG1 0x0280 84#define GEM_DCFG1 0x0280
79#define GEM_DCFG2 0x0284 85#define GEM_DCFG2 0x0284