aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/ath/ath10k/mac.c
diff options
context:
space:
mode:
authorMarek Puzyniak <marek.puzyniak@tieto.com>2014-03-21 11:46:57 -0400
committerKalle Valo <kvalo@qca.qualcomm.com>2014-03-24 04:25:46 -0400
commit821af6ae26bcd024d73a1aa7f47e45c0a3814dc1 (patch)
tree2459b8a8a96426d639a1316ae214fb8be0890e42 /drivers/net/wireless/ath/ath10k/mac.c
parent8c65699274a695df941407ccb91c633819039193 (diff)
ath10k: update regulatory domain settings for 10.x firmware
Regulatory domain settings for firmware 10.x has more options than main firmware, so handle regulatory domain setup separately for both supported firmwares. Fill in additional dfs domain parameter according to current regulatory. This patch does not solve any known bug. Not handled parameter for firmware 10.x was found during code review. Signed-off-by: Marek Puzyniak <marek.puzyniak@tieto.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
Diffstat (limited to 'drivers/net/wireless/ath/ath10k/mac.c')
-rw-r--r--drivers/net/wireless/ath/ath10k/mac.c28
1 files changed, 27 insertions, 1 deletions
diff --git a/drivers/net/wireless/ath/ath10k/mac.c b/drivers/net/wireless/ath/ath10k/mac.c
index 9e24ae972ec9..5d3751d75419 100644
--- a/drivers/net/wireless/ath/ath10k/mac.c
+++ b/drivers/net/wireless/ath/ath10k/mac.c
@@ -1726,10 +1726,28 @@ static int ath10k_update_channel_list(struct ath10k *ar)
1726 return ret; 1726 return ret;
1727} 1727}
1728 1728
1729static enum wmi_dfs_region
1730ath10k_mac_get_dfs_region(enum nl80211_dfs_regions dfs_region)
1731{
1732 switch (dfs_region) {
1733 case NL80211_DFS_UNSET:
1734 return WMI_UNINIT_DFS_DOMAIN;
1735 case NL80211_DFS_FCC:
1736 return WMI_FCC_DFS_DOMAIN;
1737 case NL80211_DFS_ETSI:
1738 return WMI_ETSI_DFS_DOMAIN;
1739 case NL80211_DFS_JP:
1740 return WMI_MKK4_DFS_DOMAIN;
1741 }
1742 return WMI_UNINIT_DFS_DOMAIN;
1743}
1744
1729static void ath10k_regd_update(struct ath10k *ar) 1745static void ath10k_regd_update(struct ath10k *ar)
1730{ 1746{
1731 struct reg_dmn_pair_mapping *regpair; 1747 struct reg_dmn_pair_mapping *regpair;
1732 int ret; 1748 int ret;
1749 enum wmi_dfs_region wmi_dfs_reg;
1750 enum nl80211_dfs_regions nl_dfs_reg;
1733 1751
1734 lockdep_assert_held(&ar->conf_mutex); 1752 lockdep_assert_held(&ar->conf_mutex);
1735 1753
@@ -1739,6 +1757,13 @@ static void ath10k_regd_update(struct ath10k *ar)
1739 1757
1740 regpair = ar->ath_common.regulatory.regpair; 1758 regpair = ar->ath_common.regulatory.regpair;
1741 1759
1760 if (config_enabled(CONFIG_ATH10K_DFS_CERTIFIED) && ar->dfs_detector) {
1761 nl_dfs_reg = ar->dfs_detector->region;
1762 wmi_dfs_reg = ath10k_mac_get_dfs_region(nl_dfs_reg);
1763 } else {
1764 wmi_dfs_reg = WMI_UNINIT_DFS_DOMAIN;
1765 }
1766
1742 /* Target allows setting up per-band regdomain but ath_common provides 1767 /* Target allows setting up per-band regdomain but ath_common provides
1743 * a combined one only */ 1768 * a combined one only */
1744 ret = ath10k_wmi_pdev_set_regdomain(ar, 1769 ret = ath10k_wmi_pdev_set_regdomain(ar,
@@ -1746,7 +1771,8 @@ static void ath10k_regd_update(struct ath10k *ar)
1746 regpair->reg_domain, /* 2ghz */ 1771 regpair->reg_domain, /* 2ghz */
1747 regpair->reg_domain, /* 5ghz */ 1772 regpair->reg_domain, /* 5ghz */
1748 regpair->reg_2ghz_ctl, 1773 regpair->reg_2ghz_ctl,
1749 regpair->reg_5ghz_ctl); 1774 regpair->reg_5ghz_ctl,
1775 wmi_dfs_reg);
1750 if (ret) 1776 if (ret)
1751 ath10k_warn("could not set pdev regdomain (%d)\n", ret); 1777 ath10k_warn("could not set pdev regdomain (%d)\n", ret);
1752} 1778}