diff options
author | Emmanuel Grumbach <emmanuel.grumbach@intel.com> | 2012-07-23 22:58:32 (GMT) |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2012-07-26 07:03:21 (GMT) |
commit | 9679142291f51515bd1bf492535e8a12515558e9 (patch) | |
tree | b8ba2153cf6a9890eb8022e705b013a8676f1a2c /drivers/net/wireless/iwlwifi/pcie/internal.h | |
parent | ebdfb7a144c53d0b8e771a738f058bc11f0e187f (diff) | |
download | linux-fsl-qoriq-9679142291f51515bd1bf492535e8a12515558e9.tar.xz |
iwlwifi: get the correct HCMD in the response handler
Until now, the response handler of a Host Command got the
exact same pointer that was also given to the DMA engine.
We almost never need to the Host Command that was sent while
handling its response, but when we do need it, we see that
the command has been modified.
This mystery has been elucidated. The FH (our DMA engine)
writes its meta data on the buffer in the DRAM. Of course it
copies the buffer to the NIC first. This was known to happen
for Tx command, but as a matter of fact, it happens to all
TFD brought by the FH which doesn't care much about what it
brings from DRAM to internal SRAM.
So copy the Host Command to yet another buffer so that we
can properly pass the buffer that was sent originally to the
fw. Do that only if it was request by the user since very
few flows need to get the HCMD sent in the response handler.
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'drivers/net/wireless/iwlwifi/pcie/internal.h')
-rw-r--r-- | drivers/net/wireless/iwlwifi/pcie/internal.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/net/wireless/iwlwifi/pcie/internal.h b/drivers/net/wireless/iwlwifi/pcie/internal.h index d9694c5..3ef8d5a 100644 --- a/drivers/net/wireless/iwlwifi/pcie/internal.h +++ b/drivers/net/wireless/iwlwifi/pcie/internal.h @@ -184,6 +184,7 @@ struct iwl_queue { struct iwl_pcie_tx_queue_entry { struct iwl_device_cmd *cmd; + struct iwl_device_cmd *copy_cmd; struct sk_buff *skb; struct iwl_cmd_meta meta; }; |