diff --git a/package/acx-mac80211/Makefile b/package/acx-mac80211/Makefile index 74889ccb1b..bbdf5f0cba 100644 --- a/package/acx-mac80211/Makefile +++ b/package/acx-mac80211/Makefile @@ -9,12 +9,12 @@ include $(TOPDIR)/rules.mk include $(INCLUDE_DIR)/kernel.mk PKG_NAME:=acx-mac80211 -PKG_REV:=11edba2 -PKG_VERSION:=20080805 +PKG_REV:=e7a55711 +PKG_VERSION:=20100302 PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 -PKG_SOURCE_URL:=git://gitorious.org/acx-mac80211/mainline.git +PKG_SOURCE_URL:=git://gitorious.org/~oli1417/acx-mac80211/oli1417-clone.git PKG_SOURCE_PROTO:=git PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION) PKG_SOURCE_VERSION:=$(PKG_REV) @@ -68,6 +68,7 @@ define Build/Compile $(PKG_EXTRA_KCONFIG) \ EXTRA_CFLAGS="$(PKG_EXTRA_CFLAGS)" \ LINUXINCLUDE="-I$(STAGING_DIR)/usr/include/mac80211 -I$(LINUX_DIR)/include \ + -Iarch/$(LINUX_KARCH)/include \ -include linux/autoconf.h" \ V="$(V)" \ modules diff --git a/package/acx-mac80211/patches/001-build_module.diff b/package/acx-mac80211/patches/001-build_module.diff deleted file mode 100644 index ee4a8d4c89..0000000000 --- a/package/acx-mac80211/patches/001-build_module.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- a/Makefile -+++ b/Makefile -@@ -28,7 +28,7 @@ ifneq ($(KERNELRELEASE),) - obj-$(CONFIG_ACX_MAC80211) += acx-mac80211.o - acx-mac80211-obj-$(CONFIG_ACX_MAC80211_PCI) += pci.o - acx-mac80211-obj-$(CONFIG_ACX_MAC80211_USB) += usb.o -- acx-mac80211-objs := common.o $(acx-mac80211-obj-y) -+ acx-mac80211-objs := common.o $(acx-mac80211-obj-m) - else - # Otherwise we were called directly from the command line: the the kernel build - # system must be explicitly invoked. diff --git a/package/acx-mac80211/patches/001-if_init_conf_removal.patch b/package/acx-mac80211/patches/001-if_init_conf_removal.patch new file mode 100644 index 0000000000..2e9bc18a16 --- /dev/null +++ b/package/acx-mac80211/patches/001-if_init_conf_removal.patch @@ -0,0 +1,95 @@ +Index: acx-mac80211-20100302/acx_func.h +=================================================================== +--- acx-mac80211-20100302.orig/acx_func.h 2010-03-06 12:57:25.000000000 +0100 ++++ acx-mac80211-20100302/acx_func.h 2010-03-06 12:58:10.000000000 +0100 +@@ -704,9 +704,9 @@ + 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, +Index: acx-mac80211-20100302/common.c +=================================================================== +--- acx-mac80211-20100302.orig/common.c 2010-03-06 12:57:31.000000000 +0100 ++++ acx-mac80211-20100302/common.c 2010-03-06 12:59:51.000000000 +0100 +@@ -4402,7 +4402,7 @@ + } + + 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 @@ + 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 @@ + + 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 @@ + } + + 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 @@ + 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); + diff --git a/package/acx-mac80211/patches/002-rate_definitions.patch b/package/acx-mac80211/patches/002-rate_definitions.patch deleted file mode 100644 index 7c9dc459e0..0000000000 --- a/package/acx-mac80211/patches/002-rate_definitions.patch +++ /dev/null @@ -1,105 +0,0 @@ ---- a/common.c -+++ b/common.c -@@ -1452,60 +1452,66 @@ void acx_free_modes(acx_device_t * adev) - // adev->modes = NULL; - } - --/* --#define RATETAB_ENT(_rate, _rateid, _flags) \ -- { \ -- .rate = (_rate), \ -- .val = (_rateid), \ -- .val2 = (_rateid), \ -- .flags = (_flags), \ -- } --*/ -- - static struct ieee80211_rate acx_rates[] = { - { .bitrate = 10, .hw_value = 0, .flags = IEEE80211_RATE_SHORT_PREAMBLE }, - { .bitrate = 20, .hw_value = 1, .flags = IEEE80211_RATE_SHORT_PREAMBLE }, - { .bitrate = 55, .hw_value = 2, .flags = IEEE80211_RATE_SHORT_PREAMBLE }, - { .bitrate = 110, .hw_value = 3, .flags = IEEE80211_RATE_SHORT_PREAMBLE }, -- { .bitrate = 60, .hw_value = 4, }, -- { .bitrate = 90, .hw_value = 5, }, -- { .bitrate = 120, .hw_value = 6, }, -- { .bitrate = 180, .hw_value = 7, }, -- { .bitrate = 240, .hw_value = 8, }, -- { .bitrate = 360, .hw_value = 9, }, -- { .bitrate = 480, .hw_value = 10, }, -- { .bitrate = 540, .hw_value = 11, }, -+ { .bitrate = 60, .hw_value = 4, .flags = 0 }, -+ { .bitrate = 90, .hw_value = 5, .flags = 0 }, -+ { .bitrate = 120, .hw_value = 6, .flags = 0 }, -+ { .bitrate = 180, .hw_value = 7, .flags = 0 }, -+ { .bitrate = 240, .hw_value = 8, .flags = 0 }, -+ { .bitrate = 360, .hw_value = 9, .flags = 0 }, -+ { .bitrate = 480, .hw_value = 10, .flags = 0 }, -+ { .bitrate = 540, .hw_value = 11, .flags = 0 }, - }; - -+#define CHAN4G(_channel, _freq, _flags) { \ -+ .band = IEEE80211_BAND_2GHZ, \ -+ .center_freq = (_freq), \ -+ .hw_value = (_channel), \ -+ .flags = (_flags), \ -+ .max_antenna_gain = 0, \ -+ .max_power = 30, \ -+} - static struct ieee80211_channel channels[] = { -- { .center_freq = 2412, .hw_value = 1, }, -- { .center_freq = 2417, .hw_value = 2, }, -- { .center_freq = 2422, .hw_value = 3, }, -- { .center_freq = 2427, .hw_value = 4, }, -- { .center_freq = 2432, .hw_value = 5, }, -- { .center_freq = 2437, .hw_value = 6, }, -- { .center_freq = 2442, .hw_value = 7, }, -- { .center_freq = 2447, .hw_value = 8, }, -- { .center_freq = 2452, .hw_value = 9, }, -- { .center_freq = 2457, .hw_value = 10, }, -- { .center_freq = 2462, .hw_value = 11, }, -- { .center_freq = 2467, .hw_value = 12, }, -- { .center_freq = 2472, .hw_value = 13, }, -- { .center_freq = 2484, .hw_value = 14, }, -+ CHAN4G(1, 2412, 0), -+ CHAN4G(2, 2417, 0), -+ CHAN4G(3, 2422, 0), -+ CHAN4G(4, 2427, 0), -+ CHAN4G(5, 2432, 0), -+ CHAN4G(6, 2437, 0), -+ CHAN4G(7, 2442, 0), -+ CHAN4G(8, 2447, 0), -+ CHAN4G(9, 2452, 0), -+ CHAN4G(10, 2457, 0), -+ CHAN4G(11, 2462, 0), -+ CHAN4G(12, 2467, 0), -+ CHAN4G(13, 2472, 0), -+ CHAN4G(14, 2484, 0), - }; -+#undef CHAN4G -+ -+#define acx_b_ratetable (acx_rates + 0) -+#define acx_b_ratetable_size 4 -+#define acx_g_ratetable (acx_rates + 0) -+#define acx_g_ratetable_size 12 - - static struct ieee80211_supported_band g_band_2GHz = { -+ .band = IEEE80211_BAND_2GHZ, - .channels = channels, - .n_channels = ARRAY_SIZE(channels), -- .bitrates = acx_rates, -- .n_bitrates = 12, -+ .bitrates = acx_b_ratetable, -+ .n_bitrates = acx_g_ratetable_size, - }; - - static struct ieee80211_supported_band b_band_2GHz = { -+ .band = IEEE80211_BAND_2GHZ, - .channels = channels, - .n_channels = ARRAY_SIZE(channels), -- .bitrates = acx_rates, -- .n_bitrates = 4, -+ .bitrates = acx_g_ratetable, -+ .n_bitrates = acx_b_ratetable_size, - }; - - int acx_setup_modes(acx_device_t * adev) diff --git a/package/acx-mac80211/patches/002-tx_queue_stats_removal.patch b/package/acx-mac80211/patches/002-tx_queue_stats_removal.patch new file mode 100644 index 0000000000..907b3596fe --- /dev/null +++ b/package/acx-mac80211/patches/002-tx_queue_stats_removal.patch @@ -0,0 +1,77 @@ +Index: acx-mac80211-20100302/acx_func.h +=================================================================== +--- acx-mac80211-20100302.orig/acx_func.h 2010-03-06 13:01:36.000000000 +0100 ++++ acx-mac80211-20100302/acx_func.h 2010-03-06 13:01:56.000000000 +0100 +@@ -714,7 +714,6 @@ + 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); +Index: acx-mac80211-20100302/common.c +=================================================================== +--- acx-mac80211-20100302.orig/common.c 2010-03-06 13:01:38.000000000 +0100 ++++ acx-mac80211-20100302/common.c 2010-03-06 13:02:37.000000000 +0100 +@@ -4662,24 +4662,6 @@ + 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) + { +Index: acx-mac80211-20100302/mem.c +=================================================================== +--- acx-mac80211-20100302.orig/mem.c 2010-03-06 13:01:46.000000000 +0100 ++++ acx-mac80211-20100302/mem.c 2010-03-06 13:02:28.000000000 +0100 +@@ -2321,7 +2321,6 @@ + .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, + }; + + +Index: acx-mac80211-20100302/pci.c +=================================================================== +--- acx-mac80211-20100302.orig/pci.c 2010-03-06 13:01:40.000000000 +0100 ++++ acx-mac80211-20100302/pci.c 2010-03-06 13:02:18.000000000 +0100 +@@ -1482,7 +1482,6 @@ + .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, + }; + + +Index: acx-mac80211-20100302/usb.c +=================================================================== +--- acx-mac80211-20100302.orig/usb.c 2010-03-06 13:01:44.000000000 +0100 ++++ acx-mac80211-20100302/usb.c 2010-03-06 13:02:22.000000000 +0100 +@@ -757,7 +757,6 @@ + .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, + }; + + /*********************************************************************** diff --git a/package/acx-mac80211/patches/003-if_types.patch b/package/acx-mac80211/patches/003-if_types.patch deleted file mode 100644 index 27f6ac6944..0000000000 --- a/package/acx-mac80211/patches/003-if_types.patch +++ /dev/null @@ -1,91 +0,0 @@ ---- a/acx_mac80211.h -+++ b/acx_mac80211.h -@@ -36,7 +36,7 @@ struct acx_interface { - /* Current BSSID (if any). */ - u8 *bssid; - -- /* Interface type. (IEEE80211_IF_TYPE_XXX) */ -+ /* Interface type. (NL80211_IFTYPE_XXX) */ - int type; - /* Counter of active monitor interfaces. */ - int monitor; ---- a/common.c -+++ b/common.c -@@ -4111,28 +4111,28 @@ static void acx_s_select_opmode(acx_devi - - if (adev->interface.operating) { - switch (adev->interface.type) { -- case IEEE80211_IF_TYPE_AP: -+ case NL80211_IFTYPE_AP: - if (adev->mode != ACX_MODE_3_AP) - { - adev->mode = ACX_MODE_3_AP; - changed = 1; - } - break; -- case IEEE80211_IF_TYPE_IBSS: -+ case NL80211_IFTYPE_ADHOC: - if (adev->mode != ACX_MODE_0_ADHOC) - { - adev->mode = ACX_MODE_0_ADHOC; - changed = 1; - } - break; -- case IEEE80211_IF_TYPE_STA: -+ case NL80211_IFTYPE_STATION: - if (adev->mode != ACX_MODE_2_STA) - { - adev->mode = ACX_MODE_2_STA; - changed = 1; - } - break; -- case IEEE80211_IF_TYPE_WDS: -+ case NL80211_IFTYPE_WDS: - default: - if (adev->mode != ACX_MODE_OFF) - { -@@ -4142,7 +4142,7 @@ static void acx_s_select_opmode(acx_devi - break; - } - } else { -- if (adev->interface.type == IEEE80211_IF_TYPE_MNTR) -+ if (adev->interface.type == NL80211_IFTYPE_MONITOR) - { - if (adev->mode != ACX_MODE_MONITOR) - { -@@ -4186,7 +4186,7 @@ int acx_add_interface(struct ieee80211_h - FN_ENTER; - acx_lock(adev, flags); - -- if (conf->type == IEEE80211_IF_TYPE_MNTR) { -+ if (conf->type == NL80211_IFTYPE_MONITOR) { - adev->interface.monitor++; - } else { - if (adev->interface.operating) -@@ -4232,7 +4232,7 @@ void acx_remove_interface(struct ieee802 - FN_ENTER; - - acx_sem_lock(adev); -- if (conf->type == IEEE80211_IF_TYPE_MNTR) { -+ if (conf->type == NL80211_IFTYPE_MONITOR) { - adev->interface.monitor--; - // assert(bcm->interface.monitor >= 0); - } else { -@@ -4386,7 +4386,7 @@ extern int acx_config_interface(struct i - - acx_lock(adev, flags); - -- if ((vif->type != IEEE80211_IF_TYPE_MNTR) -+ if ((vif->type != NL80211_IFTYPE_MONITOR) - && (adev->vif == vif)) { - if (conf->bssid) - { -@@ -4394,7 +4394,7 @@ extern int acx_config_interface(struct i - MAC_COPY(adev->bssid,conf->bssid); - } - } -- if ((vif->type == IEEE80211_IF_TYPE_AP) -+ if ((vif->type == NL80211_IFTYPE_AP) - && (adev->vif == vif)) { - if ((conf->ssid_len > 0) && conf->ssid) - { diff --git a/package/acx-mac80211/patches/004-acx_config_interface_type.patch b/package/acx-mac80211/patches/004-acx_config_interface_type.patch deleted file mode 100644 index 800dc6176f..0000000000 --- a/package/acx-mac80211/patches/004-acx_config_interface_type.patch +++ /dev/null @@ -1,91 +0,0 @@ ---- a/acx_func.h -+++ b/acx_func.h -@@ -619,9 +619,10 @@ int acx_net_set_key(struct ieee80211_hw - enum set_key_cmd cmd, - const u8 *local_addr, const u8 *addr, - struct ieee80211_key_conf *key); --extern int acx_config_interface(struct ieee80211_hw* ieee, -+void acx_config_interface(struct ieee80211_hw* ieee, - struct ieee80211_vif *vif, -- struct ieee80211_if_conf *conf); -+ struct ieee80211_bss_conf *info, -+ u32 changes); - int acx_net_config(struct ieee80211_hw* ieee, struct ieee80211_conf *conf); - int acx_net_get_tx_stats(struct ieee80211_hw* ieee, struct ieee80211_tx_queue_stats *stats); - int acx_net_conf_tx(struct ieee80211_hw* ieee, u16 queue, ---- a/common.c -+++ b/common.c -@@ -4370,9 +4370,10 @@ int acx_net_config(struct ieee80211_hw * - ** - */ - --extern int acx_config_interface(struct ieee80211_hw* ieee, -+void acx_config_interface(struct ieee80211_hw* ieee, - struct ieee80211_vif *vif, -- struct ieee80211_if_conf *conf) -+ struct ieee80211_bss_conf *info, -+ u32 changes) - { - acx_device_t *adev = ieee2adev(ieee); - unsigned long flags; -@@ -4388,22 +4389,22 @@ extern int acx_config_interface(struct i - - if ((vif->type != NL80211_IFTYPE_MONITOR) - && (adev->vif == vif)) { -- if (conf->bssid) -+ if (info->bssid) - { -- adev->interface.bssid = conf->bssid; -- MAC_COPY(adev->bssid,conf->bssid); -+ adev->interface.bssid = info->bssid; -+ MAC_COPY(adev->bssid, info->bssid); - } - } - if ((vif->type == NL80211_IFTYPE_AP) - && (adev->vif == vif)) { -- if ((conf->ssid_len > 0) && conf->ssid) -+ if (info->bssid) - { -- adev->essid_len = conf->ssid_len; -- memcpy(adev->essid, conf->ssid, conf->ssid_len); -+ adev->essid_len = ETH_ALEN; -+ memcpy(adev->essid, info->bssid, ETH_ALEN); - SET_BIT(adev->set_mask, SET_TEMPLATES); - } - } -- if (conf->changed & IEEE80211_IFCC_BEACON) -+ if (changes & BSS_CHANGED_BSSID) - { - adev->beacon_interval = DEFAULT_BEACON_INTERVAL; - adev->beacon_cache = ieee80211_beacon_get(ieee, vif); -@@ -4418,7 +4419,7 @@ extern int acx_config_interface(struct i - err = 0; - err_out: - FN_EXIT1(err); -- return err; -+ return; - } - - /** ---- a/pci.c -+++ b/pci.c -@@ -1469,7 +1469,7 @@ static const struct ieee80211_ops acxpci - .configure_filter = acx_i_set_multicast_list, - .stop = acxpci_e_close, - .config = acx_net_config, -- .config_interface = acx_config_interface, -+ .bss_info_changed = acx_config_interface, - .set_key = acx_net_set_key, - .get_stats = acx_e_get_stats, - .get_tx_stats = acx_net_get_tx_stats, ---- a/usb.c -+++ b/usb.c -@@ -741,7 +741,7 @@ static const struct ieee80211_ops acxusb - .configure_filter = acx_i_set_multicast_list, - .stop = acxusb_e_close, - .config = acx_net_config, -- .config_interface = acx_config_interface, -+ .bss_info_changed = acx_config_interface, - .set_key = acx_net_set_key, - .get_stats = acx_e_get_stats, - .get_tx_stats = acx_net_get_tx_stats, diff --git a/package/acx-mac80211/patches/005-pci_fixes.patch b/package/acx-mac80211/patches/005-pci_fixes.patch deleted file mode 100644 index de407d81d0..0000000000 --- a/package/acx-mac80211/patches/005-pci_fixes.patch +++ /dev/null @@ -1,70 +0,0 @@ -Index: acx-mac80211-20080805/acx_func.h -=================================================================== ---- acx-mac80211-20080805.orig/acx_func.h 2009-05-26 20:58:10.000000000 +0200 -+++ acx-mac80211-20080805/acx_func.h 2009-05-26 20:58:11.000000000 +0200 -@@ -623,7 +623,7 @@ - struct ieee80211_vif *vif, - struct ieee80211_bss_conf *info, - u32 changes); --int acx_net_config(struct ieee80211_hw* ieee, struct ieee80211_conf *conf); -+int acx_net_config(struct ieee80211_hw* ieee, u32 changed); - int acx_net_get_tx_stats(struct ieee80211_hw* ieee, struct ieee80211_tx_queue_stats *stats); - int acx_net_conf_tx(struct ieee80211_hw* ieee, u16 queue, - const struct ieee80211_tx_queue_params *params); -Index: acx-mac80211-20080805/common.c -=================================================================== ---- acx-mac80211-20080805.orig/common.c 2009-05-26 20:58:10.000000000 +0200 -+++ acx-mac80211-20080805/common.c 2009-05-26 20:58:11.000000000 +0200 -@@ -4300,9 +4300,10 @@ - ** Derived from mac80211 code, p54, bcm43xx_mac80211 - ** - */ --int acx_net_config(struct ieee80211_hw *hw, struct ieee80211_conf *conf) -+int acx_net_config(struct ieee80211_hw *hw, u32 changed) - { - acx_device_t *adev = ieee2adev(hw); -+ struct ieee80211_conf *conf = &hw->conf; - unsigned long flags; - - FN_ENTER; -Index: acx-mac80211-20080805/pci.c -=================================================================== ---- acx-mac80211-20080805.orig/pci.c 2009-05-26 20:58:10.000000000 +0200 -+++ acx-mac80211-20080805/pci.c 2009-05-30 20:44:29.000000000 +0200 -@@ -3105,7 +3105,7 @@ - - /* let chip do RTS/CTS handshaking before sending - * in case packet size exceeds threshold */ -- if (info->flags & IEEE80211_TX_CTL_USE_RTS_CTS) -+ if (info->flags & IEEE80211_TX_RC_USE_RTS_CTS) - SET_BIT(Ctl2_8, DESC_CTL2_RTS); - else - CLEAR_BIT(Ctl2_8, DESC_CTL2_RTS); -@@ -3120,7 +3120,7 @@ - /* put_txcr(adev, txdesc, clt, rate_cur); deprecated by mac80211 */ - - txdesc->total_length = cpu_to_le16(len); -- wlhdr_len = ieee80211_get_hdrlen(le16_to_cpu(wireless_header->frame_control)); -+ wlhdr_len = ieee80211_hdrlen(le16_to_cpu(wireless_header->frame_control)); - hostdesc2->length = cpu_to_le16(len - wlhdr_len); - /* - if (!ieeectl->do_not_encrypt && ieeectl->key_idx>= 0) -@@ -3444,8 +3444,8 @@ - /* And finally report upstream */ - if (hostdesc) - { -- info->status.excessive_retries = rts_failures; -- info->status.retry_count = ack_failures; -+ //info->status.excessive_retries = rts_failures; -+ //info->status.retry_count = ack_failures; - ieee80211_tx_status(adev->ieee, hostdesc->skb); - } - /* update pointer for descr to be cleaned next */ -@@ -4303,6 +4303,7 @@ - } - - acx_init_task_scheduler(adev); -+ adev->ieee->wiphy->interface_modes = BIT(NL80211_IFTYPE_STATION); - result = ieee80211_register_hw(adev->ieee); - if (OK != result) { - printk("acx: ieee80211_register_hw() FAILED: %d\n", result);