iwlwifi: correction of group-id once sending REPLY_ERROR
authorMukesh Sisodiya <mukesh.sisodiya@intel.com>
Wed, 10 Feb 2021 12:29:25 +0000 (14:29 +0200)
committerLuca Coelho <luciano.coelho@intel.com>
Wed, 10 Feb 2021 12:39:42 +0000 (14:39 +0200)
Once sending the REPLY_ERROR group ID is not set and this lead to
get it set to wrong value LONG_GROUP later in default handling

Fix this by checking the REPLY_ERROR and avoid changing the Group ID

Signed-off-by: Mukesh Sisodiya <mukesh.sisodiya@intel.com>
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
Link: https://lore.kernel.org/r/iwlwifi.20210210142629.82578caaea84.I0ca9cfdd4e656d2e88ee7696dd6baf4267e7cb52@changeid
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
drivers/net/wireless/intel/iwlwifi/iwl-trans.c

index f098545..60e0db4 100644 (file)
@@ -13,6 +13,7 @@
 #include "iwl-fh.h"
 #include "queue/tx.h"
 #include <linux/dmapool.h>
+#include "fw/api/commands.h"
 
 struct iwl_trans *iwl_trans_alloc(unsigned int priv_size,
                                  struct device *dev,
@@ -161,8 +162,10 @@ int iwl_trans_send_cmd(struct iwl_trans *trans, struct iwl_host_cmd *cmd)
        if (!(cmd->flags & CMD_ASYNC))
                lock_map_acquire_read(&trans->sync_cmd_lockdep_map);
 
-       if (trans->wide_cmd_header && !iwl_cmd_groupid(cmd->id))
-               cmd->id = DEF_ID(cmd->id);
+       if (trans->wide_cmd_header && !iwl_cmd_groupid(cmd->id)) {
+               if (cmd->id != REPLY_ERROR)
+                       cmd->id = DEF_ID(cmd->id);
+       }
 
        ret = iwl_trans_txq_send_hcmd(trans, cmd);