diff options
author | Johannes Berg <johannes@sipsolutions.net> | 2008-09-10 18:02:02 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2008-09-15 16:48:23 -0400 |
commit | 17741cdc264e4d768167766a252210e201c1519a (patch) | |
tree | 72c0e697af29a40c03bce002b529c3951d34a3b7 /net/mac80211/ht.c | |
parent | 8aa21e6fd703cb3fed66ac07dcbcb861f00cf6d6 (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.c | 22 |
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 | ||
360 | timer_expired_exit: | 360 | timer_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 | ||
901 | end_no_lock: | 901 | end_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 | } |