]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
iwlwifi: mvm: fix A-MPDU reference assignment
authorJohannes Berg <johannes.berg@intel.com>
Thu, 8 Nov 2018 08:51:56 +0000 (09:51 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 27 Jan 2020 13:50:16 +0000 (14:50 +0100)
[ Upstream commit 1f7698abedeeb3fef3cbcf78e16f925df675a179 ]

The current code assigns the reference, and then goes to increment
it if the toggle bit has changed. That way, we get

Toggle  0  0  0  0  1  1  1  1
ID      1  1  1  1  1  2  2  2

Fix that by assigning the post-toggle ID to get

Toggle  0  0  0  0  1  1  1  1
ID      1  1  1  1  2  2  2  2

Reported-by: Danny Alexander <danny.alexander@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Fixes: fbe4112791b8 ("iwlwifi: mvm: update mpdu metadata API")
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c

index 036d1d82d93e7eed2d6d08be91245f62d6d902f1..77e36945364215391c4116be4801213009d4c6f0 100644 (file)
@@ -1077,7 +1077,6 @@ void iwl_mvm_rx_mpdu_mq(struct iwl_mvm *mvm, struct napi_struct *napi,
                        he_phy_data = le64_to_cpu(desc->v1.he_phy_data);
 
                rx_status->flag |= RX_FLAG_AMPDU_DETAILS;
-               rx_status->ampdu_reference = mvm->ampdu_ref;
                /* toggle is switched whenever new aggregation starts */
                if (toggle_bit != mvm->ampdu_toggle) {
                        mvm->ampdu_ref++;
@@ -1092,6 +1091,7 @@ void iwl_mvm_rx_mpdu_mq(struct iwl_mvm *mvm, struct napi_struct *napi,
                                                RX_FLAG_AMPDU_EOF_BIT;
                        }
                }
+               rx_status->ampdu_reference = mvm->ampdu_ref;
        }
 
        rcu_read_lock();