mirror of https://github.com/hak5/openwrt-owl.git
parent
20da5f495f
commit
00e8846c96
|
@ -9,8 +9,8 @@ include $(TOPDIR)/rules.mk
|
|||
include $(INCLUDE_DIR)/kernel.mk
|
||||
|
||||
PKG_NAME:=acx-mac80211
|
||||
PKG_REV:=e7a55711
|
||||
PKG_VERSION:=20100302
|
||||
PKG_REV:=160e4af
|
||||
PKG_VERSION:=20100422
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
|
||||
|
|
|
@ -1,91 +0,0 @@
|
|||
--- a/acx_func.h
|
||||
+++ b/acx_func.h
|
||||
@@ -704,9 +704,9 @@ int acx_setup_modes(acx_device_t *adev);
|
||||
void acx_free_modes(acx_device_t *adev);
|
||||
int acx_i_op_tx(struct ieee80211_hw *ieee, struct sk_buff *skb);
|
||||
int acx_e_op_add_interface(struct ieee80211_hw* ieee,
|
||||
- struct ieee80211_if_init_conf *conf);
|
||||
+ struct ieee80211_vif *vif);
|
||||
void acx_e_op_remove_interface(struct ieee80211_hw* ieee,
|
||||
- struct ieee80211_if_init_conf *conf);
|
||||
+ struct ieee80211_vif *vif);
|
||||
int acx_net_reset(struct ieee80211_hw *ieee);
|
||||
int acx_e_op_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd,
|
||||
struct ieee80211_vif *vif, struct ieee80211_sta *sta,
|
||||
--- a/common.c
|
||||
+++ b/common.c
|
||||
@@ -4402,7 +4402,7 @@ static void acx_s_select_opmode(acx_devi
|
||||
}
|
||||
|
||||
int acx_e_op_add_interface(struct ieee80211_hw *ieee,
|
||||
- struct ieee80211_if_init_conf *conf)
|
||||
+ struct ieee80211_vif *vif)
|
||||
{
|
||||
acx_device_t *adev = ieee2adev(ieee);
|
||||
unsigned long flags;
|
||||
@@ -4414,14 +4414,14 @@ int acx_e_op_add_interface(struct ieee80
|
||||
acx_sem_lock(adev);
|
||||
acx_lock(adev, flags);
|
||||
|
||||
- if (conf->type == NL80211_IFTYPE_MONITOR) {
|
||||
+ if (vif->type == NL80211_IFTYPE_MONITOR) {
|
||||
adev->interface.monitor++;
|
||||
} else {
|
||||
if (adev->interface.operating)
|
||||
goto out_unlock;
|
||||
adev->interface.operating = 1;
|
||||
- adev->interface.mac_addr = conf->mac_addr;
|
||||
- adev->interface.type = conf->type;
|
||||
+ adev->interface.mac_addr = vif->addr;
|
||||
+ adev->interface.type = vif->type;
|
||||
}
|
||||
// adev->mode = conf->type;
|
||||
|
||||
@@ -4436,8 +4436,8 @@ int acx_e_op_add_interface(struct ieee80
|
||||
|
||||
printk(KERN_INFO "acx: Virtual interface added "
|
||||
"(type: 0x%08X, MAC: %s)\n",
|
||||
- conf->type,
|
||||
- acx_print_mac(mac, conf->mac_addr));
|
||||
+ vif->type,
|
||||
+ acx_print_mac(mac, vif->addr));
|
||||
|
||||
out_unlock:
|
||||
acx_unlock(adev, flags);
|
||||
@@ -4448,7 +4448,7 @@ int acx_e_op_add_interface(struct ieee80
|
||||
}
|
||||
|
||||
void acx_e_op_remove_interface(struct ieee80211_hw *hw,
|
||||
- struct ieee80211_if_init_conf *conf)
|
||||
+ struct ieee80211_vif *vif)
|
||||
{
|
||||
acx_device_t *adev = ieee2adev(hw);
|
||||
|
||||
@@ -4457,23 +4457,23 @@ void acx_e_op_remove_interface(struct ie
|
||||
FN_ENTER;
|
||||
acx_sem_lock(adev);
|
||||
|
||||
- if (conf->type == NL80211_IFTYPE_MONITOR) {
|
||||
+ if (vif->type == NL80211_IFTYPE_MONITOR) {
|
||||
adev->interface.monitor--;
|
||||
// assert(bcm->interface.monitor >= 0);
|
||||
} else {
|
||||
adev->interface.operating = 0;
|
||||
}
|
||||
|
||||
- log(L_DEBUG, "acx: %s: interface.operating=%d, conf->type=%d\n",
|
||||
+ log(L_DEBUG, "acx: %s: interface.operating=%d, vif->type=%d\n",
|
||||
__func__,
|
||||
- adev->interface.operating, conf->type);
|
||||
+ adev->interface.operating, vif->type);
|
||||
|
||||
if (adev->initialized)
|
||||
acx_s_select_opmode(adev);
|
||||
|
||||
log(L_ANY, "acx: Virtual interface removed: "
|
||||
"type=%d, MAC=%s\n",
|
||||
- conf->type, acx_print_mac(mac, conf->mac_addr));
|
||||
+ vif->type, acx_print_mac(mac, vif->addr));
|
||||
|
||||
acx_sem_unlock(adev);
|
||||
|
|
@ -1,67 +0,0 @@
|
|||
--- a/acx_func.h
|
||||
+++ b/acx_func.h
|
||||
@@ -714,7 +714,6 @@ int acx_e_op_set_key(struct ieee80211_hw
|
||||
int acx_e_op_config(struct ieee80211_hw *hw, u32 changed);
|
||||
void acx_e_op_bss_info_changed(struct ieee80211_hw *hw,
|
||||
struct ieee80211_vif *vif, struct ieee80211_bss_conf *info, u32 changed);
|
||||
-int acx_e_op_get_tx_stats(struct ieee80211_hw* ieee, struct ieee80211_tx_queue_stats *stats);
|
||||
int acx_e_conf_tx(struct ieee80211_hw* ieee, u16 queue,
|
||||
const struct ieee80211_tx_queue_params *params);
|
||||
//int acx_passive_scan(struct net_device *net_dev, int state, struct ieee80211_scan_conf *conf);
|
||||
--- a/common.c
|
||||
+++ b/common.c
|
||||
@@ -4662,24 +4662,6 @@ extern void acx_e_op_bss_info_changed(st
|
||||
return;
|
||||
}
|
||||
|
||||
-int acx_e_op_get_tx_stats(struct ieee80211_hw *hw,
|
||||
- struct ieee80211_tx_queue_stats *stats)
|
||||
-{
|
||||
- acx_device_t *adev = ieee2adev(hw);
|
||||
- int err = -ENODEV;
|
||||
-
|
||||
- FN_ENTER;
|
||||
- acx_sem_lock(adev);
|
||||
-
|
||||
- stats->len = 0;
|
||||
- stats->limit = TX_CNT;
|
||||
- stats->count = 0;
|
||||
-
|
||||
- acx_sem_unlock(adev);
|
||||
- FN_EXIT0;
|
||||
- return err;
|
||||
-}
|
||||
-
|
||||
int acx_e_conf_tx(struct ieee80211_hw *hw,
|
||||
u16 queue, const struct ieee80211_tx_queue_params *params)
|
||||
{
|
||||
--- a/mem.c
|
||||
+++ b/mem.c
|
||||
@@ -2321,7 +2321,6 @@ static const struct ieee80211_ops acxmem
|
||||
.bss_info_changed = acx_e_op_bss_info_changed,
|
||||
.set_key = acx_e_op_set_key,
|
||||
.get_stats = acx_e_op_get_stats,
|
||||
- .get_tx_stats = acx_e_op_get_tx_stats,
|
||||
};
|
||||
|
||||
|
||||
--- a/pci.c
|
||||
+++ b/pci.c
|
||||
@@ -1482,7 +1482,6 @@ static const struct ieee80211_ops acxpci
|
||||
.bss_info_changed = acx_e_op_bss_info_changed,
|
||||
.set_key = acx_e_op_set_key,
|
||||
.get_stats = acx_e_op_get_stats,
|
||||
- .get_tx_stats = acx_e_op_get_tx_stats,
|
||||
};
|
||||
|
||||
|
||||
--- a/usb.c
|
||||
+++ b/usb.c
|
||||
@@ -757,7 +757,6 @@ static const struct ieee80211_ops acxusb
|
||||
.bss_info_changed = acx_e_op_bss_info_changed,
|
||||
.set_key = acx_e_op_set_key,
|
||||
.get_stats = acx_e_op_get_stats,
|
||||
- .get_tx_stats = acx_e_op_get_tx_stats,
|
||||
};
|
||||
|
||||
/***********************************************************************
|
|
@ -1,47 +0,0 @@
|
|||
--- a/pci.c
|
||||
+++ b/pci.c
|
||||
@@ -4309,7 +4309,7 @@ static __devinit int vlynq_probe(struct
|
||||
addr = (u32)ioremap(vdev->mem_start, 0x1000);
|
||||
if (!addr) {
|
||||
printk(KERN_ERR "acx: %s: failed to remap io memory\n",
|
||||
- vdev->dev.bus_id);
|
||||
+ dev_name(&vdev->dev));
|
||||
result = -ENXIO;
|
||||
goto fail;
|
||||
}
|
||||
@@ -4323,7 +4323,7 @@ static __devinit int vlynq_probe(struct
|
||||
ieee = ieee80211_alloc_hw(sizeof(struct acx_device), &acxpci_hw_ops);
|
||||
if (!ieee) {
|
||||
printk("acx: could not allocate ieee80211 structure %s\n",
|
||||
- vdev->dev.bus_id);
|
||||
+ dev_name(&vdev->dev));
|
||||
goto fail_alloc_netdev;
|
||||
}
|
||||
ieee->flags &= ~IEEE80211_HW_RX_INCLUDES_FCS;
|
||||
@@ -4365,7 +4365,7 @@ static __devinit int vlynq_probe(struct
|
||||
|
||||
printk("acx: found %s-based wireless network card at %s, irq:%d, "
|
||||
"phymem:0x%x, mem:0x%p\n",
|
||||
- match->name, vdev->dev.bus_id, adev->irq,
|
||||
+ match->name, dev_name(&vdev->dev), adev->irq,
|
||||
vdev->mem_start, adev->iobase);
|
||||
log(L_ANY, "acx: the initial debug setting is 0x%04X\n", acx_debug);
|
||||
|
||||
@@ -4416,7 +4416,7 @@ static __devinit int vlynq_probe(struct
|
||||
* firmware operations happening in parallel or uninitialized data */
|
||||
|
||||
|
||||
- acx_proc_register_entries(ieee);
|
||||
+ acx_proc_register_entries(ieee, 0);
|
||||
|
||||
/* Now we have our device, so make sure the kernel doesn't try
|
||||
* to send packets even though we're not associated to a network yet */
|
||||
@@ -4536,7 +4536,7 @@ static void vlynq_remove(struct vlynq_de
|
||||
CLEAR_BIT(adev->dev_state_mask, ACX_STATE_IFACE_UP);
|
||||
}
|
||||
|
||||
- acx_proc_unregister_entries(adev->ieee);
|
||||
+ acx_proc_unregister_entries(adev->ieee, 0);
|
||||
|
||||
/* finally, clean up PCI bus state */
|
||||
acxpci_s_delete_dma_regions(adev);
|
|
@ -0,0 +1,221 @@
|
|||
Index: acx-mac80211-20100422/acx_func.h
|
||||
===================================================================
|
||||
--- acx-mac80211-20100422.orig/acx_func.h 2010-05-02 03:07:09.000000000 +0200
|
||||
+++ acx-mac80211-20100422/acx_func.h 2010-05-02 22:03:28.309677381 +0200
|
||||
@@ -214,10 +214,6 @@
|
||||
printk(args); \
|
||||
} while (0)
|
||||
|
||||
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 33)
|
||||
-#define printk_ratelimited(args...) printk(args)
|
||||
-#endif
|
||||
-
|
||||
// Log with prefix "acx: __func__
|
||||
#define logf0(chan, msg) \
|
||||
log(chan, "acx: %s: " msg, __func__);
|
||||
@@ -341,17 +337,10 @@
|
||||
// BOM Mac80211 Ops (Common)
|
||||
// -----
|
||||
|
||||
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 34)
|
||||
-int acx_e_op_add_interface(struct ieee80211_hw* ieee,
|
||||
- struct ieee80211_if_init_conf *conf);
|
||||
-void acx_e_op_remove_interface(struct ieee80211_hw* ieee,
|
||||
- struct ieee80211_if_init_conf *conf);
|
||||
-#else
|
||||
int acx_e_op_add_interface(struct ieee80211_hw* ieee,
|
||||
struct ieee80211_vif *vif);
|
||||
void acx_e_op_remove_interface(struct ieee80211_hw* ieee,
|
||||
struct ieee80211_vif *vif);
|
||||
-#endif
|
||||
|
||||
int acx_e_op_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd,
|
||||
struct ieee80211_vif *vif, struct ieee80211_sta *sta,
|
||||
@@ -366,10 +355,6 @@
|
||||
const struct ieee80211_tx_queue_params *params);
|
||||
int acx_e_op_get_stats(struct ieee80211_hw *hw, struct ieee80211_low_level_stats *stats);
|
||||
|
||||
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 34)
|
||||
-int acx_e_op_get_tx_stats(struct ieee80211_hw* ieee, struct ieee80211_tx_queue_stats *stats);
|
||||
-#endif
|
||||
-
|
||||
// BOM Helpers (Common)
|
||||
// -----
|
||||
void acx_s_mwait(int ms);
|
||||
Index: acx-mac80211-20100422/common.c
|
||||
===================================================================
|
||||
--- acx-mac80211-20100422.orig/common.c 2010-05-02 03:07:09.000000000 +0200
|
||||
+++ acx-mac80211-20100422/common.c 2010-05-02 22:04:49.597801719 +0200
|
||||
@@ -4900,13 +4900,8 @@
|
||||
* ==================================================
|
||||
*/
|
||||
|
||||
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 34)
|
||||
-int acx_e_op_add_interface(struct ieee80211_hw *ieee,
|
||||
- struct ieee80211_if_init_conf *conf)
|
||||
-#else
|
||||
int acx_e_op_add_interface(struct ieee80211_hw *ieee,
|
||||
struct ieee80211_vif *vif)
|
||||
-#endif
|
||||
{
|
||||
acx_device_t *adev = ieee2adev(ieee);
|
||||
unsigned long flags;
|
||||
@@ -4918,23 +4913,14 @@
|
||||
acx_sem_lock(adev);
|
||||
acx_lock(adev, flags);
|
||||
|
||||
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 34)
|
||||
- if (conf->type == NL80211_IFTYPE_MONITOR) {
|
||||
-#else
|
||||
if (vif->type == NL80211_IFTYPE_MONITOR) {
|
||||
-#endif
|
||||
adev->interface.monitor++;
|
||||
} else {
|
||||
if (adev->interface.operating)
|
||||
goto out_unlock;
|
||||
adev->interface.operating = 1;
|
||||
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 34)
|
||||
- adev->interface.mac_addr = conf->mac_addr;
|
||||
- adev->interface.type = conf->type;
|
||||
-#else
|
||||
adev->interface.mac_addr = vif->addr;
|
||||
adev->interface.type = vif->type;
|
||||
-#endif
|
||||
}
|
||||
// adev->mode = conf->type;
|
||||
|
||||
@@ -4949,13 +4935,8 @@
|
||||
|
||||
printk(KERN_INFO "acx: Virtual interface added "
|
||||
"(type: 0x%08X, MAC: %s)\n",
|
||||
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 34)
|
||||
- conf->type,
|
||||
- acx_print_mac(mac, conf->mac_addr)
|
||||
-#else
|
||||
vif->type,
|
||||
acx_print_mac(mac, vif->addr)
|
||||
-#endif
|
||||
);
|
||||
|
||||
out_unlock:
|
||||
@@ -4966,13 +4947,8 @@
|
||||
return err;
|
||||
}
|
||||
|
||||
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 34)
|
||||
-void acx_e_op_remove_interface(struct ieee80211_hw *hw,
|
||||
- struct ieee80211_if_init_conf *conf)
|
||||
-#else
|
||||
void acx_e_op_remove_interface(struct ieee80211_hw *hw,
|
||||
struct ieee80211_vif *vif)
|
||||
-#endif
|
||||
{
|
||||
acx_device_t *adev = ieee2adev(hw);
|
||||
|
||||
@@ -4981,37 +4957,23 @@
|
||||
FN_ENTER;
|
||||
acx_sem_lock(adev);
|
||||
|
||||
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 34)
|
||||
- if (conf->type == NL80211_IFTYPE_MONITOR) {
|
||||
-#else
|
||||
if (vif->type == NL80211_IFTYPE_MONITOR) {
|
||||
-#endif
|
||||
adev->interface.monitor--;
|
||||
// assert(bcm->interface.monitor >= 0);
|
||||
} else {
|
||||
adev->interface.operating = 0;
|
||||
}
|
||||
|
||||
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 34)
|
||||
- log(L_DEBUG, "acx: %s: interface.operating=%d, conf->type=%d\n",
|
||||
- __func__,
|
||||
- adev->interface.operating, conf->type);
|
||||
-#else
|
||||
log(L_DEBUG, "acx: %s: interface.operating=%d, vif->type=%d\n",
|
||||
__func__,
|
||||
adev->interface.operating, vif->type);
|
||||
-#endif
|
||||
|
||||
if (adev->initialized)
|
||||
acx_s_select_opmode(adev);
|
||||
|
||||
log(L_ANY, "acx: Virtual interface removed: "
|
||||
"type=%d, MAC=%s\n",
|
||||
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 34)
|
||||
- conf->type, acx_print_mac(mac, conf->mac_addr)
|
||||
-#else
|
||||
vif->type, acx_print_mac(mac, vif->addr)
|
||||
-#endif
|
||||
);
|
||||
|
||||
acx_sem_unlock(adev);
|
||||
@@ -5351,26 +5313,6 @@
|
||||
return 0;
|
||||
}
|
||||
|
||||
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 34)
|
||||
-int acx_e_op_get_tx_stats(struct ieee80211_hw *hw,
|
||||
- struct ieee80211_tx_queue_stats *stats)
|
||||
-{
|
||||
- acx_device_t *adev = ieee2adev(hw);
|
||||
- int err = -ENODEV;
|
||||
-
|
||||
- FN_ENTER;
|
||||
- acx_sem_lock(adev);
|
||||
-
|
||||
- stats->len = 0;
|
||||
- stats->limit = TX_CNT;
|
||||
- stats->count = 0;
|
||||
-
|
||||
- acx_sem_unlock(adev);
|
||||
- FN_EXIT0;
|
||||
- return err;
|
||||
-}
|
||||
-#endif
|
||||
-
|
||||
/*
|
||||
* BOM Helpers
|
||||
* ==================================================
|
||||
Index: acx-mac80211-20100422/mem.c
|
||||
===================================================================
|
||||
--- acx-mac80211-20100422.orig/mem.c 2010-05-02 03:07:09.000000000 +0200
|
||||
+++ acx-mac80211-20100422/mem.c 2010-05-02 22:05:26.007552341 +0200
|
||||
@@ -4654,9 +4654,6 @@
|
||||
.bss_info_changed = acx_e_op_bss_info_changed,
|
||||
.set_key = acx_e_op_set_key,
|
||||
.get_stats = acx_e_op_get_stats,
|
||||
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 34)
|
||||
- .get_tx_stats = acx_e_op_get_tx_stats,
|
||||
-#endif
|
||||
};
|
||||
|
||||
/*
|
||||
Index: acx-mac80211-20100422/pci.c
|
||||
===================================================================
|
||||
--- acx-mac80211-20100422.orig/pci.c 2010-05-02 03:07:09.000000000 +0200
|
||||
+++ acx-mac80211-20100422/pci.c 2010-05-02 22:06:03.758564021 +0200
|
||||
@@ -3149,9 +3149,6 @@
|
||||
.bss_info_changed = acx_e_op_bss_info_changed,
|
||||
.set_key = acx_e_op_set_key,
|
||||
.get_stats = acx_e_op_get_stats,
|
||||
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 34)
|
||||
- .get_tx_stats = acx_e_op_get_tx_stats,
|
||||
-#endif
|
||||
};
|
||||
|
||||
|
||||
Index: acx-mac80211-20100422/usb.c
|
||||
===================================================================
|
||||
--- acx-mac80211-20100422.orig/usb.c 2010-05-02 03:07:09.000000000 +0200
|
||||
+++ acx-mac80211-20100422/usb.c 2010-05-02 22:06:22.874733862 +0200
|
||||
@@ -1444,9 +1444,6 @@
|
||||
.bss_info_changed = acx_e_op_bss_info_changed,
|
||||
.set_key = acx_e_op_set_key,
|
||||
.get_stats = acx_e_op_get_stats,
|
||||
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 34)
|
||||
- .get_tx_stats = acx_e_op_get_tx_stats,
|
||||
-#endif
|
||||
};
|
||||
|
||||
/*
|
|
@ -1,11 +0,0 @@
|
|||
--- a/pci.c
|
||||
+++ b/pci.c
|
||||
@@ -17,8 +17,6 @@
|
||||
*/
|
||||
#define ACX_MAC80211_PCI 1
|
||||
|
||||
-#define CONFIG_PCI 1
|
||||
-
|
||||
#include <linux/version.h>
|
||||
|
||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 33)
|
|
@ -0,0 +1,37 @@
|
|||
Index: acx-mac80211-20100422/pci.c
|
||||
===================================================================
|
||||
--- acx-mac80211-20100422.orig/pci.c 2010-05-02 22:06:03.000000000 +0200
|
||||
+++ acx-mac80211-20100422/pci.c 2010-05-02 22:10:40.963886264 +0200
|
||||
@@ -170,7 +170,7 @@
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_VLYNQ
|
||||
-int vlynq_probe(struct vlynq_device *vdev, struct vlynq_device_id *id);
|
||||
+static int vlynq_probe(struct vlynq_device *vdev, struct vlynq_device_id *id);
|
||||
static void vlynq_remove(struct vlynq_device *vdev);
|
||||
#endif
|
||||
|
||||
@@ -4433,6 +4433,8 @@
|
||||
goto fail_alloc_netdev;
|
||||
}
|
||||
ieee->flags &= ~IEEE80211_HW_RX_INCLUDES_FCS;
|
||||
+ ieee->wiphy->interface_modes = BIT(NL80211_IFTYPE_STATION)
|
||||
+ | BIT(NL80211_IFTYPE_ADHOC);
|
||||
ieee->queues = 1;
|
||||
|
||||
adev = ieee2adev(ieee);
|
||||
Index: acx-mac80211-20100422/acx_func.h
|
||||
===================================================================
|
||||
--- acx-mac80211-20100422.orig/acx_func.h 2010-05-02 03:07:09.000000000 +0200
|
||||
+++ acx-mac80211-20100422/acx_func.h 2010-05-02 22:15:55.476748737 +0200
|
||||
@@ -562,10 +562,6 @@
|
||||
|
||||
// Driver, Module
|
||||
|
||||
-#ifdef CONFIG_VLYNQ
|
||||
-int vlynq_probe(struct vlynq_device *vdev, struct vlynq_device_id *id);
|
||||
-#endif
|
||||
-
|
||||
int __init acxpci_e_init_module(void);
|
||||
void __exit acxpci_e_cleanup_module(void);
|
||||
|
Loading…
Reference in New Issue