iwlwifi: remove un-necessary rs_tl_turn_on_agg() after agg enabled
authorWey-Yi Guy <wey-yi.w.guy@intel.com>
Tue, 10 Mar 2009 21:35:09 +0000 (14:35 -0700)
committerJohn W. Linville <linville@tuxdriver.com>
Mon, 16 Mar 2009 22:09:44 +0000 (18:09 -0400)
After the MLME handshaking complete and tx aggregation started for the
tid. Do not send unnecessary turn on aggregation request to mac80211.

Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/iwlwifi/iwl-agn-rs.c

index 9bcebf2f460765e4cd6cdf2486954b1adf9cefbf..a6f4c74ff2b49bf060cbfa1423f40ef4c3c179e2 100644 (file)
@@ -1700,6 +1700,7 @@ static void rs_rate_scale_perform(struct iwl_priv *priv,
        u16 high_low;
        s32 sr;
        u8 tid = MAX_TID_COUNT;
+       struct iwl_tid_data *tid_data;
 
        IWL_DEBUG_RATE(priv, "rate scale calculate new rate for skb\n");
 
@@ -2035,8 +2036,15 @@ lq_update:
                        if ((lq_sta->last_tpt > IWL_AGG_TPT_THREHOLD) &&
                            (lq_sta->tx_agg_tid_en & (1 << tid)) &&
                            (tid != MAX_TID_COUNT)) {
-                               IWL_DEBUG_RATE(priv, "try to aggregate tid %d\n", tid);
-                               rs_tl_turn_on_agg(priv, tid, lq_sta, sta);
+                               tid_data =
+                                  &priv->stations[lq_sta->lq.sta_id].tid[tid];
+                               if (tid_data->agg.state == IWL_AGG_OFF) {
+                                       IWL_DEBUG_RATE(priv,
+                                                      "try to aggregate tid %d\n",
+                                                      tid);
+                                       rs_tl_turn_on_agg(priv, tid,
+                                                         lq_sta, sta);
+                               }
                        }
                        lq_sta->action_counter = 0;
                        rs_set_stay_in_table(priv, 0, lq_sta);