wiphy_rfkill_set_hw_state(priv->hw->wiphy,
                        test_bit(STATUS_RF_KILL_HW, &priv->status));
        else
-               wake_up(&priv->shrd->wait_command_queue);
+               wake_up(&trans(priv)->wait_command_queue);
        return 0;
 }
 
 
 {
        priv->workqueue = create_singlethread_workqueue(DRV_NAME);
 
-       init_waitqueue_head(&priv->shrd->wait_command_queue);
-
        INIT_WORK(&priv->restart, iwl_bg_restart);
        INIT_WORK(&priv->beacon_update, iwl_bg_beacon_update);
        INIT_WORK(&priv->run_time_calib_work, iwl_bg_run_time_calib_work);
 
         * commands by clearing the ready bit */
        clear_bit(STATUS_READY, &priv->status);
 
-       wake_up(&priv->shrd->wait_command_queue);
+       wake_up(&trans(priv)->wait_command_queue);
 
        if (!ondemand) {
                /*
 
  * @nic: pointer to the nic data
  * @hw_params: see struct iwl_hw_params
  * @lock: protect general shared data
- * @wait_command_queue: the wait_queue for SYNC host commands
  * @eeprom: pointer to the eeprom/OTP image
  * @ucode_type: indicator of loaded ucode image
  * @device_pointers: pointers to ucode event tables
        struct iwl_hw_params hw_params;
        const struct iwl_fw *fw;
 
-       wait_queue_head_t wait_command_queue;
-
        /* eeprom -- this is in the card's little endian byte order */
        u8 *eeprom;
 
 
                 */
                clear_bit(STATUS_READY, &trans->shrd->status);
                clear_bit(STATUS_HCMD_ACTIVE, &trans->shrd->status);
-               wake_up(&trans->shrd->wait_command_queue);
+               wake_up(&trans->wait_command_queue);
                IWL_ERR(trans, "RF is used by WiMAX\n");
                return;
        }
 
                clear_bit(STATUS_HCMD_ACTIVE, &trans->shrd->status);
                IWL_DEBUG_INFO(trans, "Clearing HCMD_ACTIVE for command %s\n",
                               get_cmd_string(cmd->hdr.cmd));
-               wake_up(&trans->shrd->wait_command_queue);
+               wake_up(&trans->wait_command_queue);
        }
 
        meta->flags = 0;
                return ret;
        }
 
-       ret = wait_event_timeout(trans->shrd->wait_command_queue,
+       ret = wait_event_timeout(trans->wait_command_queue,
                        !test_bit(STATUS_HCMD_ACTIVE, &trans->shrd->status),
                        HOST_COMPLETE_TIMEOUT);
        if (!ret) {
 
                pci_write_config_word(pdev, PCI_COMMAND, pci_cmd);
        }
 
+       /* Initialize the wait queue for commands */
+       init_waitqueue_head(&trans->wait_command_queue);
+
        return trans;
 
 out_pci_release_regions:
 
  * @hw_id_str: a string with info about HW ID. Set during transport allocation.
  * @nvm_device_type: indicates OTP or eeprom
  * @pm_support: set to true in start_hw if link pm is supported
+ * @wait_command_queue: the wait_queue for SYNC host commands
  */
 struct iwl_trans {
        const struct iwl_trans_ops *ops;
        int    nvm_device_type;
        bool pm_support;
 
+       wait_queue_head_t wait_command_queue;
+
        /* pointer to trans specific struct */
        /*Ensure that this pointer will always be aligned to sizeof pointer */
        char trans_specific[0] __aligned(sizeof(void *));