iwlwifi: always copy first 16 bytes of commands
authorJohannes Berg <johannes.berg@intel.com>
Mon, 25 Feb 2013 15:01:34 +0000 (16:01 +0100)
committerJohannes Berg <johannes.berg@intel.com>
Tue, 26 Feb 2013 21:09:12 +0000 (22:09 +0100)
commit8a964f44e01ad3bbc208c3e80d931ba91b9ea786
treedfcd5d77e86358daf79df6810933d1e9ddc86aba
parentdc4a787c8f52f9d6e46156953f8014a3353bcbc7
iwlwifi: always copy first 16 bytes of commands

The FH hardware will always write back to the scratch field
in commands, even host commands not just TX commands, which
can overwrite parts of the command. This is problematic if
the command is re-used (with IWL_HCMD_DFL_NOCOPY) and can
cause calibration issues.

Address this problem by always putting at least the first
16 bytes into the buffer we also use for the command header
and therefore make the DMA engine write back into this.

For commands that are smaller than 16 bytes also always map
enough memory for the DMA engine to write back to.

Cc: stable@vger.kernel.org
Reviewed-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
drivers/net/wireless/iwlwifi/iwl-devtrace.h
drivers/net/wireless/iwlwifi/pcie/internal.h
drivers/net/wireless/iwlwifi/pcie/tx.c