diff options
Diffstat (limited to 'mac80211.c')
-rw-r--r-- | mac80211.c | 39 |
1 files changed, 9 insertions, 30 deletions
@@ -149,7 +149,6 @@ static int mwl_mac80211_add_interface(struct ieee80211_hw *hw, switch (vif->type) { case NL80211_IFTYPE_AP: - case NL80211_IFTYPE_MESH_POINT: macids_supported = priv->ap_macids_supported; break; case NL80211_IFTYPE_STATION: @@ -183,10 +182,6 @@ static int mwl_mac80211_add_interface(struct ieee80211_hw *hw, ether_addr_copy(mwl_vif->bssid, vif->addr); mwl_fwcmd_set_new_stn_add_self(hw, vif); break; - case NL80211_IFTYPE_MESH_POINT: - ether_addr_copy(mwl_vif->bssid, vif->addr); - mwl_fwcmd_set_new_stn_add_self(hw, vif); - break; case NL80211_IFTYPE_STATION: ether_addr_copy(mwl_vif->sta_mac, vif->addr); mwl_fwcmd_bss_start(hw, vif, true); @@ -228,7 +223,6 @@ static void mwl_mac80211_remove_interface(struct ieee80211_hw *hw, switch (vif->type) { case NL80211_IFTYPE_AP: - case NL80211_IFTYPE_MESH_POINT: mwl_fwcmd_set_new_stn_del(hw, vif, vif->addr); break; case NL80211_IFTYPE_STATION: @@ -370,7 +364,6 @@ static void mwl_mac80211_bss_info_changed(struct ieee80211_hw *hw, { switch (vif->type) { case NL80211_IFTYPE_AP: - case NL80211_IFTYPE_MESH_POINT: mwl_mac80211_bss_info_changed_ap(hw, vif, info, changed); break; case NL80211_IFTYPE_STATION: @@ -473,24 +466,6 @@ static int mwl_mac80211_sta_add(struct ieee80211_hw *hw, memset(sta_info, 0, sizeof(*sta_info)); - if (vif->type == NL80211_IFTYPE_MESH_POINT) { - sta_info->is_mesh_node = true; - /* Patch mesh interface for HT based on chip type. When authsae - * or wpa_supplicant is used for mesh security, HT capbility - * won't be set. This would be removed if problem is fixed. - */ - sta->ht_cap.ht_supported = true; - sta->ht_cap.cap = 0x6f; - sta->ht_cap.mcs.rx_mask[0] = 0xff; - sta->ht_cap.mcs.rx_mask[1] = 0xff; - sta->ht_cap.ampdu_factor = 0x3; - sta->ht_cap.ampdu_density = 0x5; - if (priv->chip_type == MWL8864) { - if (priv->antenna_rx == ANTENNA_RX_4_AUTO) - sta->ht_cap.mcs.rx_mask[2] = 0xff; - } - } - if (sta->ht_cap.ht_supported) { sta_info->is_ampdu_allowed = true; sta_info->is_amsdu_allowed = false; @@ -498,6 +473,8 @@ static int mwl_mac80211_sta_add(struct ieee80211_hw *hw, sta_info->amsdu_ctrl.cap = MWL_AMSDU_SIZE_8K; else sta_info->amsdu_ctrl.cap = MWL_AMSDU_SIZE_4K; + if ((sta->tdls) && (!sta->wme)) + sta->wme = true; } sta_info->iv16 = 1; sta_info->iv32 = 0; @@ -610,6 +587,10 @@ static int mwl_mac80211_ampdu_action(struct ieee80211_hw *hw, int rc = 0; struct mwl_priv *priv = hw->priv; struct mwl_ampdu_stream *stream; + enum ieee80211_ampdu_mlme_action action = params->action; + struct ieee80211_sta *sta = params->sta; + u16 tid = params->tid; + u8 buf_size = params->buf_size; u8 *addr = sta->addr, idx; struct mwl_sta *sta_info; @@ -649,7 +630,7 @@ static int mwl_mac80211_ampdu_action(struct ieee80211_hw *hw, break; } stream->state = AMPDU_STREAM_IN_PROGRESS; - *ssn = 0; + params->ssn = 0; ieee80211_start_tx_ba_cb_irqsafe(vif, addr, tid); break; case IEEE80211_AMPDU_TX_STOP_CONT: @@ -662,6 +643,7 @@ static int mwl_mac80211_ampdu_action(struct ieee80211_hw *hw, spin_unlock_bh(&priv->stream_lock); mwl_fwcmd_destroy_ba(hw, idx); spin_lock_bh(&priv->stream_lock); + sta_info->is_amsdu_allowed = false; } mwl_fwcmd_remove_stream(hw, stream); @@ -684,6 +666,7 @@ static int mwl_mac80211_ampdu_action(struct ieee80211_hw *hw, if (!rc) { stream->state = AMPDU_STREAM_ACTIVE; sta_info->check_ba_failed[tid] = 0; + sta_info->is_amsdu_allowed = params->amsdu; } else { idx = stream->idx; spin_unlock_bh(&priv->stream_lock); @@ -708,7 +691,6 @@ static int mwl_mac80211_ampdu_action(struct ieee80211_hw *hw, return rc; } -#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0) static int mwl_mac80211_chnl_switch(struct ieee80211_hw *hw, struct ieee80211_vif *vif, struct ieee80211_channel_switch *ch_switch) @@ -720,7 +702,6 @@ static int mwl_mac80211_chnl_switch(struct ieee80211_hw *hw, return rc; } -#endif const struct ieee80211_ops mwl_mac80211_ops = { .tx = mwl_mac80211_tx, @@ -739,7 +720,5 @@ const struct ieee80211_ops mwl_mac80211_ops = { .get_stats = mwl_mac80211_get_stats, .get_survey = mwl_mac80211_get_survey, .ampdu_action = mwl_mac80211_ampdu_action, -#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0) .pre_channel_switch = mwl_mac80211_chnl_switch, -#endif }; |