iwlwifi: mvm: fix reorder timer re-arming
authorSara Sharon <sara.sharon@intel.com>
Tue, 3 Jan 2017 19:03:35 +0000 (21:03 +0200)
committerLuca Coelho <luciano.coelho@intel.com>
Wed, 8 Feb 2017 10:55:32 +0000 (12:55 +0200)
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>
drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c

index c154ab4..d79e9c2 100644 (file)
@@ -418,7 +418,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;
@@ -441,6 +441,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;