OSDN Git Service

iwlwifi: mvm: handle RX checksum on Bz devices
authorJohannes Berg <johannes.berg@intel.com>
Sun, 19 Dec 2021 10:18:10 +0000 (12:18 +0200)
committerLuca Coelho <luciano.coelho@intel.com>
Tue, 21 Dec 2021 10:35:06 +0000 (12:35 +0200)
On Bz devices, the hardware checksums including the SNAP header,
starting directly after the MAC header, so we don't need the
extra checks and can just pass the checksum to mac80211.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
Link: https://lore.kernel.org/r/iwlwifi.20211219121514.8ef59da4e05e.Ide87c2dc8fa08eae55c013a625f4ece5184b1b63@changeid
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c

index de36255..5f73717 100644 (file)
@@ -172,8 +172,12 @@ static int iwl_mvm_create_skb(struct iwl_mvm *mvm, struct sk_buff *skb,
         * in the cases the hardware didn't handle, since it's rare to see
         * such packets, even though the hardware did calculate the checksum
         * in this case, just starting after the MAC header instead.
+        *
+        * Starting from Bz hardware, it calculates starting directly after
+        * the MAC header, so that matches mac80211's expectation.
         */
-       if (skb->ip_summed == CHECKSUM_COMPLETE) {
+       if (skb->ip_summed == CHECKSUM_COMPLETE &&
+           mvm->trans->trans_cfg->device_family < IWL_DEVICE_FAMILY_BZ) {
                struct {
                        u8 hdr[6];
                        __be16 type;