View | Details | Raw Unified | Return to bug 86231 | Differences between
and this patch

Collapse All | Expand All

(-)a/drivers/net/wireless/iwlwifi/mvm/fw.c (-1 / +4 lines)
Lines 282-288 int iwl_run_init_mvm_ucode(struct iwl_mvm *mvm, bool read_nvm) Link Here
282
282
283
	lockdep_assert_held(&mvm->mutex);
283
	lockdep_assert_held(&mvm->mutex);
284
284
285
	if (WARN_ON_ONCE(mvm->init_ucode_complete))
285
	if (WARN_ON_ONCE(mvm->init_ucode_complete || mvm->calibrating))
286
		return 0;
286
		return 0;
287
287
288
	iwl_init_notification_wait(&mvm->notif_wait,
288
	iwl_init_notification_wait(&mvm->notif_wait,
Lines 332-337 int iwl_run_init_mvm_ucode(struct iwl_mvm *mvm, bool read_nvm) Link Here
332
		goto out;
332
		goto out;
333
	}
333
	}
334
334
335
	mvm->calibrating = true;
336
335
	/* Send TX valid antennas before triggering calibrations */
337
	/* Send TX valid antennas before triggering calibrations */
336
	ret = iwl_send_tx_ant_cfg(mvm, mvm->fw->valid_tx_ant);
338
	ret = iwl_send_tx_ant_cfg(mvm, mvm->fw->valid_tx_ant);
337
	if (ret)
339
	if (ret)
Lines 361-366 int iwl_run_init_mvm_ucode(struct iwl_mvm *mvm, bool read_nvm) Link Here
361
error:
363
error:
362
	iwl_remove_notification(&mvm->notif_wait, &calib_wait);
364
	iwl_remove_notification(&mvm->notif_wait, &calib_wait);
363
out:
365
out:
366
	mvm->calibrating = false;
364
	if (iwlmvm_mod_params.init_dbg && !mvm->nvm_data) {
367
	if (iwlmvm_mod_params.init_dbg && !mvm->nvm_data) {
365
		/* we want to debug INIT and we have no NVM - fake */
368
		/* we want to debug INIT and we have no NVM - fake */
366
		mvm->nvm_data = kzalloc(sizeof(struct iwl_nvm_data) +
369
		mvm->nvm_data = kzalloc(sizeof(struct iwl_nvm_data) +
(-)a/drivers/net/wireless/iwlwifi/mvm/mvm.h (+1 lines)
Lines 541-546 struct iwl_mvm { Link Here
541
	enum iwl_ucode_type cur_ucode;
541
	enum iwl_ucode_type cur_ucode;
542
	bool ucode_loaded;
542
	bool ucode_loaded;
543
	bool init_ucode_complete;
543
	bool init_ucode_complete;
544
	bool calibrating;
544
	u32 error_event_table;
545
	u32 error_event_table;
545
	u32 log_event_table;
546
	u32 log_event_table;
546
	u32 umac_error_event_table;
547
	u32 umac_error_event_table;
(-)a/drivers/net/wireless/iwlwifi/mvm/ops.c (-1 / +5 lines)
Lines 744-749 void iwl_mvm_set_hw_ctkill_state(struct iwl_mvm *mvm, bool state) Link Here
744
static bool iwl_mvm_set_hw_rfkill_state(struct iwl_op_mode *op_mode, bool state)
744
static bool iwl_mvm_set_hw_rfkill_state(struct iwl_op_mode *op_mode, bool state)
745
{
745
{
746
	struct iwl_mvm *mvm = IWL_OP_MODE_GET_MVM(op_mode);
746
	struct iwl_mvm *mvm = IWL_OP_MODE_GET_MVM(op_mode);
747
	bool calibrating = mvm->calibrating;
747
748
748
	if (state)
749
	if (state)
749
		set_bit(IWL_MVM_STATUS_HW_RFKILL, &mvm->status);
750
		set_bit(IWL_MVM_STATUS_HW_RFKILL, &mvm->status);
Lines 752-758 static bool iwl_mvm_set_hw_rfkill_state(struct iwl_op_mode *op_mode, bool state) Link Here
752
753
753
	wiphy_rfkill_set_hw_state(mvm->hw->wiphy, iwl_mvm_is_radio_killed(mvm));
754
	wiphy_rfkill_set_hw_state(mvm->hw->wiphy, iwl_mvm_is_radio_killed(mvm));
754
755
755
	return state && mvm->cur_ucode != IWL_UCODE_INIT;
756
	if (mvm->calibrating)
757
		iwl_abort_notification_waits(&mvm->notif_wait);
758
759
	return state && (mvm->cur_ucode != IWL_UCODE_INIT || calibrating);
756
}
760
}
757
761
758
static void iwl_mvm_free_skb(struct iwl_op_mode *op_mode, struct sk_buff *skb)
762
static void iwl_mvm_free_skb(struct iwl_op_mode *op_mode, struct sk_buff *skb)
(-)a/drivers/net/wireless/iwlwifi/pcie/trans.c (-2 / +1 lines)
Lines 911-917 static void iwl_trans_pcie_stop_device(struct iwl_trans *trans) Link Here
911
	 * restart. So don't process again if the device is
911
	 * restart. So don't process again if the device is
912
	 * already dead.
912
	 * already dead.
913
	 */
913
	 */
914
	if (test_bit(STATUS_DEVICE_ENABLED, &trans->status)) {
914
	if (test_and_clear_bit(STATUS_DEVICE_ENABLED, &trans->status)) {
915
		iwl_pcie_tx_stop(trans);
915
		iwl_pcie_tx_stop(trans);
916
		iwl_pcie_rx_stop(trans);
916
		iwl_pcie_rx_stop(trans);
917
917
Lines 941-947 static void iwl_trans_pcie_stop_device(struct iwl_trans *trans) Link Here
941
	/* clear all status bits */
941
	/* clear all status bits */
942
	clear_bit(STATUS_SYNC_HCMD_ACTIVE, &trans->status);
942
	clear_bit(STATUS_SYNC_HCMD_ACTIVE, &trans->status);
943
	clear_bit(STATUS_INT_ENABLED, &trans->status);
943
	clear_bit(STATUS_INT_ENABLED, &trans->status);
944
	clear_bit(STATUS_DEVICE_ENABLED, &trans->status);
945
	clear_bit(STATUS_TPOWER_PMI, &trans->status);
944
	clear_bit(STATUS_TPOWER_PMI, &trans->status);
946
	clear_bit(STATUS_RFKILL, &trans->status);
945
	clear_bit(STATUS_RFKILL, &trans->status);
947
946

Return to bug 86231