Skip to content

Commit 5f90472

Browse files
sara-slucacoelho
authored andcommitted
iwlwifi: mvm: fix reorder buffer for 9000 devices
The condition to check if reorder buffer ran out of space is faulty, as it takes into account only the NSSN. In case the head SN was too far behind the reorder buffer should move forward, regardless of the NSSN status. This caused the driver to release packets out of order in some scenarios. Fixes: b915c10 ("iwlwifi: mvm: add reorder buffer per queue") Signed-off-by: Sara Sharon <[email protected]> Signed-off-by: Luca Coelho <[email protected]>
1 parent d460f1f commit 5f90472

File tree

1 file changed

+4
-3
lines changed
  • drivers/net/wireless/intel/iwlwifi/mvm

1 file changed

+4
-3
lines changed

drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -672,11 +672,12 @@ static bool iwl_mvm_reorder(struct iwl_mvm *mvm,
672672
* If there was a significant jump in the nssn - adjust.
673673
* If the SN is smaller than the NSSN it might need to first go into
674674
* the reorder buffer, in which case we just release up to it and the
675-
* rest of the function will take of storing it and releasing up to the
676-
* nssn
675+
* rest of the function will take care of storing it and releasing up to
676+
* the nssn
677677
*/
678678
if (!iwl_mvm_is_sn_less(nssn, buffer->head_sn + buffer->buf_size,
679-
buffer->buf_size)) {
679+
buffer->buf_size) ||
680+
!ieee80211_sn_less(sn, buffer->head_sn + buffer->buf_size)) {
680681
u16 min_sn = ieee80211_sn_less(sn, nssn) ? sn : nssn;
681682

682683
iwl_mvm_release_frames(mvm, sta, napi, buffer, min_sn);

0 commit comments

Comments
 (0)