linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
To: linux-wireless@vger.kernel.org
Cc: Arik Nemtsov <arik@wizery.com>,
	Arik Nemtsov <arikx.nemtsov@intel.com>,
	Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Subject: [PATCH 04/49] iwlwifi: mvm: init country code on init/recovery
Date: Thu, 12 Mar 2015 15:03:49 +0200	[thread overview]
Message-ID: <1426165474-25586-4-git-send-email-emmanuel.grumbach@intel.com> (raw)
In-Reply-To: <1426164431.19690.4.camel@egrumbacBox>

From: Arik Nemtsov <arik@wizery.com>

During init queue a regulatory update to retrieve the default
regulatory settings from FW. If we're during recovery, only replay the
current country code to FW, if it exists.

Signed-off-by: Arik Nemtsov <arikx.nemtsov@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
---
 drivers/net/wireless/iwlwifi/mvm/fw.c  |  4 ++++
 drivers/net/wireless/iwlwifi/mvm/mvm.h |  1 +
 drivers/net/wireless/iwlwifi/mvm/nvm.c | 37 ++++++++++++++++++++++++++++++++++
 3 files changed, 42 insertions(+)

diff --git a/drivers/net/wireless/iwlwifi/mvm/fw.c b/drivers/net/wireless/iwlwifi/mvm/fw.c
index a81da4c..c03bde0 100644
--- a/drivers/net/wireless/iwlwifi/mvm/fw.c
+++ b/drivers/net/wireless/iwlwifi/mvm/fw.c
@@ -739,6 +739,10 @@ int iwl_mvm_up(struct iwl_mvm *mvm)
 	if (ret)
 		goto error;
 
