summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorQuinn Jensen <quinn.jensen@freescale.com>2007-10-24 21:26:44 -0600
committerQuinn Jensen <quinn.jensen@freescale.com>2007-10-24 21:26:44 -0600
commit23c0a9c5dd350701e0ef3f428d37da4130f382ce (patch)
treeba58962ca2e6a72356f3bb2f73336898aea15079
parentc8ebc96d995f386afea6e24766153c199b1a8ca8 (diff)
CR ENGR00052918 fec 2.6.22 workqueue changes
Patch for CR ENGR00052918: This patch updates the FEC ethernet with workqueue changes for the linux 2.6.22 kernel. Applies to MX27 platform. http://www.bitshrine.org/gpp/linux-2.6.22-mx-CR-ENGR00052918-fec-2.6.22-workqueue-chang.patch
-rw-r--r--drivers/net/fec.c21
1 files changed, 14 insertions, 7 deletions
diff --git a/drivers/net/fec.c b/drivers/net/fec.c
index 91e0a740e640..938426953149 100644
--- a/drivers/net/fec.c
+++ b/drivers/net/fec.c
@@ -236,6 +236,7 @@ struct fec_enet_private {
uint phy_speed;
phy_info_t const *phy;
struct work_struct phy_task;
+ struct net_device *net;
uint sequence_done;
uint mii_phy_task_queued;
@@ -2360,9 +2361,11 @@ static void mii_display_status(struct net_device *dev)
printk(".\n");
}
-static void mii_display_config(struct net_device *dev)
+static void mii_display_config(struct work_struct *work)
{
- struct fec_enet_private *fep = netdev_priv(dev);
+ struct fec_enet_private *fep =
+ container_of(work, struct fec_enet_private, phy_task);
+ struct net_device *dev = fep->net;
uint status = fep->phy_status;
/*
@@ -2396,9 +2399,11 @@ static void mii_display_config(struct net_device *dev)
fep->sequence_done = 1;
}
-static void mii_relink(struct net_device *dev)
+static void mii_relink(struct work_struct *work)
{
- struct fec_enet_private *fep = netdev_priv(dev);
+ struct fec_enet_private *fep =
+ container_of(work, struct fec_enet_private, phy_task);
+ struct net_device *dev = fep->net;
int duplex;
/*
@@ -2442,7 +2447,7 @@ static void mii_queue_relink(uint mii_reg, struct net_device *dev)
return;
fep->mii_phy_task_queued = 1;
- INIT_WORK(&fep->phy_task, (void*)mii_relink, dev);
+ INIT_WORK(&fep->phy_task, (void*)mii_relink);
schedule_work(&fep->phy_task);
}
@@ -2455,7 +2460,7 @@ static void mii_queue_config(uint mii_reg, struct net_device *dev)
return;
fep->mii_phy_task_queued = 1;
- INIT_WORK(&fep->phy_task, (void*)mii_display_config, dev);
+ INIT_WORK(&fep->phy_task, (void*)mii_display_config);
schedule_work(&fep->phy_task);
}
@@ -2739,7 +2744,9 @@ int __init fec_enet_init(struct net_device *dev)
/* Only allow us to be probed once. */
if (index >= FEC_MAX_PORTS)
return -ENXIO;
-
+
+ fep->net = dev;
+
spin_lock_init(&(fep->lock));
/* Allocate memory for buffer descriptors.