LINUX.ORG.RU

История изменений

Исправление metawishmaster, (текущая версия) :

та версия, что сверху падала у меня сегодня на другом ядре (3.12.10), но я нашел аналогияный патч давностью около года, которых забраковали из-за того, что у людей жутко падала скорость. По-сути у меня была ошибка, но я посмотроел как было у тех друзей и сейчас патч не падает, скорость тоже стабильна насколько так можно сказать о скоростях wifi. Проверьте, пожалуйста у себя на 6205 :)

// тут форматирование патча слегка ломается, поэтому http://pastebin.com/CGV6HViw

Исходная версия metawishmaster, :

та версия, что сверху падала у меня сегодня на другом ядре (3.12.10), но я нашел аналогияный патч давностью около года, которых забраковали из-за того, что у людей жутко падала скорость. По-сути у меня была ошибка, но я посмотроел как было у тех друзей и сейчас патч не падает, скорость тоже стабильна насколько так можно сказать о скоростях wifi. Проверьте, пожалуйста у себя на 6205 :)

--- drivers/net/wireless/iwlwifi/dvm/tx.c-orig  2014-02-07 09:57:55.305893472 +0400
+++ drivers/net/wireless/iwlwifi/dvm/tx.c       2014-02-08 14:43:26.464865956 +0400
@@ -1185,13 +1185,6 @@ int iwlagn_rx_reply_tx(struct iwl_priv *
                        next_reclaimed = ssn;
                }
 
-               if (tid != IWL_TID_NON_QOS) {
-                       priv->tid_data[sta_id][tid].next_reclaimed =
-                               next_reclaimed;
-                       IWL_DEBUG_TX_REPLY(priv, "Next reclaimed packet:%d\n",
-                                                 next_reclaimed);
-               }
-
                iwl_trans_reclaim(priv->trans, txq_id, ssn, &skbs);
 
                iwlagn_check_ratid_empty(priv, sta_id, tid);
@@ -1239,8 +1232,11 @@ int iwlagn_rx_reply_tx(struct iwl_priv *
                                info->flags |= IEEE80211_TX_STAT_AMPDU_NO_BACK;
                        iwlagn_set_tx_status(priv, IEEE80211_SKB_CB(skb),
                                     tx_resp);
-                       if (!is_agg)
+                       if (!is_agg) {
                                iwlagn_non_agg_tx_status(priv, ctx, hdr->addr1);
+                               if (status == TX_STATUS_FAIL_FIFO_FLUSHED)
+                                       next_reclaimed = ((le16_to_cpu(hdr->seq_ctrl) + 0x10) & IEEE80211_SCTL_SEQ) >> 4;
+                       }
 
                        freed++;
                }