diff options
-rw-r--r-- | net/mac80211/agg-rx.c | 14 | ||||
-rw-r--r-- | net/mac80211/agg-tx.c | 44 |
2 files changed, 36 insertions, 22 deletions
diff --git a/net/mac80211/agg-rx.c b/net/mac80211/agg-rx.c index 808338a1bce5..31bf2586fb84 100644 --- a/net/mac80211/agg-rx.c +++ b/net/mac80211/agg-rx.c | |||
@@ -83,8 +83,8 @@ void ___ieee80211_stop_rx_ba_session(struct sta_info *sta, u16 tid, | |||
83 | if (drv_ampdu_action(local, sta->sdata, IEEE80211_AMPDU_RX_STOP, | 83 | if (drv_ampdu_action(local, sta->sdata, IEEE80211_AMPDU_RX_STOP, |
84 | &sta->sta, tid, NULL, 0)) | 84 | &sta->sta, tid, NULL, 0)) |
85 | sdata_info(sta->sdata, | 85 | sdata_info(sta->sdata, |
86 | "HW problem - can not stop rx aggregation for tid %d\n", | 86 | "HW problem - can not stop rx aggregation for %pM tid %d\n", |
87 | tid); | 87 | sta->sta.addr, tid); |
88 | 88 | ||
89 | /* check if this is a self generated aggregation halt */ | 89 | /* check if this is a self generated aggregation halt */ |
90 | if (initiator == WLAN_BACK_RECIPIENT && tx) | 90 | if (initiator == WLAN_BACK_RECIPIENT && tx) |
@@ -159,7 +159,8 @@ static void sta_rx_agg_session_timer_expired(unsigned long data) | |||
159 | } | 159 | } |
160 | rcu_read_unlock(); | 160 | rcu_read_unlock(); |
161 | 161 | ||
162 | ht_dbg(sta->sdata, "rx session timer expired on tid %d\n", (u16)*ptid); | 162 | ht_dbg(sta->sdata, "RX session timer expired on %pM tid %d\n", |
163 | sta->sta.addr, (u16)*ptid); | ||
163 | 164 | ||
164 | set_bit(*ptid, sta->ampdu_mlme.tid_rx_timer_expired); | 165 | set_bit(*ptid, sta->ampdu_mlme.tid_rx_timer_expired); |
165 | ieee80211_queue_work(&sta->local->hw, &sta->ampdu_mlme.work); | 166 | ieee80211_queue_work(&sta->local->hw, &sta->ampdu_mlme.work); |
@@ -247,7 +248,9 @@ void ieee80211_process_addba_request(struct ieee80211_local *local, | |||
247 | status = WLAN_STATUS_REQUEST_DECLINED; | 248 | status = WLAN_STATUS_REQUEST_DECLINED; |
248 | 249 | ||
249 | if (test_sta_flag(sta, WLAN_STA_BLOCK_BA)) { | 250 | if (test_sta_flag(sta, WLAN_STA_BLOCK_BA)) { |
250 | ht_dbg(sta->sdata, "Suspend in progress - Denying ADDBA request\n"); | 251 | ht_dbg(sta->sdata, |
252 | "Suspend in progress - Denying ADDBA request (%pM tid %d)\n", | ||
253 | sta->sta.addr, tid); | ||
251 | goto end_no_lock; | 254 | goto end_no_lock; |
252 | } | 255 | } |
253 | 256 | ||
@@ -317,7 +320,8 @@ void ieee80211_process_addba_request(struct ieee80211_local *local, | |||
317 | 320 | ||
318 | ret = drv_ampdu_action(local, sta->sdata, IEEE80211_AMPDU_RX_START, | 321 | ret = drv_ampdu_action(local, sta->sdata, IEEE80211_AMPDU_RX_START, |
319 | &sta->sta, tid, &start_seq_num, 0); | 322 | &sta->sta, tid, &start_seq_num, 0); |
320 | ht_dbg(sta->sdata, "Rx A-MPDU request on tid %d result %d\n", tid, ret); | 323 | ht_dbg(sta->sdata, "Rx A-MPDU request on %pM tid %d result %d\n", |
324 | sta->sta.addr, tid, ret); | ||
321 | if (ret) { | 325 | if (ret) { |
322 | kfree(tid_agg_rx->reorder_buf); | 326 | kfree(tid_agg_rx->reorder_buf); |
323 | kfree(tid_agg_rx->reorder_time); | 327 | kfree(tid_agg_rx->reorder_time); |
diff --git a/net/mac80211/agg-tx.c b/net/mac80211/agg-tx.c index 2f0ccbc5f13e..e90911819ed4 100644 --- a/net/mac80211/agg-tx.c +++ b/net/mac80211/agg-tx.c | |||
@@ -387,12 +387,13 @@ static void sta_addba_resp_timer_expired(unsigned long data) | |||
387 | test_bit(HT_AGG_STATE_RESPONSE_RECEIVED, &tid_tx->state)) { | 387 | test_bit(HT_AGG_STATE_RESPONSE_RECEIVED, &tid_tx->state)) { |
388 | rcu_read_unlock(); | 388 | rcu_read_unlock(); |
389 | ht_dbg(sta->sdata, | 389 | ht_dbg(sta->sdata, |
390 | "timer expired on tid %d but we are not (or no longer) expecting addBA response there\n", | 390 | "timer expired on %pM tid %d but we are not (or no longer) expecting addBA response there\n", |
391 | tid); | 391 | sta->sta.addr, tid); |
392 | return; | 392 | return; |
393 | } | 393 | } |
394 | 394 | ||
395 | ht_dbg(sta->sdata, "addBA response timer expired on tid %d\n", tid); | 395 | ht_dbg(sta->sdata, "addBA response timer expired on %pM tid %d\n", |
396 | sta->sta.addr, tid); | ||
396 | 397 | ||
397 | ieee80211_stop_tx_ba_session(&sta->sta, tid); | 398 | ieee80211_stop_tx_ba_session(&sta->sta, tid); |
398 | rcu_read_unlock(); | 399 | rcu_read_unlock(); |
@@ -429,7 +430,8 @@ void ieee80211_tx_ba_session_handle_start(struct sta_info *sta, int tid) | |||
429 | &sta->sta, tid, &start_seq_num, 0); | 430 | &sta->sta, tid, &start_seq_num, 0); |
430 | if (ret) { | 431 | if (ret) { |
431 | ht_dbg(sdata, | 432 | ht_dbg(sdata, |
432 | "BA request denied - HW unavailable for tid %d\n", tid); | 433 | "BA request denied - HW unavailable for %pM tid %d\n", |
434 | sta->sta.addr, tid); | ||
433 | spin_lock_bh(&sta->lock); | 435 | spin_lock_bh(&sta->lock); |
434 | ieee80211_agg_splice_packets(sdata, tid_tx, tid); | 436 | ieee80211_agg_splice_packets(sdata, tid_tx, tid); |
435 | ieee80211_assign_tid_tx(sta, tid, NULL); | 437 | ieee80211_assign_tid_tx(sta, tid, NULL); |
@@ -442,7 +444,8 @@ void ieee80211_tx_ba_session_handle_start(struct sta_info *sta, int tid) | |||
442 | 444 | ||
443 | /* activate the timer for the recipient's addBA response */ | 445 | /* activate the timer for the recipient's addBA response */ |
444 | mod_timer(&tid_tx->addba_resp_timer, jiffies + ADDBA_RESP_INTERVAL); | 446 | mod_timer(&tid_tx->addba_resp_timer, jiffies + ADDBA_RESP_INTERVAL); |
445 | ht_dbg(sdata, "activated addBA response timer on tid %d\n", tid); | 447 | ht_dbg(sdata, "activated addBA response timer on %pM tid %d\n", |
448 | sta->sta.addr, tid); | ||
446 | 449 | ||
447 | spin_lock_bh(&sta->lock); | 450 | spin_lock_bh(&sta->lock); |
448 | sta->ampdu_mlme.last_addba_req_time[tid] = jiffies; | 451 | sta->ampdu_mlme.last_addba_req_time[tid] = jiffies; |
@@ -489,7 +492,8 @@ static void sta_tx_agg_session_timer_expired(unsigned long data) | |||
489 | 492 | ||
490 | rcu_read_unlock(); | 493 | rcu_read_unlock(); |
491 | 494 | ||
492 | ht_dbg(sta->sdata, "tx session timer expired on tid %d\n", (u16)*ptid); | 495 | ht_dbg(sta->sdata, "tx session timer expired on %pM tid %d\n", |
496 | sta->sta.addr, (u16)*ptid); | ||
493 | 497 | ||
494 | ieee80211_stop_tx_ba_session(&sta->sta, *ptid); | 498 | ieee80211_stop_tx_ba_session(&sta->sta, *ptid); |
495 | } | 499 | } |
@@ -525,7 +529,8 @@ int ieee80211_start_tx_ba_session(struct ieee80211_sta *pubsta, u16 tid, | |||
525 | 529 | ||
526 | if (test_sta_flag(sta, WLAN_STA_BLOCK_BA)) { | 530 | if (test_sta_flag(sta, WLAN_STA_BLOCK_BA)) { |
527 | ht_dbg(sdata, | 531 | ht_dbg(sdata, |
528 | "BA sessions blocked - Denying BA session request\n"); | 532 | "BA sessions blocked - Denying BA session request %pM tid %d\n", |
533 | sta->sta.addr, tid); | ||
529 | return -EINVAL; | 534 | return -EINVAL; |
530 | } | 535 | } |
531 | 536 | ||
@@ -566,8 +571,8 @@ int ieee80211_start_tx_ba_session(struct ieee80211_sta *pubsta, u16 tid, | |||
566 | time_before(jiffies, sta->ampdu_mlme.last_addba_req_time[tid] + | 571 | time_before(jiffies, sta->ampdu_mlme.last_addba_req_time[tid] + |
567 | HT_AGG_RETRIES_PERIOD)) { | 572 | HT_AGG_RETRIES_PERIOD)) { |
568 | ht_dbg(sdata, | 573 | ht_dbg(sdata, |
569 | "BA request denied - waiting a grace period after %d failed requests on tid %u\n", | 574 | "BA request denied - waiting a grace period after %d failed requests on %pM tid %u\n", |
570 | sta->ampdu_mlme.addba_req_num[tid], tid); | 575 | sta->ampdu_mlme.addba_req_num[tid], sta->sta.addr, tid); |
571 | ret = -EBUSY; | 576 | ret = -EBUSY; |
572 | goto err_unlock_sta; | 577 | goto err_unlock_sta; |
573 | } | 578 | } |
@@ -576,8 +581,8 @@ int ieee80211_start_tx_ba_session(struct ieee80211_sta *pubsta, u16 tid, | |||
576 | /* check if the TID is not in aggregation flow already */ | 581 | /* check if the TID is not in aggregation flow already */ |
577 | if (tid_tx || sta->ampdu_mlme.tid_start_tx[tid]) { | 582 | if (tid_tx || sta->ampdu_mlme.tid_start_tx[tid]) { |
578 | ht_dbg(sdata, | 583 | ht_dbg(sdata, |
579 | "BA request denied - session is not idle on tid %u\n", | 584 | "BA request denied - session is not idle on %pM tid %u\n", |
580 | tid); | 585 | sta->sta.addr, tid); |
581 | ret = -EAGAIN; | 586 | ret = -EAGAIN; |
582 | goto err_unlock_sta; | 587 | goto err_unlock_sta; |
583 | } | 588 | } |
@@ -632,7 +637,8 @@ static void ieee80211_agg_tx_operational(struct ieee80211_local *local, | |||
632 | 637 | ||
633 | tid_tx = rcu_dereference_protected_tid_tx(sta, tid); | 638 | tid_tx = rcu_dereference_protected_tid_tx(sta, tid); |
634 | 639 | ||
635 | ht_dbg(sta->sdata, "Aggregation is on for tid %d\n", tid); | 640 | ht_dbg(sta->sdata, "Aggregation is on for %pM tid %d\n", |
641 | sta->sta.addr, tid); | ||
636 | 642 | ||
637 | drv_ampdu_action(local, sta->sdata, | 643 | drv_ampdu_action(local, sta->sdata, |
638 | IEEE80211_AMPDU_TX_OPERATIONAL, | 644 | IEEE80211_AMPDU_TX_OPERATIONAL, |
@@ -802,7 +808,9 @@ void ieee80211_stop_tx_ba_cb(struct ieee80211_vif *vif, u8 *ra, u8 tid) | |||
802 | tid_tx = rcu_dereference_protected_tid_tx(sta, tid); | 808 | tid_tx = rcu_dereference_protected_tid_tx(sta, tid); |
803 | 809 | ||
804 | if (!tid_tx || !test_bit(HT_AGG_STATE_STOPPING, &tid_tx->state)) { | 810 | if (!tid_tx || !test_bit(HT_AGG_STATE_STOPPING, &tid_tx->state)) { |
805 | ht_dbg(sdata, "unexpected callback to A-MPDU stop\n"); | 811 | ht_dbg(sdata, |
812 | "unexpected callback to A-MPDU stop for %pM tid %d\n", | ||
813 | sta->sta.addr, tid); | ||
806 | goto unlock_sta; | 814 | goto unlock_sta; |
807 | } | 815 | } |
808 | 816 | ||
@@ -861,13 +869,15 @@ void ieee80211_process_addba_resp(struct ieee80211_local *local, | |||
861 | goto out; | 869 | goto out; |
862 | 870 | ||
863 | if (mgmt->u.action.u.addba_resp.dialog_token != tid_tx->dialog_token) { | 871 | if (mgmt->u.action.u.addba_resp.dialog_token != tid_tx->dialog_token) { |
864 | ht_dbg(sta->sdata, "wrong addBA response token, tid %d\n", tid); | 872 | ht_dbg(sta->sdata, "wrong addBA response token, %pM tid %d\n", |
873 | sta->sta.addr, tid); | ||
865 | goto out; | 874 | goto out; |
866 | } | 875 | } |
867 | 876 | ||
868 | del_timer_sync(&tid_tx->addba_resp_timer); | 877 | del_timer_sync(&tid_tx->addba_resp_timer); |
869 | 878 | ||
870 | ht_dbg(sta->sdata, "switched off addBA timer for tid %d\n", tid); | 879 | ht_dbg(sta->sdata, "switched off addBA timer for %pM tid %d\n", |
880 | sta->sta.addr, tid); | ||
871 | 881 | ||
872 | /* | 882 | /* |
873 | * addba_resp_timer may have fired before we got here, and | 883 | * addba_resp_timer may have fired before we got here, and |
@@ -877,8 +887,8 @@ void ieee80211_process_addba_resp(struct ieee80211_local *local, | |||
877 | if (test_bit(HT_AGG_STATE_WANT_STOP, &tid_tx->state) || | 887 | if (test_bit(HT_AGG_STATE_WANT_STOP, &tid_tx->state) || |
878 | test_bit(HT_AGG_STATE_STOPPING, &tid_tx->state)) { | 888 | test_bit(HT_AGG_STATE_STOPPING, &tid_tx->state)) { |
879 | ht_dbg(sta->sdata, | 889 | ht_dbg(sta->sdata, |
880 | "got addBA resp for tid %d but we already gave up\n", | 890 | "got addBA resp for %pM tid %d but we already gave up\n", |
881 | tid); | 891 | sta->sta.addr, tid); |
882 | goto out; | 892 | goto out; |
883 | } | 893 | } |
884 | 894 | ||