Commit 65d48e59 authored by Avinash Patil's avatar Avinash Patil Committed by Kalle Valo

mwifiex: update domain_info upon band change in start_ap

It was observed that AP beacons would not reflect correct regulatory
information upon starting AP in A band. This was because of missing
AP config band update in set_channel of start_ap. Also we configure 11D
settings info FW only for specific band. So we need to download domain
info to FW even if domain remains unchanged but band is changed.
Signed-off-by: default avatarAvinash Patil <patila@marvell.com>
Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
parent b0497597
...@@ -442,7 +442,7 @@ mwifiex_cfg80211_add_key(struct wiphy *wiphy, struct net_device *netdev, ...@@ -442,7 +442,7 @@ mwifiex_cfg80211_add_key(struct wiphy *wiphy, struct net_device *netdev,
* - Country codes * - Country codes
* - Sub bands (first channel, number of channels, maximum Tx power) * - Sub bands (first channel, number of channels, maximum Tx power)
*/ */
static int mwifiex_send_domain_info_cmd_fw(struct wiphy *wiphy) int mwifiex_send_domain_info_cmd_fw(struct wiphy *wiphy)
{ {
u8 no_of_triplet = 0; u8 no_of_triplet = 0;
struct ieee80211_country_ie_triplet *t; struct ieee80211_country_ie_triplet *t;
......
...@@ -1550,6 +1550,8 @@ void *mwifiex_alloc_dma_align_buf(int rx_len, gfp_t flags); ...@@ -1550,6 +1550,8 @@ void *mwifiex_alloc_dma_align_buf(int rx_len, gfp_t flags);
void mwifiex_queue_main_work(struct mwifiex_adapter *adapter); void mwifiex_queue_main_work(struct mwifiex_adapter *adapter);
void mwifiex_coex_ampdu_rxwinsize(struct mwifiex_adapter *adapter); void mwifiex_coex_ampdu_rxwinsize(struct mwifiex_adapter *adapter);
void mwifiex_11n_delba(struct mwifiex_private *priv, int tid); void mwifiex_11n_delba(struct mwifiex_private *priv, int tid);
int mwifiex_send_domain_info_cmd_fw(struct wiphy *wiphy);
#ifdef CONFIG_DEBUG_FS #ifdef CONFIG_DEBUG_FS
void mwifiex_debugfs_init(void); void mwifiex_debugfs_init(void);
void mwifiex_debugfs_remove(void); void mwifiex_debugfs_remove(void);
......
...@@ -808,7 +808,7 @@ void mwifiex_uap_set_channel(struct mwifiex_private *priv, ...@@ -808,7 +808,7 @@ void mwifiex_uap_set_channel(struct mwifiex_private *priv,
struct mwifiex_uap_bss_param *bss_cfg, struct mwifiex_uap_bss_param *bss_cfg,
struct cfg80211_chan_def chandef) struct cfg80211_chan_def chandef)
{ {
u8 config_bands = 0; u8 config_bands = 0, old_bands = priv->adapter->config_bands;
priv->bss_chandef = chandef; priv->bss_chandef = chandef;
...@@ -834,6 +834,11 @@ void mwifiex_uap_set_channel(struct mwifiex_private *priv, ...@@ -834,6 +834,11 @@ void mwifiex_uap_set_channel(struct mwifiex_private *priv,
} }
priv->adapter->config_bands = config_bands; priv->adapter->config_bands = config_bands;
if (old_bands != config_bands) {
mwifiex_send_domain_info_cmd_fw(priv->adapter->wiphy);
mwifiex_dnld_txpwr_table(priv);
}
} }
int mwifiex_config_start_uap(struct mwifiex_private *priv, int mwifiex_config_start_uap(struct mwifiex_private *priv,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment