mirror of
https://github.com/torvalds/linux.git
synced 2026-06-01 11:03:43 +02:00
wifi: iwlwifi: mvm: avoid outdated reorder buffer head_sn
If no frames are received on a queue for a while, the reorder buffer head_sn may be an old one. When the next frame that is received on that queue and buffered is a subframe of an AMSDU but not the last subframe, it will not update the buffer's head_sn. When the frame release notification arrives, it will not release the buffered frame because it will look like the notification's NSSN is lower than the buffer's head_sn (because of a wraparound). Fix it by updating the head_sn when the first frame is buffered. Signed-off-by: Avraham Stern <avraham.stern@intel.com> Reviewed-by: Daniel Gabay <daniel.gabay@intel.com> Reviewed-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com> Link: https://patch.msgid.link/20250723094230.795ec0cb8817.I9ec9a3508e7935e8d1833ea3e086066fdefee644@changeid
This commit is contained in:
parent
0636800c8e
commit
422850b29e
|
|
@ -905,10 +905,15 @@ static bool iwl_mvm_reorder(struct iwl_mvm *mvm,
|
|||
* already ahead and it will be dropped.
|
||||
* If the last sub-frame is not on this queue - we will get frame
|
||||
* release notification with up to date NSSN.
|
||||
* If this is the first frame that is stored in the buffer, the head_sn
|
||||
* may be outdated. Update it based on the last NSSN to make sure it
|
||||
* will be released when the frame release notification arrives.
|
||||
*/
|
||||
if (!amsdu || last_subframe)
|
||||
iwl_mvm_release_frames(mvm, sta, napi, baid_data,
|
||||
buffer, nssn);
|
||||
else if (buffer->num_stored == 1)
|
||||
buffer->head_sn = nssn;
|
||||
|
||||
spin_unlock_bh(&buffer->lock);
|
||||
return true;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user