linux/drivers/net/wireless/intel/iwlwifi
Sara Sharon c772a3d3fa iwlwifi: pcie: do not pad QoS AMSDU
We insert padding if the MAC header's size is not a multiple of 4
to ensure that the SNAP header is DWORD aligned. When we do so, we
let the firmware know by setting a bit in Tx command
(TX_CMD_FLG_MH_PAD) which will instruct the firmware to drop those
2 bytes before sending the frame.
However, this is not needed for AMSDU as the sub frame header (14B)
complements the MAC header (26B) so that the SNAP header is DWORD
aligned without adding any pad.

Until 9000, the firmware didn't check the TX_CMD_FLG_MH_PAD bit
but rather checked the length of the MAC header itself and
assumed the entity that enqueued the frame (driver or internal
firmware code) added the pad.
Since the driver inserted the pad even for AMSDU this logic applied.
Note that the padding is a DMA optimization but it's not strictly
needed, so we could pad even if it was not needed.

However, the CSUM hardware introduced for the 9000 devices requires
to not pad AMSDU as it is not needed, and will fail if such a pad
exists.
Due to older FW not checking the padding bit but checking the mac
header size itself - we cannot do this adjustments for older
generations.
Do not align the size if it is an AMSDU and HW checksum is enabled -
which will only happen on 9000 devices and on.

Signed-off-by: Sara Sharon <sara.sharon@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
2016-03-30 16:21:22 +03:00
..
dvm * update GSCAN capabilities (Ayala) 2016-03-10 14:53:35 +02:00
mvm iwlwifi: mvm: modify the max SP to infinite 2016-03-30 16:21:21 +03:00
pcie iwlwifi: pcie: do not pad QoS AMSDU 2016-03-30 16:21:22 +03:00
iwl-1000.c
iwl-2000.c
iwl-5000.c
iwl-6000.c
iwl-7000.c iwlwifi: mvm: bump firmware API to 21 2016-02-27 21:59:55 +02:00
iwl-8000.c iwlwifi: mvm: enable VHT MU-MIMO for supported hardware 2016-02-27 21:59:58 +02:00
iwl-9000.c iwlwifi: add support for getting HW address from CSR 2016-03-09 20:59:19 +02:00
iwl-agn-hw.h
iwl-config.h iwlwifi: add support for getting HW address from CSR 2016-03-09 20:59:19 +02:00
iwl-csr.h iwlwifi: add support for getting HW address from CSR 2016-03-09 20:59:19 +02:00
iwl-debug.c
iwl-debug.h
iwl-devtrace-data.h iwlwifi: pcie: build an A-MSDU using TSO core 2015-12-20 23:27:37 +02:00
iwl-devtrace-io.h
iwl-devtrace-iwlwifi.h iwlwifi: mvm: adapt the firmware assert log to new firmware 2016-03-09 21:05:16 +02:00
iwl-devtrace-msg.h
iwl-devtrace-ucode.h
iwl-devtrace.c
iwl-devtrace.h
iwl-drv.c iwlwifi: mvm: update GSCAN capabilities 2016-03-09 21:05:17 +02:00
iwl-drv.h
iwl-eeprom-parse.c iwlwifi: fix printf specifier 2015-12-21 10:12:08 +02:00
iwl-eeprom-parse.h
iwl-eeprom-read.c
iwl-eeprom-read.h
iwl-fh.h iwlwifi: pcie: fine tune number of rxbs 2016-03-09 20:59:19 +02:00
iwl-fw-error-dump.h iwlwifi: mvm: support dumping UMAC internal txfifos 2016-03-20 13:26:02 +02:00
iwl-fw-file.h iwlwifi: mvm: add LQM vendor command and notification 2016-03-30 16:21:07 +03:00
iwl-fw.h iwlwifi: mvm: update GSCAN capabilities 2016-03-09 21:05:17 +02:00
iwl-io.c iwlwifi: remove unused parameter from grab_nic_access 2015-12-21 10:11:39 +02:00
iwl-io.h
iwl-modparams.h iwlwifi: add disable_11ac module param 2016-03-02 08:59:47 +02:00
iwl-notif-wait.c
iwl-notif-wait.h
iwl-nvm-parse.c iwlwifi: add support for getting HW address from CSR 2016-03-09 20:59:19 +02:00
iwl-nvm-parse.h iwlwifi: refactor the code that reads the MAC address from the NVM 2016-03-07 13:33:00 +02:00
iwl-op-mode.h
iwl-phy-db.c
iwl-phy-db.h
iwl-prph.h iwlwifi: mvm: support dumping UMAC internal txfifos 2016-03-20 13:26:02 +02:00
iwl-scd.h
iwl-trans.c
iwl-trans.h iwlwifi: pcie: add pm_prepare and pm_complete ops 2016-02-27 22:00:07 +02:00
Kconfig Merge tag 'iwlwifi-for-kalle-2016-02-15' into HEAD 2016-02-27 21:59:52 +02:00
Makefile