aboutsummaryrefslogtreecommitdiffstats
path: root/net/mac80211/ht.c
diff options
context:
space:
mode:
authorJohannes Berg <johannes@sipsolutions.net>2008-09-10 18:02:02 -0400
committerJohn W. Linville <linville@tuxdriver.com>2008-09-15 16:48:23 -0400
commit17741cdc264e4d768167766a252210e201c1519a (patch)
tree72c0e697af29a40c03bce002b529c3951d34a3b7 /net/mac80211/ht.c
parent8aa21e6fd703cb3fed66ac07dcbcb861f00cf6d6 (diff)
mac80211: share STA information with driver
This patch changes mac80211 to share some more data about stations with drivers. Should help iwlwifi and ath9k when they get around to updating, and might also help with implementing rate control algorithms without internals. Signed-off-by: Johannes Berg <johannes@sipsolutions.net> Cc: Sujith Manoharan <Sujith.Manoharan@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/mac80211/ht.c')
-rw-r--r--net/mac80211/ht.c22
1 files changed, 11 insertions, 11 deletions
diff --git a/net/mac80211/ht.c b/net/mac80211/ht.c
index bc3c71ad7ae3..dc7d9a3d70d5 100644
--- a/net/mac80211/ht.c
+++ b/net/mac80211/ht.c
@@ -274,7 +274,7 @@ void ieee80211_sta_stop_rx_ba_session(struct ieee80211_sub_if_data *sdata, u8 *r
274#endif /* CONFIG_MAC80211_HT_DEBUG */ 274#endif /* CONFIG_MAC80211_HT_DEBUG */
275 275
276 ret = local->ops->ampdu_action(hw, IEEE80211_AMPDU_RX_STOP, 276 ret = local->ops->ampdu_action(hw, IEEE80211_AMPDU_RX_STOP,
277 ra, tid, NULL); 277 &sta->sta, tid, NULL);
278 if (ret) 278 if (ret)
279 printk(KERN_DEBUG "HW problem - can not stop rx " 279 printk(KERN_DEBUG "HW problem - can not stop rx "
280 "aggregation for tid %d\n", tid); 280 "aggregation for tid %d\n", tid);
@@ -328,7 +328,7 @@ static void sta_addba_resp_timer_expired(unsigned long data)
328 328
329 rcu_read_lock(); 329 rcu_read_lock();
330 330
331 sta = sta_info_get(local, temp_sta->addr); 331 sta = sta_info_get(local, temp_sta->sta.addr);
332 if (!sta) { 332 if (!sta) {
333 rcu_read_unlock(); 333 rcu_read_unlock();
334 return; 334 return;
@@ -354,7 +354,7 @@ static void sta_addba_resp_timer_expired(unsigned long data)
354 /* go through the state check in stop_BA_session */ 354 /* go through the state check in stop_BA_session */
355 *state = HT_AGG_STATE_OPERATIONAL; 355 *state = HT_AGG_STATE_OPERATIONAL;
356 spin_unlock_bh(&sta->lock); 356 spin_unlock_bh(&sta->lock);
357 ieee80211_stop_tx_ba_session(hw, temp_sta->addr, tid, 357 ieee80211_stop_tx_ba_session(hw, temp_sta->sta.addr, tid,
358 WLAN_BACK_INITIATOR); 358 WLAN_BACK_INITIATOR);
359 359
360timer_expired_exit: 360timer_expired_exit:
@@ -465,7 +465,7 @@ int ieee80211_start_tx_ba_session(struct ieee80211_hw *hw, u8 *ra, u16 tid)
465 465
466 if (local->ops->ampdu_action) 466 if (local->ops->ampdu_action)
467 ret = local->ops->ampdu_action(hw, IEEE80211_AMPDU_TX_START, 467 ret = local->ops->ampdu_action(hw, IEEE80211_AMPDU_TX_START,
468 ra, tid, &start_seq_num); 468 &sta->sta, tid, &start_seq_num);
469 469
470 if (ret) { 470 if (ret) {
471 /* No need to requeue the packets in the agg queue, since we 471 /* No need to requeue the packets in the agg queue, since we
@@ -557,7 +557,7 @@ int ieee80211_stop_tx_ba_session(struct ieee80211_hw *hw,
557 557
558 if (local->ops->ampdu_action) 558 if (local->ops->ampdu_action)
559 ret = local->ops->ampdu_action(hw, IEEE80211_AMPDU_TX_STOP, 559 ret = local->ops->ampdu_action(hw, IEEE80211_AMPDU_TX_STOP,
560 ra, tid, NULL); 560 &sta->sta, tid, NULL);
561 561
562 /* case HW denied going back to legacy */ 562 /* case HW denied going back to legacy */
563 if (ret) { 563 if (ret) {
@@ -767,7 +767,7 @@ static void sta_rx_agg_session_timer_expired(unsigned long data)
767#ifdef CONFIG_MAC80211_HT_DEBUG 767#ifdef CONFIG_MAC80211_HT_DEBUG
768 printk(KERN_DEBUG "rx session timer expired on tid %d\n", (u16)*ptid); 768 printk(KERN_DEBUG "rx session timer expired on tid %d\n", (u16)*ptid);
769#endif 769#endif
770 ieee80211_sta_stop_rx_ba_session(sta->sdata, sta->addr, 770 ieee80211_sta_stop_rx_ba_session(sta->sdata, sta->sta.addr,
771 (u16)*ptid, WLAN_BACK_TIMER, 771 (u16)*ptid, WLAN_BACK_TIMER,
772 WLAN_REASON_QSTA_TIMEOUT); 772 WLAN_REASON_QSTA_TIMEOUT);
773} 773}
@@ -874,7 +874,7 @@ void ieee80211_process_addba_request(struct ieee80211_local *local,
874 874
875 if (local->ops->ampdu_action) 875 if (local->ops->ampdu_action)
876 ret = local->ops->ampdu_action(hw, IEEE80211_AMPDU_RX_START, 876 ret = local->ops->ampdu_action(hw, IEEE80211_AMPDU_RX_START,
877 sta->addr, tid, &start_seq_num); 877 &sta->sta, tid, &start_seq_num);
878#ifdef CONFIG_MAC80211_HT_DEBUG 878#ifdef CONFIG_MAC80211_HT_DEBUG
879 printk(KERN_DEBUG "Rx A-MPDU request on tid %d result %d\n", tid, ret); 879 printk(KERN_DEBUG "Rx A-MPDU request on tid %d result %d\n", tid, ret);
880#endif /* CONFIG_MAC80211_HT_DEBUG */ 880#endif /* CONFIG_MAC80211_HT_DEBUG */
@@ -899,7 +899,7 @@ end:
899 spin_unlock_bh(&sta->lock); 899 spin_unlock_bh(&sta->lock);
900 900
901end_no_lock: 901end_no_lock:
902 ieee80211_send_addba_resp(sta->sdata, sta->addr, tid, 902 ieee80211_send_addba_resp(sta->sdata, sta->sta.addr, tid,
903 dialog_token, status, 1, buf_size, timeout); 903 dialog_token, status, 1, buf_size, timeout);
904} 904}
905 905
@@ -952,7 +952,7 @@ void ieee80211_process_addba_resp(struct ieee80211_local *local,
952 /* this will allow the state check in stop_BA_session */ 952 /* this will allow the state check in stop_BA_session */
953 *state = HT_AGG_STATE_OPERATIONAL; 953 *state = HT_AGG_STATE_OPERATIONAL;
954 spin_unlock_bh(&sta->lock); 954 spin_unlock_bh(&sta->lock);
955 ieee80211_stop_tx_ba_session(hw, sta->addr, tid, 955 ieee80211_stop_tx_ba_session(hw, sta->sta.addr, tid,
956 WLAN_BACK_INITIATOR); 956 WLAN_BACK_INITIATOR);
957 } 957 }
958} 958}
@@ -979,14 +979,14 @@ void ieee80211_process_delba(struct ieee80211_sub_if_data *sdata,
979#endif /* CONFIG_MAC80211_HT_DEBUG */ 979#endif /* CONFIG_MAC80211_HT_DEBUG */
980 980
981 if (initiator == WLAN_BACK_INITIATOR) 981 if (initiator == WLAN_BACK_INITIATOR)
982 ieee80211_sta_stop_rx_ba_session(sdata, sta->addr, tid, 982 ieee80211_sta_stop_rx_ba_session(sdata, sta->sta.addr, tid,
983 WLAN_BACK_INITIATOR, 0); 983 WLAN_BACK_INITIATOR, 0);
984 else { /* WLAN_BACK_RECIPIENT */ 984 else { /* WLAN_BACK_RECIPIENT */
985 spin_lock_bh(&sta->lock); 985 spin_lock_bh(&sta->lock);
986 sta->ampdu_mlme.tid_state_tx[tid] = 986 sta->ampdu_mlme.tid_state_tx[tid] =
987 HT_AGG_STATE_OPERATIONAL; 987 HT_AGG_STATE_OPERATIONAL;
988 spin_unlock_bh(&sta->lock); 988 spin_unlock_bh(&sta->lock);
989 ieee80211_stop_tx_ba_session(&local->hw, sta->addr, tid, 989 ieee80211_stop_tx_ba_session(&local->hw, sta->sta.addr, tid,
990 WLAN_BACK_RECIPIENT); 990 WLAN_BACK_RECIPIENT);
991 } 991 }
992} 992}