+	ret = iwl_mvm_init_mcc(mvm);
+	if (ret)
+		goto error;
+
 	if (mvm->fw->ucode_capa.capa[0] & IWL_UCODE_TLV_CAPA_UMAC_SCAN) {
 		ret = iwl_mvm_config_scan(mvm);
 		if (ret)
diff --git a/drivers/net/wireless/iwlwifi/mvm/mvm.h b/drivers/net/wireless/iwlwifi/mvm/mvm.h
index a0aa3b1..b31f43c 100644
--- a/drivers/net/wireless/iwlwifi/mvm/mvm.h
+++ b/drivers/net/wireless/iwlwifi/mvm/mvm.h
@@ -1397,6 +1397,7 @@ int iwl_mvm_get_temp(struct iwl_mvm *mvm);
 /* Location Aware Regulatory */
 struct iwl_mcc_update_resp *
 iwl_mvm_update_mcc(struct iwl_mvm *mvm, const char *alpha2);
+int iwl_mvm_init_mcc(struct iwl_mvm *mvm);
 
 /* smart fifo */
 int iwl_mvm_sf_update(struct iwl_mvm *mvm, struct ieee80211_vif *vif,
diff --git a/drivers/net/wireless/iwlwifi/mvm/nvm.c b/drivers/net/wireless/iwlwifi/mvm/nvm.c
index 96107b8..26c5d94 100644
--- a/drivers/net/wireless/iwlwifi/mvm/nvm.c
+++ b/drivers/net/wireless/iwlwifi/mvm/nvm.c
@@ -63,6 +63,7 @@
  *
  *****************************************************************************/
 #include <linux/firmware.h>
+#include <linux/rtnetlink.h>
 #include "iwl-trans.h"
 #include "iwl-csr.h"
 #include "mvm.h"
@@ -654,3 +655,39 @@ exit:
 		return ERR_PTR(ret);
 	return resp_cp;
 }
+
+int iwl_mvm_init_mcc(struct iwl_mvm *mvm)
+{
+	if (!iwl_mvm_is_lar_supported(mvm))
+		return 0;
+
+	/*
+	 * During HW restart, only replay the last set MCC to FW. Otherwise,
+	 * queue an update to cfg80211 to retrieve the default alpha2 from FW.
+	 */
+	if (test_bit(IWL_MVM_STATUS_IN_HW_RESTART, &mvm->status)) {
+		/* This should only be called during vif up and hold RTNL */
+		const struct ieee80211_regdomain *r =
+				rtnl_dereference(mvm->hw->wiphy->regd);
+
+		if (r) {
+			struct iwl_mcc_update_resp *resp;
+
+			resp = iwl_mvm_update_mcc(mvm, r->alpha2);
+			if (IS_ERR_OR_NULL(resp))
+				return -EIO;
+
+			kfree(resp);
+		}
+
+		return 0;
+	}
+
+	/*
+	 * Driver regulatory hint for initial update - use the special
+	 * unknown-country "99" code. This will also clear the "custom reg"
+	 * flag and allow regdomain changes. It will happen after init since
+	 * RTNL is required.
+	 */
+	return regulatory_hint(mvm->hw->wiphy, "99");
+}
-- 
1.9.1


  parent reply	other threads:[~2015-03-12 13:04 UTC|newest]

Thread overview: 52+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-03-12 12:47 pull request: iwlwifi-next 2013-03-12 Grumbach, Emmanuel
2015-03-12 13:03 ` [PATCH 01/49] iwlwifi: mvm: fix compilation with IWLWIFI_DEBUGFS not set Emmanuel Grumbach
2015-03-12 13:03 ` [PATCH 02/49] iwlwifi: fix max_ht_ampdu_exponent for older devices Emmanuel Grumbach
2015-03-12 13:03 ` [PATCH 03/49] iwlwifi: mvm: add MCC update FW API Emmanuel Grumbach
2015-03-12 13:03 ` Emmanuel Grumbach [this message]
2015-03-12 13:03 ` [PATCH 05/49] iwlwifi: create regdomain from mcc_update_cmd response Emmanuel Grumbach
2015-03-12 13:03 ` [PATCH 06/49] iwlwifi: mvm: consider LAR support during NVM parse Emmanuel Grumbach
2015-03-12 13:03 ` [PATCH 07/49] iwlwifi: ignore IBSS flag as regulatory NO-IR indication Emmanuel Grumbach
2015-03-12 13:03 ` [PATCH 08/49] iwlwifi: don't declare support for 5ghz if not supported Emmanuel Grumbach
2015-03-12 13:03 ` [PATCH 09/49] iwlwifi: mvm: LAR: Add chub mcc change notify command Emmanuel Grumbach
2015-03-12 13:03 ` [PATCH 10/49] iwlwifi: nvm: init correct nvm channel list for 8000 devices Emmanuel Grumbach
2015-03-12 13:03 ` [PATCH 11/49] iwlwifi: change last 5ghz channel to 165 & add support for 8000 family Emmanuel Grumbach
2015-03-12 13:03 ` [PATCH 12/49] iwlwifi: use IWL_DEFAULT_MAX_TX_POWER for max_eirp Emmanuel Grumbach
2015-03-12 13:03 ` [PATCH 13/49] iwlwifi: iwlmvm: LAR: disable LAR support due to NVM vs TLV conflict Emmanuel Grumbach
2015-03-12 13:03 ` [PATCH 14/49] iwlwifi: disable 11ac if 11n is disabled Emmanuel Grumbach
2015-03-12 13:04 ` [PATCH 15/49] iwlwifi: mvm: support new PHY_SKU nvm section for family 8000 B0 Emmanuel Grumbach
2015-03-12 13:04 ` [PATCH 16/49] iwlwifi: allow disabling LAR via module param Emmanuel Grumbach
2015-03-12 13:04 ` [PATCH 17/49] iwlwifi: mvm: take the MAC address from HW registers Emmanuel Grumbach
2015-03-12 13:04 ` [PATCH 18/49] iwlwifi: mvm: support LAR updates from BIOS Emmanuel Grumbach
2015-03-12 13:04 ` [PATCH 19/49] iwlwifi: mvm: set LAR MCC on D3/D0 transitions Emmanuel Grumbach
2015-03-12 13:04 ` [PATCH 20/49] iwlwifi: bump API to 13 for devices that use iwlmvm Emmanuel Grumbach
2015-05-06  9:14   ` Santiago Gala
2015-03-12 13:04 ` [PATCH 21/49] iwlwifi: mvm: remove IWL_UCODE_TLV_API_DISABLE_STA_TX Emmanuel Grumbach
2015-03-12 13:04 ` [PATCH 22/49] iwlwifi: mvm: remove IWL_UCODE_TLV_API_SF_NO_DUMMY_NOTIF Emmanuel Grumbach
2015-03-12 13:04 ` [PATCH 23/49] iwlwifi: mvm: BT Coex - disable RRC by default Emmanuel Grumbach
2015-03-12 13:04 ` [PATCH 24/49] iwlwifi: mvm: always update the quota after association Emmanuel Grumbach
2015-03-12 13:04 ` [PATCH 25/49] iwlwifi: mvm: support family 8000 B2/C steps Emmanuel Grumbach
2015-03-12 13:04 ` [PATCH 26/49] iwlwifi: pcie: speed up the Tx DMA stop flow Emmanuel Grumbach
2015-03-12 13:04 ` [PATCH 27/49] iwlwifi: pcie: include more registers in the prph dump Emmanuel Grumbach
2015-03-12 13:04 ` [PATCH 28/49] iwlwifi: fix smatch warning: warn: inconsistent indenting Emmanuel Grumbach
2015-03-12 13:04 ` [PATCH 29/49] iwlwifi: use correct NVM offset for LAR enable for new NVMs Emmanuel Grumbach
2015-03-12 13:04 ` [PATCH 30/49] iwlwifi: mvm: remove unneeded include iwl-fw-error-dump.h Emmanuel Grumbach
2015-03-12 13:04 ` [PATCH 31/49] iwlwifi: mvm: fix identation Emmanuel Grumbach
2015-03-12 13:04 ` [PATCH 32/49] iwlwifi: mvm: reflect TDLS pm state in mvmvif->pm_enabled Emmanuel Grumbach
2015-03-12 13:04 ` [PATCH 33/49] iwlwifi: don't allow the FW to return invalid ch indices Emmanuel Grumbach
2015-03-12 13:04 ` [PATCH 34/49] iwlwifi: mvm: rs: improve ss_params debug print Emmanuel Grumbach
2015-03-12 13:04 ` [PATCH 35/49] iwlwifi: add new 8260 series PCI IDs Emmanuel Grumbach
2015-03-12 13:04 ` [PATCH 36/49] iwlwifi: trans: Take ownership on secure machine before FW load Emmanuel Grumbach
2015-03-12 13:04 ` [PATCH 37/49] iwlwifi: mvm: remove warning on station exhaustion Emmanuel Grumbach
2015-03-12 13:04 ` [PATCH 38/49] iwlwifi: mvm: don't init MCC during CT-kill Emmanuel Grumbach
2015-03-12 13:04 ` [PATCH 39/49] iwlwifi: mvm: rs: update Tx statistics when using fixed rate Emmanuel Grumbach
2015-03-12 13:04 ` [PATCH 40/49] iwlwifi: pcie: allow the op_mode to freeze the stuck queue timer Emmanuel Grumbach
2015-03-12 13:04 ` [PATCH 41/49] iwlwifi: mvm: freeze the non-shared queues when a station goes to sleep Emmanuel Grumbach
2015-03-12 13:04 ` [PATCH 42/49] iwlwifi: mvm: fix force NMI for 8000 Emmanuel Grumbach
2015-03-12 13:04 ` [PATCH 43/49] iwlwifi: mvm: BT Coex - update the new API Emmanuel Grumbach
2015-03-12 13:04 ` [PATCH 44/49] iwlwifi: add more new 8260 series PCI IDs Emmanuel Grumbach
2015-03-12 13:04 ` [PATCH 45/49] iwlwifi: update copyright to include 2015 Emmanuel Grumbach
2015-03-12 13:04 ` [PATCH 46/49] iwlwifi: mvm: Always enable the smart FIFO Emmanuel Grumbach
2015-03-12 13:04 ` [PATCH 47/49] iwlwifi: mvm: clarify time event end handling Emmanuel Grumbach
2015-03-12 13:04 ` [PATCH 48/49] iwlwifi: mvm: don't double unlock the mutex in __iwl_mvm_resume() Emmanuel Grumbach
2015-03-12 13:04 ` [PATCH 49/49] iwlwifi: mvm: simplify iwl_mvm_get_wakeup_status() return Emmanuel Grumbach
2015-03-13 13:10 ` pull request: iwlwifi-next 2013-03-12 Kalle Valo

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1426165474-25586-4-git-send-email-emmanuel.grumbach@intel.com \
    --to=emmanuel.grumbach@intel.com \
    --cc=arik@wizery.com \
    --cc=arikx.nemtsov@intel.com \
    --cc=linux-wireless@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).