qcacld-3.0: Reset the global reg params during wiphy unregisteration
qcacld-2.0 to qcacld-3.0 propagation After boot when driver is loaded for the first time, driver call the regulatory_hint with default country. From kernel 3.18 onward regulatory_hint removes the REGULATORY_CUSTOM_REG flag from wiphy flags. But once reg notifier is called for the country the wiphy flags are restored from the original flags stored in driver. Now if driver is unloaded and loaded again, kernel calls the reg notifier for the last country set by driver before unload. In static drivers the global static flag init_by_driver will remain true even after unload and load and thus init_by_reg_core is not set to true when kernel calls the reg notifier. Thus driver ends up sending reg hint to kernel with same country, this reg hint removes the REGULATORY_CUSTOM_REG flag from wiphy flags and is dropped in the kernel as country has not changed. As reg notifier is not called for the reg hint and wiphy flags are not restored. To avoid changing of wiphy flags, reset the global static reg params during wiphy unregisteration. Change-Id: I01b29a2314ab4192e6bc9076978d54762a85c9e8 CRs-Fixed: 1003390
Этот коммит содержится в:

коммит произвёл
Gerrit - the friendly Code Review server

родитель
f512bf3377
Коммит
3e6172f91e
@@ -34,6 +34,8 @@
|
||||
* HDD Regulatory prototype implementation
|
||||
*/
|
||||
|
||||
void hdd_reset_global_reg_params(void);
|
||||
|
||||
int hdd_regulatory_init(hdd_context_t *hdd_ctx, struct wiphy *wiphy);
|
||||
|
||||
void hdd_program_country_code(hdd_context_t *hdd_ctx);
|
||||
|
@@ -86,6 +86,8 @@
|
||||
#include "wlan_hdd_tsf.h"
|
||||
|
||||
#include "wlan_hdd_subnet_detect.h"
|
||||
#include <wlan_hdd_regulatory.h>
|
||||
|
||||
|
||||
#define g_mode_rates_size (12)
|
||||
#define a_mode_rates_size (8)
|
||||
@@ -6138,7 +6140,8 @@ int wlan_hdd_cfg80211_init(struct device *dev,
|
||||
* @ wiphy: the wiphy to validate against
|
||||
*
|
||||
* this function deinit cfg80211 and cleanup the
|
||||
* memory allocated in wlan_hdd_cfg80211_init
|
||||
* memory allocated in wlan_hdd_cfg80211_init also
|
||||
* reset the global reg params.
|
||||
*
|
||||
* Return: void
|
||||
*/
|
||||
@@ -6153,6 +6156,7 @@ void wlan_hdd_cfg80211_deinit(struct wiphy *wiphy)
|
||||
wiphy->bands[i]->channels = NULL;
|
||||
}
|
||||
}
|
||||
hdd_reset_global_reg_params();
|
||||
}
|
||||
|
||||
/*
|
||||
|
@@ -202,6 +202,20 @@ static void hdd_update_regulatory_info(hdd_context_t *hdd_ctx)
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* hdd_reset_global_reg_params - Reset global static reg params
|
||||
*
|
||||
* This function is helpful in static driver to reset
|
||||
* the global params.
|
||||
*
|
||||
* Return: void
|
||||
*/
|
||||
void hdd_reset_global_reg_params(void)
|
||||
{
|
||||
init_by_driver = false;
|
||||
init_by_reg_core = false;
|
||||
}
|
||||
|
||||
/**
|
||||
* hdd_regulatory_wiphy_init() - regulatory wiphy init
|
||||
* @hdd_ctx: hdd context
|
||||
|
Ссылка в новой задаче
Block a user