]> git.baikalelectronics.ru Git - kernel.git/commit
iwlwifi: mvm: don't override the rate with the AMSDU len
authorEmmanuel Grumbach <emmanuel.grumbach@intel.com>
Tue, 3 May 2016 09:08:43 +0000 (12:08 +0300)
committerEmmanuel Grumbach <emmanuel.grumbach@intel.com>
Wed, 4 May 2016 17:59:55 +0000 (20:59 +0300)
commitb52ed2aa084c12b8870b87c3c13ec53175cf2c5c
tree17820fa70707a2078dc4605c8f075e9fbb2fe137
parent1960a17ffd871ec9d5736793822fb3bd3544cd61
iwlwifi: mvm: don't override the rate with the AMSDU len

The TSO code creates A-MSDUs from a single large send. Each
A-MSDU is an skb and skb->len doesn't include the number of
bytes which need to be added for the headers being added
(subframe header, TCP header, IP header, SNAP, padding).

To be able to set the right value in the Tx command, we
put the number of bytes added by those headers in
driver_data in iwl_mvm_tx_tso and use this value in
iwl_mvm_set_tx_cmd.

The problem by setting this value in driver_data is that
it overrides the ieee80211_tx_info. The bug manifested
itself when we send P2P related frames in CCK since the
rate in ieee80211_tx_info is zero-ed. This of course is
a violation of the P2P specification.

To fix this, copy the original ieee80211_tx_info to the
stack and pass it to the functions which need it.
Assign the number of bytes added by the headers to the
driver_data inside the skb itself.

Fixes: e7df17984984 ("iwlwifi: mvm: send large SKBs to the transport")
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
drivers/net/wireless/intel/iwlwifi/mvm/tx.c