| From 4ec7a03743dc1fcd17a3ee34e9658850e437b110 Mon Sep 17 00:00:00 2001 |
| From: Sara Sharon <sara.sharon@intel.com> |
| Date: Tue, 3 Jan 2017 21:03:35 +0200 |
| Subject: [PATCH] iwlwifi: mvm: fix reorder timer re-arming |
| |
| commit 5351f9ab254c30d41659924265f1ecd7b4758d9e upstream. |
| |
| When NSSN is behind the reorder buffer due to timeout |
| the reorder timer isn't getting re-armed until NSSN |
| catches up. Fix it. |
| |
| Fixes: 0690405fef29 ("iwlwifi: mvm: add reorder timeout per frame") |
| |
| Signed-off-by: Sara Sharon <sara.sharon@intel.com> |
| Signed-off-by: Luca Coelho <luciano.coelho@intel.com> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c b/drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c |
| index 2b994be10b42..570cd1f8bc58 100644 |
| --- a/drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c |
| +++ b/drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c |
| @@ -408,7 +408,7 @@ static void iwl_mvm_release_frames(struct iwl_mvm *mvm, |
| |
| /* ignore nssn smaller than head sn - this can happen due to timeout */ |
| if (iwl_mvm_is_sn_less(nssn, ssn, reorder_buf->buf_size)) |
| - return; |
| + goto set_timer; |
| |
| while (iwl_mvm_is_sn_less(ssn, nssn, reorder_buf->buf_size)) { |
| int index = ssn % reorder_buf->buf_size; |
| @@ -430,6 +430,7 @@ static void iwl_mvm_release_frames(struct iwl_mvm *mvm, |
| } |
| reorder_buf->head_sn = nssn; |
| |
| +set_timer: |
| if (reorder_buf->num_stored && !reorder_buf->removed) { |
| u16 index = reorder_buf->head_sn % reorder_buf->buf_size; |
| |
| -- |
| 2.12.0 |
| |