• Johannes Berg's avatar
    iwlwifi: mvm: fix deduplication start logic · 92c4dca6
    Johannes Berg authored
    If the first frame on a given TID is received with seqno 0 and needed
    to be retransmitted, we erroneously drop it because the deduplication
    data is initialized to zero, and then comparing
    
            if (unlikely(ieee80211_has_retry(hdr->frame_control) &&
                         dup_data->last_seq[tid] == hdr->seq_ctrl &&
                         dup_data->last_sub_frame[tid] >= sub_frame_idx))
                    return true;
    
    will return in iwl_mvm_is_dup() since last_sub_frame is also set to
    zero, and sub_frame_idx is usually zero since this only covers the
    relatively rare case of A-MSDU.
    
    Fix this by initializing the last_seq array to 0xffff, which is an
    impossible value for hdr->seq_ctrl to have here because the lower
    four bits are the fragment number, and fragments aren't handled in
    this code but go to mac80211 instead.
    
    Fixes: a571f5f6 ("iwlwifi: mvm: add duplicate packet detection per rx queue")
    Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
    Signed-off-by: default avatarLuca Coelho <luciano.coelho@intel.com>
    92c4dca6
sta.c 105 KB