>
> > Any chance that anyone is thinking of adding hot-plug support
> > to the pcnet32 driver?
>
> You want to give me a hotplug machine ? :-)
>
> Best regards,
> Helge
> -
> To unsubscribe from this list: send the line "unsubscribe linux-net" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
>
Here is a repeat of a patch to enable PCI Hot Plug for pcnet32.
--- linux-2.6.0/drivers/net/pcnet32.c Wed Dec 10 10:43:25 2003
+++ linux-2.6.0p/drivers/net/pcnet32.c Wed Dec 10 14:59:40 2003
@@ -806,8 +806,12 @@
dev->tx_timeout = pcnet32_tx_timeout;
dev->watchdog_timeo = (5*HZ);
- lp->next = pcnet32_dev;
- pcnet32_dev = dev;
+ if (pdev)
+ pci_set_drvdata(pdev, dev);
+ else {
+ lp->next = pcnet32_dev;
+ pcnet32_dev = dev;
+ }
/* Fill in the generic fields of the device structure. */
register_netdev(dev);
@@ -1703,9 +1707,25 @@
mod_timer (&(lp->watchdog_timer), PCNET32_WATCHDOG_TIMEOUT);
}
+static void __devexit pcnet32_remove_one(struct pci_dev *pdev)
+{
+ struct net_device *dev = pci_get_drvdata(pdev);
+
+ if (dev) {
+ struct pcnet32_private *lp = dev->priv;
+
+ unregister_netdev(dev);
+ release_region(dev->base_addr, PCNET32_TOTAL_SIZE);
+ pci_free_consistent(lp->pci_dev, sizeof(*lp), lp, lp->dma_addr);
+ free_netdev(dev);
+ pci_set_drvdata(pdev, NULL);
+ }
+}
+
static struct pci_driver pcnet32_driver = {
.name = DRV_NAME,
.probe = pcnet32_probe_pci,
+ .remove = __devexit_p(pcnet32_remove_one),
.id_table = pcnet32_pci_tbl,
};
--
Don Fry
brazilnut@xxxxxxxxxx
|