qcacld-3.0: Enable 802.11p channel configuration from ini

Currently 802.11p channels are by default enabled.
To make it configurable, use ini value gDot11PMode.

Change-Id: I70417f79d179649df9597c02ec51fe46ef953b91
CRs-Fixed: 2098677
This commit is contained in:
Ashish Kumar Dhanotiya 2017-08-24 20:13:08 +05:30 • committed by snandini
commit cc2e0d3e7e
2 changed files with 48 additions and 10 deletions

View file

@ -6352,6 +6352,9 @@ void hdd_cfg_print(hdd_context_t *pHddCtx)
hdd_debug("Name = [%s] value = [%u]",
CFG_RANDOMIZE_NDI_MAC_NAME,
pHddCtx->config->is_ndi_mac_randomized);
hdd_debug("Name = [%s] value = [%u]",
CFG_DOT11P_MODE_NAME,
pHddCtx->config->dot11p_mode);
}

View file

@ -248,6 +248,9 @@ static const struct ieee80211_channel hdd_channels_5_ghz[] = {
HDD5GHZCHAN(5785, 157, 0),
HDD5GHZCHAN(5805, 161, 0),
HDD5GHZCHAN(5825, 165, 0),
};
static const struct ieee80211_channel hdd_channels_dot11p[] = {
HDD5GHZCHAN(5852, 170, 0),
HDD5GHZCHAN(5855, 171, 0),
HDD5GHZCHAN(5860, 172, 0),
@ -12049,6 +12052,7 @@ int wlan_hdd_cfg80211_init(struct device *dev,
{
int i, j;
hdd_context_t *pHddCtx = wiphy_priv(wiphy);
int len = 0;
ENTER();
@ -12180,18 +12184,41 @@ int wlan_hdd_cfg80211_init(struct device *dev,
(eHDD_DOT11_MODE_11b_ONLY != pCfg->dot11Mode) &&
(eHDD_DOT11_MODE_11g_ONLY != pCfg->dot11Mode))) {
wiphy->bands[HDD_NL80211_BAND_5GHZ] = &wlan_hdd_band_5_ghz;
wiphy->bands[HDD_NL80211_BAND_5GHZ]->channels =
if (pCfg->dot11p_mode) {
wiphy->bands[HDD_NL80211_BAND_5GHZ]->channels =
qdf_mem_malloc(sizeof(hdd_channels_5_ghz) +
sizeof(hdd_channels_dot11p));
if (wiphy->bands[HDD_NL80211_BAND_5GHZ]->channels ==
NULL) {
goto mem_fail;
}
wiphy->bands[HDD_NL80211_BAND_5GHZ]->n_channels =
QDF_ARRAY_SIZE(hdd_channels_5_ghz) +
QDF_ARRAY_SIZE(hdd_channels_dot11p);
qdf_mem_copy(wiphy->bands[HDD_NL80211_BAND_5GHZ]->
channels, &hdd_channels_5_ghz[0],
sizeof(hdd_channels_5_ghz));
len = sizeof(hdd_channels_5_ghz);
qdf_mem_copy((char *)wiphy->
bands[HDD_NL80211_BAND_5GHZ]->channels
+ len,
&hdd_channels_dot11p[0],
sizeof(hdd_channels_dot11p));
} else {
wiphy->bands[HDD_NL80211_BAND_5GHZ]->channels =
qdf_mem_malloc(sizeof(hdd_channels_5_ghz));
if (wiphy->bands[HDD_NL80211_BAND_5GHZ]->channels == NULL) {
hdd_err("Not enough memory to allocate channels");
qdf_mem_free(wiphy->
bands[HDD_NL80211_BAND_2GHZ]->channels);
wiphy->bands[HDD_NL80211_BAND_2GHZ]->channels = NULL;
return -ENOMEM;
if (wiphy->bands[HDD_NL80211_BAND_5GHZ]->channels ==
NULL) {
goto mem_fail;
}
qdf_mem_copy(wiphy->
bands[HDD_NL80211_BAND_5GHZ]->channels,
&hdd_channels_5_ghz[0],
sizeof(hdd_channels_5_ghz));
}
qdf_mem_copy(wiphy->bands[HDD_NL80211_BAND_5GHZ]->channels,
&hdd_channels_5_ghz[0],
sizeof(hdd_channels_5_ghz));
}
for (i = 0; i < HDD_NUM_NL80211_BANDS; i++) {
@ -12266,6 +12293,14 @@ int wlan_hdd_cfg80211_init(struct device *dev,
EXIT();
return 0;
mem_fail:
hdd_err("Not enough memory to allocate channels");
if (wiphy->bands[HDD_NL80211_BAND_2GHZ]->channels != NULL) {
qdf_mem_free(wiphy->bands[HDD_NL80211_BAND_2GHZ]->channels);
wiphy->bands[HDD_NL80211_BAND_2GHZ]->channels = NULL;
}
return -ENOMEM;
}
/**