summaryrefslogtreecommitdiff
path: root/mac80211.c
diff options
context:
space:
mode:
Diffstat (limited to 'mac80211.c')
-rw-r--r--mac80211.c39
1 files changed, 9 insertions, 30 deletions
diff --git a/mac80211.c b/mac80211.c
index 3a6e18a..fe3525c 100644
--- a/mac80211.c
+++ b/mac80211.c
@@ -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
};