diff options
| author | Robert Richter <robert.richter@amd.com> | 2010-06-04 11:33:10 +0200 |
|---|---|---|
| committer | Robert Richter <robert.richter@amd.com> | 2010-06-04 11:33:10 +0200 |
| commit | d8a382d2662822248a97ce9d670b90e68aefbd3a (patch) | |
| tree | 4f5bbd5d0a5881ed42de611402ea4ac2c6d6ff48 /drivers/net/phy/phy_device.c | |
| parent | 45c34e05c4e3d36e7c44e790241ea11a1d90d54e (diff) | |
| parent | c6df8d5ab87a246942d138321e1721edbb69f6e1 (diff) | |
| download | linux-next-d8a382d2662822248a97ce9d670b90e68aefbd3a.tar.gz linux-next-d8a382d2662822248a97ce9d670b90e68aefbd3a.zip | |
Merge remote branch 'tip/perf/urgent' into oprofile/urgent
Diffstat (limited to 'drivers/net/phy/phy_device.c')
| -rw-r--r-- | drivers/net/phy/phy_device.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c index db1794546c56..1a99bb244106 100644 --- a/drivers/net/phy/phy_device.c +++ b/drivers/net/phy/phy_device.c @@ -149,6 +149,7 @@ EXPORT_SYMBOL(phy_scan_fixups); struct phy_device* phy_device_create(struct mii_bus *bus, int addr, int phy_id) { struct phy_device *dev; + /* We allocate the device, and initialize the * default values */ dev = kzalloc(sizeof(*dev), GFP_KERNEL); @@ -179,6 +180,17 @@ struct phy_device* phy_device_create(struct mii_bus *bus, int addr, int phy_id) mutex_init(&dev->lock); INIT_DELAYED_WORK(&dev->state_queue, phy_state_machine); + /* Request the appropriate module unconditionally; don't + bother trying to do so only if it isn't already loaded, + because that gets complicated. A hotplug event would have + done an unconditional modprobe anyway. + We don't do normal hotplug because it won't work for MDIO + -- because it relies on the device staying around for long + enough for the driver to get loaded. With MDIO, the NIC + driver will get bored and give up as soon as it finds that + there's no driver _already_ loaded. */ + request_module(MDIO_MODULE_PREFIX MDIO_ID_FMT, MDIO_ID_ARGS(phy_id)); + return dev; } EXPORT_SYMBOL(phy_device_create); |
