summaryrefslogtreecommitdiff
path: root/drivers/net/tsec.c
diff options
context:
space:
mode:
authorClaudiu Manoil <claudiu.manoil@freescale.com>2013-09-30 12:44:41 +0300
committerJoe Hershberger <joe.hershberger@ni.com>2013-11-22 17:02:56 -0600
commitb200204e8e2a2eee081d576ed578d87b75813b46 (patch)
tree61d09fb401cd731838b5aa507c312b651ecc78a3 /drivers/net/tsec.c
parent876d4515e38dfcec4346968caf6a0c9c8176ea0b (diff)
downloadu-boot-imx-b200204e8e2a2eee081d576ed578d87b75813b46.zip
u-boot-imx-b200204e8e2a2eee081d576ed578d87b75813b46.tar.gz
u-boot-imx-b200204e8e2a2eee081d576ed578d87b75813b46.tar.bz2
net: tsec: Fix priv pointer in tsec_mcast_addr()
Access to privlist[1] (hardcoded referece to the 2nd tsec's priv area) is neither correct nor does it make sense in the current context. Each tsec dev has access to its own priv instance only, and hence to its own set of group address registers (GADDR) to filter multicast addresses. This fix leads to removal of the unused (faulty) privlist[] and related global static vars. Note that mcast() can be called only after eth_device allocation and init, and hence after priv area allocation, so dev->priv is correctly initialized upon mcast() call. Signed-off-by: Claudiu Manoil <claudiu.manoil@freescale.com> Patch: 278990
Diffstat (limited to 'drivers/net/tsec.c')
-rw-r--r--drivers/net/tsec.c8
1 files changed, 1 insertions, 7 deletions
diff --git a/drivers/net/tsec.c b/drivers/net/tsec.c
index 9ffc801..9371ffa 100644
--- a/drivers/net/tsec.c
+++ b/drivers/net/tsec.c
@@ -33,11 +33,6 @@ typedef volatile struct rtxbd {
rxbd8_t rxbd[PKTBUFSRX];
} RTXBD;
-#define MAXCONTROLLERS (8)
-
-static struct tsec_private *privlist[MAXCONTROLLERS];
-static int num_tsecs = 0;
-
#ifdef __GNUC__
static RTXBD rtx __attribute__ ((aligned(8)));
#else
@@ -122,7 +117,7 @@ static void tsec_configure_serdes(struct tsec_private *priv)
static int
tsec_mcast_addr(struct eth_device *dev, const u8 *mcast_mac, u8 set)
{
- struct tsec_private *priv = privlist[1];
+ struct tsec_private *priv = (struct tsec_private *)dev->priv;
struct tsec __iomem *regs = priv->regs;
u32 result, value;
u8 whichbit, whichreg;
@@ -625,7 +620,6 @@ static int tsec_initialize(bd_t *bis, struct tsec_info_struct *tsec_info)
if (NULL == priv)
return 0;
- privlist[num_tsecs++] = priv;
priv->regs = tsec_info->regs;
priv->phyregs_sgmii = tsec_info->miiregs_sgmii;