diff options
Diffstat (limited to 'net/mac80211/sta_info.c')
-rw-r--r-- | net/mac80211/sta_info.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/net/mac80211/sta_info.c b/net/mac80211/sta_info.c index 11216bc13b27..aeb967a0aeed 100644 --- a/net/mac80211/sta_info.c +++ b/net/mac80211/sta_info.c | |||
@@ -149,6 +149,7 @@ static void cleanup_single_sta(struct sta_info *sta) | |||
149 | * directly by station destruction. | 149 | * directly by station destruction. |
150 | */ | 150 | */ |
151 | for (i = 0; i < IEEE80211_NUM_TIDS; i++) { | 151 | for (i = 0; i < IEEE80211_NUM_TIDS; i++) { |
152 | kfree(sta->ampdu_mlme.tid_start_tx[i]); | ||
152 | tid_tx = rcu_dereference_raw(sta->ampdu_mlme.tid_tx[i]); | 153 | tid_tx = rcu_dereference_raw(sta->ampdu_mlme.tid_tx[i]); |
153 | if (!tid_tx) | 154 | if (!tid_tx) |
154 | continue; | 155 | continue; |
@@ -346,6 +347,7 @@ struct sta_info *sta_info_alloc(struct ieee80211_sub_if_data *sdata, | |||
346 | if (ieee80211_vif_is_mesh(&sdata->vif) && | 347 | if (ieee80211_vif_is_mesh(&sdata->vif) && |
347 | !sdata->u.mesh.user_mpm) | 348 | !sdata->u.mesh.user_mpm) |
348 | init_timer(&sta->plink_timer); | 349 | init_timer(&sta->plink_timer); |
350 | sta->nonpeer_pm = NL80211_MESH_POWER_ACTIVE; | ||
349 | #endif | 351 | #endif |
350 | 352 | ||
351 | memcpy(sta->sta.addr, addr, ETH_ALEN); | 353 | memcpy(sta->sta.addr, addr, ETH_ALEN); |
@@ -358,6 +360,8 @@ struct sta_info *sta_info_alloc(struct ieee80211_sub_if_data *sdata, | |||
358 | do_posix_clock_monotonic_gettime(&uptime); | 360 | do_posix_clock_monotonic_gettime(&uptime); |
359 | sta->last_connected = uptime.tv_sec; | 361 | sta->last_connected = uptime.tv_sec; |
360 | ewma_init(&sta->avg_signal, 1024, 8); | 362 | ewma_init(&sta->avg_signal, 1024, 8); |
363 | for (i = 0; i < ARRAY_SIZE(sta->chain_signal_avg); i++) | ||
364 | ewma_init(&sta->chain_signal_avg[i], 1024, 8); | ||
361 | 365 | ||
362 | if (sta_prepare_rate_control(local, sta, gfp)) { | 366 | if (sta_prepare_rate_control(local, sta, gfp)) { |
363 | kfree(sta); | 367 | kfree(sta); |
@@ -1130,6 +1134,7 @@ static void ieee80211_send_null_response(struct ieee80211_sub_if_data *sdata, | |||
1130 | * ends the poll/service period. | 1134 | * ends the poll/service period. |
1131 | */ | 1135 | */ |
1132 | info->flags |= IEEE80211_TX_CTL_NO_PS_BUFFER | | 1136 | info->flags |= IEEE80211_TX_CTL_NO_PS_BUFFER | |
1137 | IEEE80211_TX_CTL_PS_RESPONSE | | ||
1133 | IEEE80211_TX_STATUS_EOSP | | 1138 | IEEE80211_TX_STATUS_EOSP | |
1134 | IEEE80211_TX_CTL_REQ_TX_STATUS; | 1139 | IEEE80211_TX_CTL_REQ_TX_STATUS; |
1135 | 1140 | ||
@@ -1267,7 +1272,8 @@ ieee80211_sta_ps_deliver_response(struct sta_info *sta, | |||
1267 | * STA may still remain is PS mode after this frame | 1272 | * STA may still remain is PS mode after this frame |
1268 | * exchange. | 1273 | * exchange. |
1269 | */ | 1274 | */ |
1270 | info->flags |= IEEE80211_TX_CTL_NO_PS_BUFFER; | 1275 | info->flags |= IEEE80211_TX_CTL_NO_PS_BUFFER | |
1276 | IEEE80211_TX_CTL_PS_RESPONSE; | ||
1271 | 1277 | ||
1272 | /* | 1278 | /* |
1273 | * Use MoreData flag to indicate whether there are | 1279 | * Use MoreData flag to indicate whether there are |