ath9k: Simplify node attach/detach routines
[pandora-kernel.git] / drivers / net / wireless / ath9k / core.c
index 49fc264..689a280 100644 (file)
@@ -1366,9 +1366,10 @@ void ath_node_attach(struct ath_softc *sc, struct ieee80211_sta *sta, int if_id)
 
        an = (struct ath_node *)sta->drv_priv;
 
-       /* set up per-node tx/rx state */
-       ath_tx_node_init(sc, an);
-       ath_rx_node_init(sc, an);
+       if (sc->sc_flags & SC_OP_TXAGGR)
+               ath_tx_node_init(sc, an);
+       if (sc->sc_flags & SC_OP_RXAGGR)
+               ath_rx_node_init(sc, an);
 
        an->maxampdu = 1 << (IEEE80211_HTCAP_MAXRXAMPDU_FACTOR +
                             sta->ht_cap.ampdu_factor);
@@ -1384,10 +1385,10 @@ void ath_node_detach(struct ath_softc *sc, struct ieee80211_sta *sta)
 
        ath_chainmask_sel_timerstop(&an->an_chainmask_sel);
 
-       ath_tx_node_cleanup(sc, an);
-
-       ath_tx_node_free(sc, an);
-       ath_rx_node_free(sc, an);
+       if (sc->sc_flags & SC_OP_TXAGGR)
+               ath_tx_node_cleanup(sc, an);
+       if (sc->sc_flags & SC_OP_RXAGGR)
+               ath_rx_node_cleanup(sc, an);
 }
 
 /*