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);