diff options
author | Sujith <Sujith.Manoharan@atheros.com> | 2008-10-29 00:49:28 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2008-11-10 15:17:32 -0500 |
commit | 8469cdef1f123e2e3e56645f1ac26c7cfb333d9c (patch) | |
tree | 40f9cffd53ee14f16334dcb96447484eeb93e0d6 /drivers/net/wireless | |
parent | dca3edb88ef567671886a85c5e40d491ccecf934 (diff) |
mac80211: Add a new event in ieee80211_ampdu_mlme_action
Send a notification to the driver on succesful
reception of an ADDBA response, add IEEE80211_AMPDU_TX_RESUME
for this purpose.
Signed-off-by: Sujith <Sujith.Manoharan@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless')
-rw-r--r-- | drivers/net/wireless/ath9k/core.h | 1 | ||||
-rw-r--r-- | drivers/net/wireless/ath9k/main.c | 3 | ||||
-rw-r--r-- | drivers/net/wireless/ath9k/xmit.c | 19 |
3 files changed, 23 insertions, 0 deletions
diff --git a/drivers/net/wireless/ath9k/core.h b/drivers/net/wireless/ath9k/core.h index 5b17e88ab9a..69e8d3e4113 100644 --- a/drivers/net/wireless/ath9k/core.h +++ b/drivers/net/wireless/ath9k/core.h | |||
@@ -581,6 +581,7 @@ void ath_tx_aggr_teardown(struct ath_softc *sc, | |||
581 | int ath_tx_aggr_start(struct ath_softc *sc, struct ieee80211_sta *sta, | 581 | int ath_tx_aggr_start(struct ath_softc *sc, struct ieee80211_sta *sta, |
582 | u16 tid, u16 *ssn); | 582 | u16 tid, u16 *ssn); |
583 | int ath_tx_aggr_stop(struct ath_softc *sc, struct ieee80211_sta *sta, u16 tid); | 583 | int ath_tx_aggr_stop(struct ath_softc *sc, struct ieee80211_sta *sta, u16 tid); |
584 | void ath_tx_aggr_resume(struct ath_softc *sc, struct ieee80211_sta *sta, u16 tid); | ||
584 | void ath_newassoc(struct ath_softc *sc, | 585 | void ath_newassoc(struct ath_softc *sc, |
585 | struct ath_node *node, int isnew, int isuapsd); | 586 | struct ath_node *node, int isnew, int isuapsd); |
586 | void ath_node_attach(struct ath_softc *sc, struct ieee80211_sta *sta); | 587 | void ath_node_attach(struct ath_softc *sc, struct ieee80211_sta *sta); |
diff --git a/drivers/net/wireless/ath9k/main.c b/drivers/net/wireless/ath9k/main.c index 65a532e08ec..fb50aa0fc99 100644 --- a/drivers/net/wireless/ath9k/main.c +++ b/drivers/net/wireless/ath9k/main.c | |||
@@ -1482,6 +1482,9 @@ static int ath9k_ampdu_action(struct ieee80211_hw *hw, | |||
1482 | 1482 | ||
1483 | ieee80211_stop_tx_ba_cb_irqsafe(hw, sta->addr, tid); | 1483 | ieee80211_stop_tx_ba_cb_irqsafe(hw, sta->addr, tid); |
1484 | break; | 1484 | break; |
1485 | case IEEE80211_AMPDU_TX_RESUME: | ||
1486 | ath_tx_aggr_resume(sc, sta, tid); | ||
1487 | break; | ||
1485 | default: | 1488 | default: |
1486 | DPRINTF(sc, ATH_DBG_FATAL, | 1489 | DPRINTF(sc, ATH_DBG_FATAL, |
1487 | "%s: Unknown AMPDU action\n", __func__); | 1490 | "%s: Unknown AMPDU action\n", __func__); |
diff --git a/drivers/net/wireless/ath9k/xmit.c b/drivers/net/wireless/ath9k/xmit.c index 7e6f4e59a5d..fe386b6dada 100644 --- a/drivers/net/wireless/ath9k/xmit.c +++ b/drivers/net/wireless/ath9k/xmit.c | |||
@@ -2371,6 +2371,25 @@ int ath_tx_aggr_stop(struct ath_softc *sc, struct ieee80211_sta *sta, u16 tid) | |||
2371 | return 0; | 2371 | return 0; |
2372 | } | 2372 | } |
2373 | 2373 | ||
2374 | /* Resume tx aggregation */ | ||
2375 | |||
2376 | void ath_tx_aggr_resume(struct ath_softc *sc, struct ieee80211_sta *sta, u16 tid) | ||
2377 | { | ||
2378 | struct ath_atx_tid *txtid; | ||
2379 | struct ath_node *an; | ||
2380 | |||
2381 | an = (struct ath_node *)sta->drv_priv; | ||
2382 | |||
2383 | if (sc->sc_flags & SC_OP_TXAGGR) { | ||
2384 | txtid = ATH_AN_2_TID(an, tid); | ||
2385 | txtid->baw_size = | ||
2386 | IEEE80211_MIN_AMPDU_BUF << sta->ht_cap.ampdu_factor; | ||
2387 | txtid->state |= AGGR_ADDBA_COMPLETE; | ||
2388 | txtid->state &= ~AGGR_ADDBA_PROGRESS; | ||
2389 | ath_tx_resume_tid(sc, txtid); | ||
2390 | } | ||
2391 | } | ||
2392 | |||
2374 | /* | 2393 | /* |
2375 | * Performs transmit side cleanup when TID changes from aggregated to | 2394 | * Performs transmit side cleanup when TID changes from aggregated to |
2376 | * unaggregated. | 2395 | * unaggregated. |