OSDN Git Service

iwlwifi: mvm/pcie: adjust A-MSDU tx_cmd length in PCIe
authorJohannes Berg <johannes.berg@intel.com>
Fri, 2 Dec 2016 09:04:49 +0000 (10:04 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 14 May 2017 12:00:16 +0000 (14:00 +0200)
commit48aa5ec292f3eba8f22a5b4d3a8eee123e7680dc
treeb9b46b4eed354e1e6999874e1a0d593666bf3590
parent04dd401a5145da42a040a622bac2eb9a96c01308
iwlwifi: mvm/pcie: adjust A-MSDU tx_cmd length in PCIe

commit 05e5a7e58d3f8f597ebe6f78aaa13a2656b78239 upstream.

Instead of setting the tx_cmd length in the mvm code, which is
complicated by the fact that DQA may want to temporarily store
the SKB on the side, adjust the length in the PCIe code which
also knows about this since it's responsible for duplicating
all those headers that are account for in this code.

As the PCIe code already relies on the tx_cmd->len field, this
doesn't really introduce any new dependencies.

To make this possible we need to move the memcpy() of the TX
command until after it was updated.

This does even simplify the code though, since the PCIe code
already does a lot of manipulations to build A-MSDUs correctly
and changing the length becomes a simple operation to see how
much was added/removed, rather than predicting it.

Fixes: 24afba7690e4 ("iwlwifi: mvm: support bss dynamic alloc/dealloc of queues")
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/net/wireless/intel/iwlwifi/mvm/tx.c
drivers/net/wireless/intel/iwlwifi/pcie/tx.c