ここのサイトによると、 LinuxKernel3.8から、ドライバー挙動の一部が変更になったようだ。
自力でパッチを作ってみた。
diff --git a/os/linux/pci_main_dev.c b/os/linux/pci_main_dev.c
index 8031615..8f5a2e1 100644
--- a/os/linux/pci_main_dev.c
+++ b/os/linux/pci_main_dev.c
@@ -39,8 +39,13 @@
/*extern int rt28xx_close(IN struct net_device *net_dev); */
/*extern int rt28xx_open(struct net_device *net_dev); */
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,8,0)
static VOID __devexit rt2860_remove_one(struct pci_dev *pci_dev);
static INT __devinit rt2860_probe(struct pci_dev *pci_dev, const struct pci_device_id *ent);
+#else
+static VOID rt2860_remove_one(struct pci_dev *pci_dev);
+static INT rt2860_probe(struct pci_dev *pci_dev, const struct pci_device_id *ent);
+#endif
static void __exit rt2860_cleanup_module(void);
static int __init rt2860_init_module(void);
@@ -59,7 +64,11 @@ static int rt2860_resume(struct pci_dev *pci_dev);
/* */
/* Ralink PCI device table, include all supported chipsets */
/* */
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,8,0)
static struct pci_device_id rt2860_pci_tbl[] __devinitdata =
+#else
+static struct pci_device_id rt2860_pci_tbl[] =
+#endif
{
#ifdef RT3090
{PCI_DEVICE(NIC_PCI_VENDOR_ID, NIC3090_PCIe_DEVICE_ID)},
@@ -94,7 +103,9 @@ static struct pci_driver rt2860_driver =
name: RTMP_DRV_NAME,
id_table: rt2860_pci_tbl,
probe: rt2860_probe,
-#if LINUX_VERSION_CODE >= 0x20412
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,8,0)
+ remove: rt2860_remove_one,
+#elif LINUX_VERSION_CODE >= 0x20412
remove: __devexit_p(rt2860_remove_one),
#else
remove: __devexit(rt2860_remove_one),
@@ -299,7 +310,11 @@ module_exit(rt2860_cleanup_module);
/* */
/* PCI device probe & initialization function */
/* */
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,8,0)
static INT __devinit rt2860_probe(
+#else
+static INT rt2860_probe(
+#endif
IN struct pci_dev *pci_dev,
IN const struct pci_device_id *pci_id)
{
@@ -470,7 +485,11 @@ err_out:
}
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,8,0)
static VOID __devexit rt2860_remove_one(
+#else
+static VOID rt2860_remove_one(
+#endif
IN struct pci_dev *pci_dev)
{
PNET_DEV net_dev = pci_get_drvdata(pci_dev);